voice-changer/server/voice_changer/DiffusionSVC/inferencer/InferencerManager.py

39 lines
1.3 KiB
Python
Raw Normal View History

2023-07-13 21:33:04 +03:00
from const import DiffusionSVCInferenceType
from voice_changer.DiffusionSVC.inferencer.DiffusionSVCInferencer import DiffusionSVCInferencer
from voice_changer.RVC.inferencer.Inferencer import Inferencer
2023-07-19 04:20:30 +03:00
from voice_changer.utils.VoiceChangerParams import VoiceChangerParams
import os
2023-07-13 21:33:04 +03:00
class InferencerManager:
currentInferencer: Inferencer | None = None
2023-07-19 04:20:30 +03:00
params: VoiceChangerParams
@classmethod
def initialize(cls, params: VoiceChangerParams):
cls.params = params
2023-07-13 21:33:04 +03:00
@classmethod
def getInferencer(
cls,
inferencerType: DiffusionSVCInferenceType,
file: str,
gpu: int,
) -> Inferencer:
cls.currentInferencer = cls.loadInferencer(inferencerType, file, gpu)
return cls.currentInferencer
@classmethod
def loadInferencer(
cls,
inferencerType: DiffusionSVCInferenceType,
file: str,
gpu: int,
) -> Inferencer:
if inferencerType == "combo":
2023-07-19 04:20:30 +03:00
vocoder_onnx_path = os.path.join(os.path.dirname(cls.params.nsf_hifigan), "nsf_hifigan.onnx")
return DiffusionSVCInferencer(cls.params.nsf_hifigan, vocoder_onnx_path).loadModel(file, gpu)
2023-07-13 21:33:04 +03:00
else:
raise RuntimeError("[Voice Changer] Inferencer not found", inferencerType)