-
Notifications
You must be signed in to change notification settings - Fork 61
/
Copy pathRuleBasedModels.py
40 lines (30 loc) · 1.15 KB
/
RuleBasedModels.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import ModelInterfaces
import torch
import numpy as np
import epitran
import eng_to_ipa
def get_phonem_converter(language: str):
if language == 'de':
phonem_converter = EpitranPhonemConverter(
epitran.Epitran('deu-Latn'))
elif language == 'en':
phonem_converter = EngPhonemConverter()
else:
raise ValueError('Language not implemented')
return phonem_converter
class EpitranPhonemConverter(ModelInterfaces.ITextToPhonemModel):
word_locations_in_samples = None
audio_transcript = None
def __init__(self, epitran_model) -> None:
super().__init__()
self.epitran_model = epitran_model
def convertToPhonem(self, sentence: str) -> str:
phonem_representation = self.epitran_model.transliterate(sentence)
return phonem_representation
class EngPhonemConverter(ModelInterfaces.ITextToPhonemModel):
def __init__(self,) -> None:
super().__init__()
def convertToPhonem(self, sentence: str) -> str:
phonem_representation = eng_to_ipa.convert(sentence)
phonem_representation = phonem_representation.replace('*','')
return phonem_representation