Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
prophesier
GitHub Repository: prophesier/diff-svc
Path: blob/main/network/vocoders/base_vocoder.py
695 views
1
import importlib
2
VOCODERS = {}
3
4
5
def register_vocoder(cls):
6
VOCODERS[cls.__name__.lower()] = cls
7
VOCODERS[cls.__name__] = cls
8
return cls
9
10
11
def get_vocoder_cls(hparams):
12
if hparams['vocoder'] in VOCODERS:
13
return VOCODERS[hparams['vocoder']]
14
else:
15
vocoder_cls = hparams['vocoder']
16
pkg = ".".join(vocoder_cls.split(".")[:-1])
17
cls_name = vocoder_cls.split(".")[-1]
18
vocoder_cls = getattr(importlib.import_module(pkg), cls_name)
19
return vocoder_cls
20
21
22
class BaseVocoder:
23
def spec2wav(self, mel):
24
"""
25
26
:param mel: [T, 80]
27
:return: wav: [T']
28
"""
29
30
raise NotImplementedError
31
32
@staticmethod
33
def wav2spec(wav_fn):
34
"""
35
36
:param wav_fn: str
37
:return: wav, mel: [T, 80]
38
"""
39
raise NotImplementedError
40
41