其他

AI研习君 2018-05-24

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

  算法

  1. 拼出阿拉伯数字和一些货币符号。(例如 $200 -> two hundred dollars)(这是从 Keith Ito 的代码中借用的,https://github.com/keithito/tacotron/blob/master/text/numbers.py)

  2. 尝试根据他们的 POS 检索同形异义词的正确发音

  3. 查找 CMU 发音字典的非同形异义词

    http://www.speech.cs.cmu.edu/cgi-bin/cmudict

  4. 对于 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

  安装

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]

从Python入门-如何成为AI工程师

BAT资深算法工程师独家研发课程

最贴近生活与工作的好玩实操项目

班级管理助学搭配专业的助教答疑

学以致用拿offer,学完即推荐就业


新人福利


关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据资料】


从 Encoder 到 Decoder 实现 Seq2Seq 模型

▼▼▼

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存