基于seq2seq的字形到音素模块

g2p-seq2seq的Python项目详细描述


[![构建状态](https://travis-ci.org/cmusphinx/g2p-seq2seq.svg?branch=master)(https://travis ci.org/cmusphinx/g2p-seq2seq)


lstm
序列到序列模型已成功地应用于各种任务中,
包括机器翻译[1]和图形到音素[2]。

此实现基于python
[tensorflow](https://www.tensorflow.org/tutorials/seq2seq/),
它允许有效的训练在CPU和GPU上。

请参阅安装
[指南](https://www.tensorflow.org/install/)
了解tensorflow的安装详细信息。

您可以使用以下命令安装tensorflow:

`````
sudo pip install tensorflow gpu
````

运行:

```
sudo pip install tensor2tensor
```

g2p seq2seq包本身使用setuptools,所以您可以遵循标准的安装过程:

```
sudo python setup.py install
````

如果需要,可以使用"setup.py"选项)。您需要确保在"path"中包含此文件夹,以便可以从命令行运行此脚本。

网站](https://sourceforge.net/projects/cmusphinx/files/g2p%20models/g2p-seq2seq-cmudict.tar.gz/download)。
下载后解压缩模型。该模型在[CMU英语词典](http://github.com/cmusphenx/cmudict)上进行了培训

````
wget-o g2p-seq2seq-cmudict.tar.gz https://sourceforge.net/projects/cmusphenx/files/g2p%20models/g2p-seq2seq-cmudict.tar.gz/download
tar xf g2p-seq2seq-cmudict.tar.gz
```

检查工具工作方式的最简单方法是在交互模式下运行它并键入单词

````
$g2p-seq2seq--interactive--mode l_dir model_folder_path

>;hello

info:tensorflow:hh eh l ow

>;
```

要使用经过训练的模型生成英语单词列表的发音,请运行

````
g2p-seq2seq--解码单词列表--model\u dir model\u folder路径[--输出解码输出文件路径]
````

希望列出解码的前n个变体,设置返回光束标志并指定光束大小:

````
g2p-seq2seq--解码您的光束列表--model\u dir model\u folder\u path--返回光束--光束大小号返回光束[--输出解码输出文件路径]
````

训练过的模特,运行

```
g2p-seq2seq--evaluate your_test_dictionary--model_dir model_folder_path
```

test dictionary应该是标准格式的字典:
hello hh eh l ow
bye b ay

如果我们认为只有当解码后的光束与单词的基本真实发音不匹配时,单词解码才是错误的。

字典](http://github.com/cmusphenx/cmudict)

````
g2p-seq2seq--train-train-dictionary.dic--model-dir-model-folder-path
`````

您可以设置最大训练步骤:
`````
--max-steps--最大训练步骤数(默认值:0)。
未观察到任何改善
```

使用以下参数:
```
"--size"-每个模型层的大小(默认值:64)。
我们观察到256个单元的效果更好,但训练变得更慢

"--num_layers"-模型中的层数(默认值:2)。
例如,如果序列集不够大,您可以尝试1,
或3,以希望获得更好的结果(默认值:0.5)

"--attention撸dropout"-注意层中退出单元的比例(默认值:0.5)

"--num撸heads"-多注意机制中应用的头数(默认值:2)
````

数据集:
``
"-有效"-开发字典(默认:从train_dictionary.dic创建)
"-测试"-测试字典(默认:从train_dictionary.dic创建)
```

模型:
``
g2p-seq2seq--train-train-dictionary.dic--model-dir-model-folder-path可能很重要。因此,seq2seq模型应用屈曲技术来考虑这些问题。另一方面,将初始数据分割成太多的存储桶可能会使最终结果更糟。因为在这种情况下,每个特定的bucket中没有足够数量的示例。为了得到更好的结果,您可以调整以下三个参数来更改存储桶的数量和大小:
```
"--min_length_bucket"-最小存储桶的大小(默认值:5)
"--max_length"-发音中单词的最大可能长度或最大音素数(默认值:40)
"--length_bucket_step"-控制数据中长度存储桶数的乘数。桶的最大长度为从最小桶长到最大桶长,按桶步数(默认值:2.0)
````

在50个时期内,在CMU字典上训练模型:
```
--max掼epochs 50
```

%| WER([cmudict latest\*](https://github.com/cmusphinx/cmudict)),%
--------
基线WFST(phonetisaurus)24.4 33.89
变压器层数=2,大小=256 22.2 ~31
\*这些结果是为字典指出的,没有压力。

\利用Tensor2Sensor图书馆加速深度学习研究。"谷歌研究博客,2017年。

[2]Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Liion Jones、Aidan N.Gomez、Lucasz Kaiser和Illia Polosukhin。你所需要的就是全神贯注。"
arxiv预印本
arxiv:1706.037622017。

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

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像