接上篇,这里主要讲基于深度学习的语音识别框架。
(一)Kaldi
目前在Github上这个项目依旧非常活跃,可以在https://github.com/kaldi-asr/kaldi下载代码,以及在http://kaldi-asr.org/查看它的文档。
下载kaldi源码,编译,这一步应该没什么问题,过程如下:
$ git clone https://github.com/kaldi-asr/kaldi
$ cd kaldi/tools
$ sudo apt-get install automake autoconf libtool subversion
$ sudo apt-get install libatlas3-base
$ sudo ln -s -f bash /bin/sh
$ extras/check_dependencies.sh
$ make -j 16
$ cd ../src
$ ./configure
$ make depend
$ make -j 16
然后,下载音频数据进行训练和测试,上文有讲,主要中文音频数据集有如下几个:
1、gale_mandarin: 中文新闻广播数据集(LDC2013S08, LDC2013S08)
2、hkust: 中文电话数据集(LDC2005S15, LDC2005T32)
3、thchs30: 清华大学30小时的数据集
前两个暂时还没找到免费的路径,所以开始下载第三个,在http://www.openslr.org/18/下载。
1、下载数据
有3个文件压缩包:data_thchs30.tgz、resource.tgz、test-noise.tgz,下载后,解压。如下:
哦,路径是在“kaldi/egs/thchs30/s5”下面新建一个文件夹thchs30-openslr,然后放在里面。
2、运行
这些工作还是比较基础的,
修改kaldi/egs/thchs30/s5下面的cmd.sh脚本
export train_cmd=run.pl
export decode_cmd="run.pl --mem 4G"
export mkgraph_cmd="run.pl --mem 8G"
export cuda_cmd="run.pl --gpu 1"
修改kaldi/egs/thchs30/s5下面的run.sh脚本(这里/home/123/是你的kaldi目录)
#thchs=/nfs/public/materials/data/thchs30-openslr
thchs=/home/123/kaldi/egs/thchs30/s5/thchs30-openslr
在kaldi/egs/thchs30/s5下面执行run.sh脚本
./run.sh
3、结果(等吧)
(二)Tensorflow
git clone https://github.com/tensorflow/tensorflow.git
然后执行
python tensorflow/examples/speech_commands/train.py
就可以,等结果出来吧,我的结果如下:
INFO:tensorflow:Confusion Matrix:
[[258 0 0 0 0 0 0 0 0 0 0 0]
[ 3 196 7 1 6 2 3 10 14 3 3 10]
[ 3 2 245 5 1 1 3 0 0 0 0 1]
[ 0 8 2 233 4 3 1 0 0 0 2 17]
[ 3 4 0 0 236 0 2 0 0 6 6 3]
[ 0 4 3 15 0 233 0 0 0 0 3 6]
[ 1 5 11 1 0 0 225 4 0 0 0 0]
[ 1 7 0 0 2 1 3 242 0 0 0 0]
[ 4 5 0 0 2 0 0 0 241 4 0 1]
[ 0 2 0 0 19 0 1 3 3 226 1 1]
[ 2 2 0 0 8 1 1 1 0 2 229 0]
[ 7 5 0 20 1 7 1 5 3 1 0 210]]
INFO:tensorflow:Step 18000: Validation accuracy = 89.7% (N=3093)
INFO:tensorflow:Saving to "/tmp/speech_commands_train/conv.ckpt-18000"
INFO:tensorflow:set_size=3081
INFO:tensorflow:Confusion Matrix:
[[257 0 0 0 0 0 0 0 0 0 0 0]
[ 0 189 3 3 6 8 4 13 7 3 8 13]
[ 1 7 233 2 1 0 9 2 0 0 1 0]
[ 1 4 0 217 2 8 4 3 1 0 1 11]
[ 0 2 0 0 260 0 2 0 0 2 3 3]
[ 2 2 0 17 0 218 0 1 2 0 2 9]
[ 0 6 11 0 4 0 240 4 0 1 1 0]
[ 1 8 0 0 3 0 0 243 0 2 0 2]
[ 0 4 0 0 2 2 1 2 234 1 0 0]
[ 1 5 0 0 12 1 1 4 9 222 6 1]
[ 0 0 0 0 8 1 1 1 0 3 234 1]
[ 0 9 0 28 5 8 4 4 0 1 3 189]]
INFO:tensorflow:Final test accuracy = 88.8% (N=3081)
默认模型在/tmp/speech_commands_train下面:
tensorboard查看结果
tensorboard --logdir /tmp/retrain_logs
是不是也很简单,先这样,后续再写。
(三)附上一些名词解释
ASR(自动语音识别)
WER(文字差错率(Word Error Rate))
CMVN:倒谱均值和方差归一化
FFT:快速傅里叶变换
GMM:高斯混合模型
MFCC:梅尔倒谱系数
PCM:脉冲编码调制
PDF:概率分布函数
PLP:感知线性预测系数
SGMM:子空间高斯混合模型
UBM:通用背景模型
VTLN:特征级声道长度归一化