import traceback from i18n.i18n import I18nAuto from datetime import datetime import torch from .hash import model_hash_ckpt, hash_id, hash_similarity i18n = I18nAuto() def show_model_info(cpt, show_long_id=False): try: h = model_hash_ckpt(cpt) id = hash_id(h) idread = cpt.get("id", "None") hread = cpt.get("hash", "None") if id != idread: id += ( "(" + i18n("Actually calculated") + "), " + idread + "(" + i18n("Read from model") + ")" ) sim = hash_similarity(h, hread) if not isinstance(sim, str): sim = "%.2f%%" % (sim * 100) if not show_long_id: h = i18n("Hidden") if h != hread: h = i18n("Similarity") + " " + sim + " -> " + h elif h != hread: h = ( i18n("Similarity") + " " + sim + " -> " + h + "(" + i18n("Actually calculated") + "), " + hread + "(" + i18n("Read from model") + ")" ) txt = f"""{i18n("Model name")}: %s {i18n("Sealing date")}: %s {i18n("Model Author")}: %s {i18n("Information")}: %s {i18n("Sampling rate")}: %s {i18n("Pitch guidance (f0)")}: %s {i18n("Version")}: %s {i18n("ID(short)")}: %s {i18n("ID(long)")}: %s""" % ( cpt.get("name", i18n("Unknown")), datetime.fromtimestamp(float(cpt.get("timestamp", 0))), cpt.get("author", i18n("Unknown")), cpt.get("info", i18n("None")), cpt.get("sr", i18n("Unknown")), i18n("Exist") if cpt.get("f0", 0) == 1 else i18n("Not exist"), cpt.get("version", i18n("None")), id, h, ) except: txt = traceback.format_exc() return txt def show_info(path): try: if hasattr(path, "name"): path = path.name a = torch.load(path, map_location="cpu") txt = show_model_info(a, show_long_id=True) del a except: txt = traceback.format_exc() return txt