Vietnamese_VITS_TTS / viphoneme /get_english_sym.py
fhieni's picture
Upload 9 files
6395666
raw
history blame
3.06 kB
import prosodic as p
def getSymEnglish():
PHO=[]
with open("english.txt", encoding="utf-8") as f:
content=f.read().splitlines()
for line in content:
x= p.Text(line)
x.parse()
PAR = x.bestParses()[0]
PHO.extend(x.phonemes())
print(PHO)
PHO=set(PHO)
return PHO
ENG_SYM=["ʧ", "f", "θ", "k", "uː", "h", "b", "v", "ɔ", "t", "ɛ", "p", "ŋ", "ð", "iː", "ʌ", "j", "ʒ", "w", "ʊ", "n", "s", "ɛː", "g", "l", "d", "r", "æ", "ɑ", "ʤ", "ɪ", "ɔː", "m", "z", "ə", "a", "o", "e", "ʃ", "i"]
ExceptReplaceSym=['uː', 'iː', 'ɑ', 'ɛː', 'zi', 'kwi', 'ɔː']
symbols =['ɯəj', 'ɤ̆j', 'ʷiə', 'ɤ̆w', 'ɯəw', 'ʷet', 'iəw', 'uəj', 'ʷen', 'tʰw', 'ʷɤ̆', 'ʷiu', 'kwi', 'ŋ͡m', 'k͡p', 'cw', 'jw', 'uə', 'eə', 'bw', 'oj', 'ʷi', 'vw', 'ăw', 'ʈw', 'ʂw', 'aʊ', 'fw', 'ɛu', 'tʰ', 'tʃ', 'ɔɪ', 'xw', 'ʷɤ', 'ɤ̆', 'ŋw', 'ʊə', 'zi', 'ʷă', 'dw', 'eɪ', 'aɪ', 'ew', 'iə', 'ɣw', 'zw', 'ɯj', 'ʷɛ', 'ɯw', 'ɤj', 'ɔ:', 'əʊ', 'ʷa', 'mw', 'ɑ:', 'hw', 'ɔj', 'uj', 'lw', 'ɪə', 'ăj', 'u:', 'aw', 'ɛj', 'iw', 'aj', 'ɜ:', 'kw', 'nw', 't∫', 'ɲw', 'eo', 'sw', 'tw', 'ʐw', 'iɛ', 'ʷe', 'i:', 'ɯə', 'dʒ', 'ɲ', 'θ', 'ʌ', 'l', 'w', '1', 'ɪ', 'ɯ', 'd', '∫', 'p', 'ə', 'u', 'o', '3', 'ɣ', '!', 'ð', 'ʧ', '6', 'ʒ', 'ʐ', 'z', 'v', 'g', 'ă', '_', 'æ', 'ɤ', '2', 'ʤ', 'i', '.', 'ɒ', 'b', 'h', 'n', 'ʂ', 'ɔ', 'ɛ', 'k', 'm', '5', ' ', 'c', 'j', 'x', 'ʈ', ',', '4', 'ʊ', 's', 'ŋ', 'a', 'ʃ', '?', 'r', ':', 'η', 'f', ';', 'e', 't', "'"]
def normEng (eng,delemit):
x= p.Text(eng)
x.parse()
PAR = str(x.bestParses()[0]).split("|")
SYL = x.syllables()
if len(PAR) != len(SYL):
print("check dif len: ", eng)
result=""
for i,syl in enumerate(SYL):
syllable = str(syl).replace("'","").replace("ː","").replace("ɑ","a")
if PAR[i].lower().upper() == PAR[i]:
result+=syllable+"'5"+" "
else:
result+=syllable+"'1"+" "
result=result.rstrip(" ")
if delemit !="":
takemore=""
for r in result:
if r in symbols:
takemore+=delemit+r
result=takemore
return result
Sen="string Sentence Examples. Someone tried to string him The violin string is first drawn on one side A piece of string she found in the kitchen would suffice".split(" ")
sen=""
for w in Sen:
sen+=normEng(w,"/")
print(sen)
#Chạy qua các từ tiếng anh -> lọc ra các phoneme đặc thù tiếng anh => ExceptReplaceSym=['uː', 'iː', 'ɑ', 'ɛː', 'zi', 'kwi', 'ɔː']
#Chạy lọc các cau trong LDspeech -> chứa các từ riêng biệt: khoảng 500 câu
#Đưa đống hàm normEng vào tacotron đang train xem dọcđược không
#có nên thêm kí tự đánh dấu tiếng anh như Zalo nói
# Xử lí ngắt ngẫu nhiên của zalo * và ~ => tìm hiểu ý nghĩa 2 đấu đó => thay bằng phẩy
#Chạy lọc qua dict tiengs aanh với hàm normEng => check xem có kí tự mới nào không