mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-03-12 10:20:11 +03:00
bugfix: merged model folder
This commit is contained in:
parent
fa833b5b68
commit
6d419a5702
@ -137,11 +137,19 @@ class RVC:
|
|||||||
print("")
|
print("")
|
||||||
return modelPath, indexPath, featurePath
|
return modelPath, indexPath, featurePath
|
||||||
|
|
||||||
|
def moveToModelDir(self, file: str, dstDir: str):
|
||||||
|
dst = os.path.join(dstDir, os.path.basename(file))
|
||||||
|
if os.path.exists(dst):
|
||||||
|
os.remove(dst)
|
||||||
|
shutil.move(file, dst)
|
||||||
|
return dst
|
||||||
|
|
||||||
def loadModel(self, props: LoadModelParams):
|
def loadModel(self, props: LoadModelParams):
|
||||||
target_slot_idx = props.slot
|
target_slot_idx = props.slot
|
||||||
params = props.params
|
params = props.params
|
||||||
|
|
||||||
print("loadModel", params)
|
print("loadModel", params)
|
||||||
|
# サンプルが指定されたときはダウンロードしてメタデータをでっちあげる
|
||||||
if len(params["sampleId"]) > 0:
|
if len(params["sampleId"]) > 0:
|
||||||
sampleInfo = self.getSampleInfo(params["sampleId"])
|
sampleInfo = self.getSampleInfo(params["sampleId"])
|
||||||
if sampleInfo is None:
|
if sampleInfo is None:
|
||||||
@ -159,21 +167,22 @@ class RVC:
|
|||||||
params["sampleId"] = sampleInfo.id
|
params["sampleId"] = sampleInfo.id
|
||||||
params["termOfUseUrl"] = sampleInfo.termOfUseUrl
|
params["termOfUseUrl"] = sampleInfo.termOfUseUrl
|
||||||
|
|
||||||
|
# メタデータを見て、永続化モデルフォルダに移動させる
|
||||||
|
# その際に、メタデータのファイル格納場所も書き換える
|
||||||
slotDir = os.path.join(
|
slotDir = os.path.join(
|
||||||
self.params.model_dir, RVC_MODEL_DIRNAME, str(target_slot_idx)
|
self.params.model_dir, RVC_MODEL_DIRNAME, str(target_slot_idx)
|
||||||
)
|
)
|
||||||
files = [params["files"]["rvcModel"]]
|
|
||||||
if "rvcFeature" in params["files"]:
|
|
||||||
files.append(params["files"]["rvcFeature"])
|
|
||||||
if "rvcIndex" in params["files"]:
|
|
||||||
files.append(params["files"]["rvcIndex"])
|
|
||||||
|
|
||||||
os.makedirs(slotDir, exist_ok=True)
|
os.makedirs(slotDir, exist_ok=True)
|
||||||
for f in files:
|
|
||||||
dst = os.path.join(slotDir, os.path.basename(f))
|
modelDst = self.moveToModelDir(params["files"]["rvcModel"], slotDir)
|
||||||
if os.path.exists(dst):
|
params["files"]["rvcModel"] = modelDst
|
||||||
os.remove(dst)
|
if "rvcFeature" in params["files"]:
|
||||||
shutil.move(f, dst)
|
featureDst = self.moveToModelDir(params["files"]["rvcFeature"], slotDir)
|
||||||
|
params["files"]["rvcFeature"] = featureDst
|
||||||
|
if "rvcIndex" in params["files"]:
|
||||||
|
indexDst = self.moveToModelDir(params["files"]["rvcIndex"], slotDir)
|
||||||
|
params["files"]["rvcIndex"] = indexDst
|
||||||
|
|
||||||
json.dump(params, open(os.path.join(slotDir, "params.json"), "w"))
|
json.dump(params, open(os.path.join(slotDir, "params.json"), "w"))
|
||||||
self.loadSlots()
|
self.loadSlots()
|
||||||
|
|
||||||
@ -422,12 +431,15 @@ class RVC:
|
|||||||
else:
|
else:
|
||||||
targetSlot = req.slot
|
targetSlot = req.slot
|
||||||
|
|
||||||
|
# いったんは、アップロードフォルダに格納する。(歴史的経緯)
|
||||||
|
# 後続のloadmodelを呼び出すことで永続化モデルフォルダに移動させられる。
|
||||||
storeDir = os.path.join(UPLOAD_DIR, f"{targetSlot}")
|
storeDir = os.path.join(UPLOAD_DIR, f"{targetSlot}")
|
||||||
print("[Voice Changer] store merged model to:", storeDir)
|
print("[Voice Changer] store merged model to:", storeDir)
|
||||||
os.makedirs(storeDir, exist_ok=True)
|
os.makedirs(storeDir, exist_ok=True)
|
||||||
storeFile = os.path.join(storeDir, "merged.pth")
|
storeFile = os.path.join(storeDir, "merged.pth")
|
||||||
torch.save(merged, storeFile)
|
torch.save(merged, storeFile)
|
||||||
|
|
||||||
|
# loadmodelを呼び出して永続化モデルフォルダに移動させる。
|
||||||
params = {
|
params = {
|
||||||
"defaultTune": req.defaultTune,
|
"defaultTune": req.defaultTune,
|
||||||
"defaultIndexRatio": req.defaultIndexRatio,
|
"defaultIndexRatio": req.defaultIndexRatio,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user