【来源:http://blog.csdn.net/zouxy09/article/details/7942784】
一 sphinx安装包的下载
CMUSphinx语音识别工具包下载
Pocketsphinx —用C语言编写的轻量级识别库,主要是进行识别的。
Sphinxbase — Pocketsphinx所需要的支持库,主要完成的是语音信号的特征提取;
Sphinx3 —为语音识别研究用C语言编写的解码器
Sphinx4 —为语音识别研究用JAVA语言编写的解码器
CMUclmtk —语言模型训练工具
Sphinxtrain —声学模型训练工具
下载网址:http://sourceforge.net/projects/cmusphinx/files/
我们只需要下载以下四个最新版本的工具包即可:
sphinxbase-0.7、pocketsphinx-0.7、sphinxtrain-1.0.7、cmuclmtk-0.7;
Step1:安装Sphinxbase
#tar -xzf sphinxbase-0.7.tar.gz
#cd sphinxbase-0.7
#./configure
#make
# make install
Step2:安装pocketsphinx
得先把Sphinxbase的库的路径进环境变量中。通过:
export LD_LIBRARY_PATH=/usr/local/lib //这个一般系统都已经加进去了
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig //这个PKG_CONFIG_PATH主要指明Sphinxbase的.pc文件的所在路径,这样 pkg-config工具就可以根据.pc文件的内容动态生成编译和连接选项,比如 cflags(编译用的头文件)和 libs (连接用的库),至于说pkg-config的具体细节?百度下就知道了,了解这个工具非常有用。
另外,环境变量的设置只对当前的终端窗口有效,新建一个新的终端或者重启系统之后,需要重新设置 PKG_CONFIG_PATH。所以我们可以通过编辑系统的链接文件/etc/ld.so.conf去使其长期有效,如下:
#vi /etc/ld.so.conf
打开后,在新的一行添加(每一个路径一行):
/usr/local/lib
/usr/local/lib/pkgconfig
然后,执行:
#ldconfig
使其生效(ldconfig将 /etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,系统是通过读取这个库列表文件来加快搜索链接路径的速度的)。
然后开始编译安装:
#tar -xzf pocketsphinx-0.7.tar.gz
#cd pocketsphinx-0.7
#./configure
#make
#sudo make install
默认安装在/usr/local/bin下。
测试下安装结果:
#pocketsphinx_continuous
若出现如下信息,说明安装成功。
INFO: cmd_ln.c(512): Parsing command line:
pocketsphinx_continuous
Current configuration:
[NAME] [DEFLT] [VALUE]
-adcdev
………………………………….
…………………………………
………………………………….
Warning: Could not find Mic element
INFO: continuous.c(261): pocketsphinx_continuous COMPILED ON: Feb 21 2011, AT: 22:31:47
READY....
Step3:安装语言模型训练工具CMUCLMTK
顺便把语言模型训练工具也安装上,因为后面需要用到(当然,如果你采用的是现成的模型的话,那就不需要安装这个工具),安装过程其实都是一样的。
#tar -xzf cmuclmtk-0.7.tar.gz
#cd pocketsphinx-0.7
#./configure
#make
#sudo make install
默认安装在/usr/local/bin下面,可以看到下面这些生成文件
idngram2lm idngram2stats mergeidngram text2idngram
text2wfreq text2wngram wfreq2vocab
Step4:安装声学模型训练工具sphinxtrain
顺便把声学模型训练工具也安装上,因为后面需要用到(当然,如果你采用的是现成的模型的话,那就不需要安装这个工具),安装过程其实都是一样的。
#tar -xzf sphinxtrain-1.0.7.tar.gz
#cd pocketsphinx-0.7
#./configure
#make
这里没有make install的安装过程,因为sphinxtrain只是包含了用来训练声学模型的Perl和Python脚本,还有一些工具命令。
所以我们还需要下载Perl和Python工具来使用这些脚本:
Step5:安装perl和python
安装perl: wget http://www.cpan.org/src/perl-5.10.0.tar.gz
安装python:wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
二 使用pocketsphinx做语音识别
运行 pocketsphinx进行语音识别需要指定三个文件:声学模型、语言模型和字典文件。
CMU sphinx的官网提供了各种语言的声学模型和语言模型的下载,具体见:
http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
其中也有中文的,在Mandarin两个目录下面,下载他们。得到如下三个文件
声学模型:zh_broadcastnews_16k_ptm256_8000.tar.bz2
语言模型:zh_broadcastnews_64000_utf8.DMP
字典文件:zh_broadcastnews_utf8.dic
先把以上三个文件放在同一个目录下,再把声学模型解压:
#tar -xjf zh_broadcastnews_16k_ptm256_8000.tar.bz2
解压后会在当前文件夹生成一个包含以下八个文件的文件夹。
zh_broadcastnews_ptm256_8000/
├── feat.params //HMM模型的特征参数
├── mdef //模型定义文件(为每个即将进行训练的HMM的每一状态定义一个独特的数字标识)
├── means //混合高斯模型的均值
├── mixture_weights //混合权重
├── noisedict //噪声也就是非语音字典
├── sendump //用来从声学模型中获取mixture_weights文件的??
├── transition_matrices //HMM模型的状态转移矩阵
└── variances //混合高斯模型的方差
然后我们执行:
#pocketsphinx_continuous -hmm zh_broadcastnews_ptm256_8000/ -lm zh_broadcastnews_64000_utf8.DMP -dict zh_broadcastnews_utf8.dic
-hmm选项指定声学模型文件夹 –lm选项指定语言模型 –dict选项指定字典文件;
pocketsphinx会分析你传入的文件取得模型和识别的参数,然后显示出来,再有很多信息,等到显示:
Warning: Could not find Mic element
READY....
到这里你就可以对她喊话让它识别了。对着麦克风讲话结束后在屏幕上以文字形式显示识别结果。在麦克风输入时,两者的最长语音时间为5秒,前者是通过说话人的正常语句停顿作为断句的分割点,并将停顿之前的语音信号作为一个处理段。
以上,是原博中走一遍的流程。事情当然不会这么顺利。马上出现问题如下:
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:3513:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:3985:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2184:(snd_pcm_open_noupdate) Unknown PCM default
Error opening audio device default for capture: No such file or directory
FATAL_ERROR: "continuous.c", line 242: Failed top open audio device
明天再查问题
【问题解决结果】
因为公司用的服务器是虚拟机,不存在话筒,录音等功能,即便是安装缺少的录音设备,也无法再linux上做识别。
解决方案是“:服务器上训练模型,拉到本机上用windows版本的pocketsphinx做测试。可以测试。