File size: 3,060 Bytes
6395666
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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