g2p 是一个简单的英文字形转音素的 Python 模块。
该功能在语音合成中是必不可少的。不像德语和西班牙语这类语言,英文的发音很难从拼写中推断出来,所以人们要知道某个单词的发音,最好的方式是查阅字典。但是,这种方法至少有两个问题。 首先,你不能消除同形异义词的发音,即有多个发音的单词(例如下面的 a),其次,您无法检查单词是否在字典中(例如下面的 b)。
对于第一种字形的问题,许多同形异义词可以用词性来区分。但是,如果涉及字典中的字词,我们应该使用知识与技能做出最佳猜测。 在这个项目中,我们采用了基于 TensorFlow 的深度学习 seq2seq 框架。
Github 链接:
https://github.com/Kyubyong/g2p
python 2.x or 3.x
pip install g2p_en
或者
python setup.py install
nltk 软件包将在第一次运行时自动下载。
python train.py
from g2p_en import g2p
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 会话。
import g2p_en as g2p
with g2p.Session():
phs = [g2p.g2p(text) for text in texts]