【sphinx】Sphinx在linux上的安装配置

【来源: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做测试。可以测试。

posted @ 2015-08-18 19:05  luoyinqq  阅读(2167)  评论(0编辑  收藏  举报