一個簡單的英文字形轉音素的 Python 模塊
g2p 是一個簡單的英文字形轉音素的 Python 模塊。
該功能在語音合成中是必不可少的。不像德語和西班牙語這類語言,英文的發音很難從拼寫中推斷出來,所以人們要知道某個單詞的發音,最好的方式是查閱字典。但是,這種方法至少有兩個問題。 首先,你不能消除同形異義詞的發音,即有多個發音的單詞(例如下面的 a),其次,您無法檢查單詞是否在字典中(例如下面的 b)。
a. I refuse to collect the refuse around here. (r?|fju:z as verb vs. |refju:s as noun)
b. I am an activationist. (activationist: newly coined word which means n. A person who designs and implements programs of treatment or therapy that use recreation and activities to help people whose functional abilities are affected by illness or disability.
對於第一種字形的問題,許多同形異義詞可以用詞性來區分。但是,如果涉及字典中的字詞,我們應該使用知識與技能做出最佳猜測。 在這個項目中,我們採用了基於 TensorFlow 的深度學習 seq2seq 框架。
Github 鏈接:
https://github.com/Kyubyong/g2p
演算法
拼出阿拉伯數字和一些貨幣符號。(例如 $200 -> two hundred dollars)(這是從 Keith Ito 的代碼中借用的,https://github.com/keithito/tacotron/blob/master/text/numbers.py)
嘗試根據他們的 POS 檢索同形異義詞的正確發音
查找 CMU 發音字典的非同形異義詞
http://www.speech.cs.cmu.edu/cgi-bin/cmudict
對於 OOV,我們使用神經網路模型預測他們的發音
環境
python 2.x or 3.x
依賴
numpy >= 1.13.1
tensorflow >= 1.3.0
nltk >= 3.2.4
python -m nltk.downloader "averaged_perceptron_tagger" "cmudict"
inflect >= 0.3.1
Distance >= 0.1.3
future >= 0.16.0
安裝
pipinstallg2p_en
或者
pythonsetup.pyinstall
nltk 軟體包將在第一次運行時自動下載。
訓練
pythontrain.py
用法
fromg2p_enimportg2p
text ="I refuse to collect the refuse around here."
print(g2p(text))
>>>[u"AY1"," ",u"R",u"IH0",u"F",u"Y",u"UW1",u"Z"," ",u"T",u"UW1"," ",u"K",u"AH0",u"L",u"EH1",u"K",u"T"," ",u"DH",u"AH0"," ",u"R",u"EH1",u"F",u"Y",u"UW2",u"Z"," ",u"ER0",u"AW1",u"N",u"D"," ",u"HH",u"EH1",u"R"]
text ="I am an activationist."
print(g2p(text))
>>>[u"AY1",u"M"," ",u"AE1",u"N"," ",u"AE2",u"K",u"T",u"AH0",u"V",u"EY1",u"SH",u"AH0",u"N",u"IH0",u"S",u"T"]
如果需要轉換大量文本,則可以使用全局 tf 會話。
importg2p_enasg2p
withg2p.Session():
phs = [g2p.g2p(text)fortextintexts]
從Python入門-如何成為AI工程師
BAT資深演算法工程師獨家研發課程
最貼近生活與工作的好玩實操項目
班級管理助學搭配專業的助教答疑
學以致用拿offer,學完即推薦就業
新人福利
關注 AI 研習社(okweiwu),回復1領取
【超過 1000G 神經網路 / AI / 大數據資料】
從 Encoder 到 Decoder 實現 Seq2Seq 模型


※加速 AI 2.0,ARC 推理挑戰賽等你來戰!
※基於深度學習的目標檢測演算法綜述
TAG:AI研習社 |