一个简单的python模块,用于从英文字母到音素的转换

g2p-en的Python项目详细描述


[更新]*我们从依赖项中删除了tensorflow。毕竟,它经常更改它的api,我们不希望您有gpu。相反,numpy用于推理。

本模块旨在将英语字母(拼写)转换为 音素(发音)。它在一些任务中被认为是必不可少的 例如语音合成。不像许多语言,像西班牙语或德语 从一个单词的拼写可以推断出它的发音,英语 言语往往与人们的期望相去甚远。因此,它将 如果我们想知道 一些单词的发音。不过,至少有两个 这种方法的问题。首先,你不能消除发音的歧义。 同音字中有多种发音的词。(见a 第二,你不能检查这个词是否在字典里。 (见下面的b

  • 我拒绝在这附近收垃圾。(r_ fju:z为动词,而refju:s为名词)
  • 我是一个激活师。(激活主义者:新造的词,意思是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.来自WORD SPY

对于第一个同形图问题,幸运的是许多同形图可以 使用他们的词性消除歧义,如果不是全部的话。当涉及到 然而,字典里没有的词,我们应该作出最好的猜测 利用我们的知识。在这个项目中,我们使用了一个深入学习的seq2seq 基于tensorflow的框架。

算法

  1. 拼出阿拉伯数字和一些货币符号。(例如200美元->; 两百美元)(这是从Keith Ito’s code借来的)
  2. 尝试检索基于同形词的正确发音 在他们的位置上)
  3. 查找The CMU Pronouncing Dictionary查找 非同形图。
  4. 对于oov,我们使用神经网络模型预测它们的发音。

环境

  • python 3.x

依赖关系

  • numpy=1.13.1
  • nltk>;=3.2.4
  • python-m nltk.downloader“Averaged_Perceptron_Tagger”“cmudict”
  • 拐点>;=0.3.1
  • 距离>;=0.1.3

安装

pip install g2p_en

python setup.py install

NLTK包将在第一次运行时自动下载。

培训(请注意,已包括预培训模型)

python train.py

用法

from g2p_en import G2p

texts = ["I have $250 in my pocket.", # number -> spell-out
         "popular pets, e.g. cats and dogs", # e.g. -> for example
         "I refuse to collect the refuse around here.", # homograph
         "I'm an activationist."] # newly coined word
g2p = G2p()
for text in texts:
    out = g2p(text)
    print(out)
>>> ['AY1', ' ', 'HH', 'AE1', 'V', ' ', 'T', 'UW1', ' ', 'HH', 'AH1', 'N', 'D', 'R', 'AH0', 'D', ' ', 'F', 'IH1', 'F', 'T', 'IY0', ' ', 'D', 'AA1', 'L', 'ER0', 'Z', ' ', 'IH0', 'N', ' ', 'M', 'AY1', ' ', 'P', 'AA1', 'K', 'AH0', 'T', ' ', '.']
>>> ['P', 'AA1', 'P', 'Y', 'AH0', 'L', 'ER0', ' ', 'P', 'EH1', 'T', 'S', ' ', ',', ' ', 'F', 'AO1', 'R', ' ', 'IH0', 'G', 'Z', 'AE1', 'M', 'P', 'AH0', 'L', ' ', 'K', 'AE1', 'T', 'S', ' ', 'AH0', 'N', 'D', ' ', 'D', 'AA1', 'G', 'Z']
>>> ['AY1', ' ', 'R', 'IH0', 'F', 'Y', 'UW1', 'Z', ' ', 'T', 'UW1', ' ', 'K', 'AH0', 'L', 'EH1', 'K', 'T', ' ', 'DH', 'AH0', ' ', 'R', 'EH1', 'F', 'Y', 'UW2', 'Z', ' ', 'ER0', 'AW1', 'N', 'D', ' ', 'HH', 'IY1', 'R', ' ', '.']
>>> ['AY1', ' ', 'AH0', 'M', ' ', 'AE1', 'N', ' ', 'AE2', 'K', 'T', 'IH0', 'V', 'EY1', 'SH', 'AH0', 'N', 'IH0', 'S', 'T', ' ', '.']

2018年5月。

京永公园Jongseok Kim

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ByteArrayOutputStream的java解码属性   java S3 SDK在上载时更新单个对象,而不是创建新文件   java hibernate:无法从eclipse连接到DB   java如何在强制转换JComboBox之前检查其类型?   http从Java中的GETPOST请求方法捕获URI、资源名称,如开发人员工具中所示   java在Spring@Bean方法中返回接口的局限性   Java中的Web服务和客户端(使用Eclipse Apache Axis 2自底向上服务)某些代码会引发异常   java spring安全+rest不起作用   java将LinkedList添加到包含LinkedList的LinkedList并更改添加的LinkedList   java是否临时删除对象的属性?   java使用AnimatedGifEncoder类创建的gif图像的部分帧是不透明的   java如何高效地处理maven3时间戳快照?   java向集合对象添加另一项   java如何将动态参数传递给jquery函数   java使用libGdx桌面端口作为Android GLES20的仿真器