mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-01-23 13:35:12 +03:00
39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
import os
|
|
|
|
from data.ModelSlot import MMVCv15ModelSlot
|
|
from voice_changer.VoiceChangerParamsManager import VoiceChangerParamsManager
|
|
from voice_changer.utils.LoadModelParams import LoadModelParams
|
|
from voice_changer.utils.ModelSlotGenerator import ModelSlotGenerator
|
|
|
|
|
|
class MMVCv15ModelSlotGenerator(ModelSlotGenerator):
|
|
@classmethod
|
|
def loadModel(cls, props: LoadModelParams):
|
|
slotInfo: MMVCv15ModelSlot = MMVCv15ModelSlot()
|
|
for file in props.files:
|
|
if file.kind == "mmvcv15Model":
|
|
slotInfo.modelFile = file.name
|
|
elif file.kind == "mmvcv15Config":
|
|
slotInfo.configFile = file.name
|
|
elif file.kind == "mmvcv15Correspondence":
|
|
vcparams = VoiceChangerParamsManager.get_instance().params
|
|
filePath = os.path.join(vcparams.model_dir, str(props.slot), file.name)
|
|
with open(filePath, "r") as f:
|
|
slotInfo.speakers = {}
|
|
while True:
|
|
line = f.readline()
|
|
if not line:
|
|
break
|
|
vals = line.strip().split("|")
|
|
if len(vals) != 3:
|
|
break
|
|
id = vals[0]
|
|
f0 = vals[1]
|
|
name = vals[2]
|
|
slotInfo.speakers[id] = name
|
|
slotInfo.f0[id] = f0
|
|
|
|
slotInfo.isONNX = slotInfo.modelFile.endswith(".onnx")
|
|
slotInfo.name = os.path.splitext(os.path.basename(slotInfo.modelFile))[0]
|
|
return slotInfo
|