G2P(单词到音素)的深度学习训练测试

音素提取是语音识别中的一块重要内容。


G2P(Grapheme-to-Phoneme),英文意思是字素到音素,使用循环神经网络(recurrent neural network,RNN) 和LSTM( long short-termmemory units),来实现从英文单词到音素的转化。LSTM序列到序列模型(LSTM sequence-to-sequencemodel)已经被成功地应用到许多项目中,这些应用包括机器翻译,字素转因素等等。

 

Github上的G2P是基于Google开源深度学习系统TensorFlow实现的,所以在运行之前要先安装TensorFLow。

 

一、TensorFlow安装

      安装TensorFLow的方法有很多种,可以用Pip、Virtualenv、Anaconda、Docker以及从源代码安装。这里选择 Virtualenv,因为使用 Virtualenv可以将Tensorflow所需要的各种依赖安装到指定的文件夹中,而不改变系统中原有的各种库的版本。

      使用 Virtualenv安装分为一下几步:

      1、安装Pip 和 Virtualenv:

     $ sudo apt-get installpython-pip python-dev python-virtualenv

      2、设定Virtualenv工作的文件夹为~/tensorflow:

     $ virtualenv--system-site-packages ~/tensorflow

   3、激活工作环境,然后使用Pip将TensorFLow安装在~/tensorflow中:

           $source ~/tensorflow/bin/activate

           (tensorflow)$  #命令行变成了这样

       #使用Pip安装,这里安装只使用CPU的版本

     (tensorflow)$pip install –upgrade https://storage.Googleapis.com\

                                                    /tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-\                                          linux_x86_64.whl

 

此时出现了问题:

OSError:[Errno 2] 没有那个文件或目录:'/usr/local/lib/python2.7/dist-packages/setuptools-18.1-py2.7.egg'

解决方法,卸载已经有的setuptools:

 pip uninstall setuptools

再安装一下,成功:

(tensorflow)$pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl

安装TensorFlow之后,又出现问题:

importtensorflow 后,出现段错误segment fault

解决方法:

(1)卸载一些python库:

 sudo pip uninstall six wheel numpy scipysckit-image scikit-learn protobuf

(2)重新安装:

(tensorflow)$pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl

(3)成功:

>>>import tensorflow

>>>

二、下面是G2P的运行方式:

1、在github上下载G2P文件:

https://github.com/cmusphinx/g2p-seq2seq

 

在sourceforge上下载一个已经训练好的模型:

https://sourceforge.net/projects/cmusphinx/files/G2PModels/g2p-seq2seq-cmudict.tar.gz/download

 

2、运行G2P最简单的方式是使用命令行进行交互的方式:

       $: pythong2p.py --interactive --model ~/Work/g2p-seq2seq-cmudict

      其中~/Work/g2p-seq2seq-cmudict是上一步下载的已经训练好的模型文件所在路径。

测试:

G2P(单词到音素)的深度学习训练测试_第1张图片

4、训练G2P模型

训练G2P模型需要一个人工标注的字典:

字典可以从这里下载:https://sourceforge.net/projects/cmusphinx/files/G2P%20Models/phonetisaurus-cmudict-split.tar.gz

 

下载并解压后,里面有个名字为cmudict.dic.train的文件,这个就是我们需要的字典,里面有大概11万个单词,每一行放置一个单词及其对应的因素。具体如下图:

然后根据这个字典就可以训练模型了,用法如下:

  $:python g2p.py --train train_dictionary.dic --model model_folder_path

其中 train_dictionary.dic就是之前下载的字典,model_folder_path为训练好后的模型存储的位置。

      训练模型的语句中,还有一些参数可供选择:

      --max_steps:训练迭代的次数(默认情况下 maxsteps=0,此时模型会不停的迭代, 直到训练效果不能再好为止)。

   --size:神经网络的节点数目(默认情况下 size=64),在实验中发现,size=512  会拥有更好的结果,但是size=512时训练时间会变长。

   --num_layers:神经网络的层数(默认情况下num_layers=2),如果训练集很小 的话,可以设置num_layers=1, 当num_layers=3时会得到更好的结果

 

 

 

 python ~/Work/g2p-seq2seq-master/g2p_seq2seq/g2p.py--train cmudict.dic.train --test cmudict.dic.test  --num_layers 2 --size 512 --model~/Work/model1 --max_steps 0

 

同时还可以查看一个模型的识别准确率,用法如下:

    $:pythong2p.py --evaluate test_dictionary.dic --model model_folder_path

同其中test_dictionary.dic

 G2P(单词到音素)的深度学习训练测试_第2张图片


最后不得不说,在没有大规模语料的情况下,准确率还是相当的低。。


你可能感兴趣的:(语音识别)