Github 项目推荐 | 一个简单的英文字形转音素的 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

算法

  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]

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发 | 如何利用 TVM 优化深度学习GPU op?教你用几十行Python代码实现2-3倍提升

数天前,陈天奇团队宣布推出 TVM,在微博上表示,「我们今天发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机,cuda, op...

4018
来自专栏cloudskyme

使用R画地图数据

用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.s...

5067
来自专栏吉浦迅科技

DAY 60:阅读SIMD Video Instructions

我们正带领大家开始阅读英文的《CUDA C Programming Guide》,今天是第60天,我们正在讲解CUDA C语法,希望在接下来的40天里,您可以学...

801
来自专栏BestSDK

Pytorch 0.3.0 发布:新增张量函数,支持模型移植

根据官方文档的介绍,此次增加了多个函数和功能,多方面的性能均实现提升。 重大变更 0.3 版本中删掉了 Variable.reinforce() 等随机函数,因...

3648
来自专栏数据处理

Guess Number Higher or Lower II

1242
来自专栏PPV课数据科学社区

【译文】数据可视化的10个关键术语①

Format 交互方式 Interactive visualisations allow you to modify, manipulate and expl...

3424
来自专栏数据魔术师

运筹学教学|运输问题代码分享(C++代码及详细注释)

经过了长时间的学习……小编终于学会了运输问题(Transportation Problem),可以说是很骄傲了!然而……今天老板突然给了小编一个规模巨大的问题去...

4957
来自专栏机器学习和数学

[Tensorflow] TensorFlow之Hello World!(1)

哇!今天挺开心的,30天的时间,19篇文章,2459人阅读,5313人次阅读!今天开通的原创标识,恩!除了激动,就是非常感谢大家的支持!感谢大家的支持!大家的支...

3406
来自专栏韩东吉的Unity杂货铺

零基础入门 31:游戏中的变速效果

今天给大家带来一篇短小精悍的内容,那就是游戏中的变速效果,变速包括了快速和慢速,有的时候在游戏关卡结尾的时候通过慢速慢镜头来展示结束动作特效等,有不错的表现效果...

962
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现)。

      今天我们来花点时间再次谈谈一个模糊算法,一个超级简单但是又超级牛逼的算法,无论在效果上还是速度上都可以和Boxblur, stackblur或者是G...

37710

扫码关注云+社区