PocketSphinx 是一个计算量和体积都很小的嵌入式语音识别引擎。在 Sphinx-2 的基础上针对嵌入式系统的需求修改、优化而来,是第一个开源面向嵌入式的中等词汇量连续语音识别项目。识别精度和 Sphinx-2 差不多。

       Sphinx-3CMU高水平的大词汇量语音识别系统,采用连续隐含马尔可夫模型CHMM建模。支持多种模式操作,高精度模式扁平译码器,由Sphinx3的最初版本优化而来;快速搜索模式树译码器。目前将这两种译码器融合在一起使用。

       Sphinx-4是由JAVA语言编写的大词汇量语音识别系统,采用连续的隐含马尔可夫模型建模,和以前的版本相比,它在模块化、灵活性和算法方面做了改进,采用新的搜索策略,支持各种不同的语法和语言模型、听觉模型和特征流,创新的算法允许多种信息源合并成一种更符合实际语义的优雅的知识规则。由于完全采用JAVA语言开发,具有高度的可移植性,允许多线程技术和高度灵活的多线程接口。

 以上介绍为转载,下文部分内容也为转载。

一、平台

Ubuntu12.04

还需要安装的包:

# sudo apt-get install libasound2-dev bison


二、 CMUSphinx语音识别工具包下载

Pocketsphinx—用C语言编写的轻量级识别库,主要是进行识别的。

Sphinxbase Pocketsphinx所需要的支持库,主要完成的是语音信号的特征提取;

Sphinx3—为语音识别研究用C语言编写的解码器

Sphinx4—为语音识别研究用JAVA语言编写的解码器

CMUclmtk—语言模型训练工具

Sphinxtrain—声学模型训练工具

下载网址:http://sourceforge.net/projects/cmusphinx/files/

我们只需要下载以下四个工具包即可:

sphinxbase-0.7pocketsphinx-0.7sphinxtrain-1.0.7cmuclmtk-0.7


三、安装工具包

在/usr/local/下创建sphinx文件夹,并将上面的下载好的四个工具包拷贝过来:

例,拷贝“下载”文件夹下的sphinxbase-0.7.jar到/usr/local/CMUsphinx/ 文件夹下:

# sudo cp -a /home/主机名/下载/sphinxbase-0.7.jar   /usr/local/CMUsphinx/

其他三个包的拷贝,跟上面命令一样,改下名称即可。


由于pocketsphinx依赖于另外一个库Sphinxbase。所以先需要安装Sphinxbase

1)安装Sphinxbase

# cd /usr/local/CMUsphinx                  //跳转到/usr/local/CMUsphinx 目录下

# sudo chmod 777 /usr/local/CMUsphinx      //赋予CMUsphinx文件夹读写权限

# tar -xzf sphinxbase-0.7.tar.gz

然后在文件管理器里在CMUsphinx目录下 重命名 sphinxbase-0.7 文件夹为sphinxbase(若上部没执行chmod,则无权限重命名)

# cd sphinxbase

# ./configure

# make

# sudo make install

注意:./configure将会检查你的系统是否具有其编译所需要的所有包,如果没有的话,它会提示缺少什么包,例如缺少“bison”,那么我们需要对它进行安装:

# sudo apt-get install bison

安装完缺少的包后,继续执行./configure,以后遇到类似情况同样处理。

     包默认安装在/usr/local/bin下面,ls可查看。可以在配置时用–prefix指定自定义的安装路径,但最好使用默认的安装路径,否则的话得自己添加这些库的路径进环境变量中。


2)安装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的具体细节?百度下就知道了,了解这个工具非常有用。

通过:

# sudo gedit ~/.bashrc

打开后,在新的一行添加(每一个路径一行):

export LD_LIBRARY_PATH=/usr/local/lib

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

然后保存退出,执行:

# source ~/.bashrc

进行测试,上述添加环境变量是否成功

# $LD_LIBRARY_PATH               //执行这句命令,将会在终端显示“/usr/local/lib 是一个目录

然后开始编译安装:

# tar -xzf pocketsphinx-0.7.tar.gz

在文件管理器上,重命名pocketsphinx-0.7文件夹为pocketsphinx

# cd pocketsphinx

# ./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....

则成功安装pocketsphinx


3)安装语言模型训练工具CMUCLMTK

# tar -xzf cmuclmtk-0.7.tar.gz

重命名cmuclmtk-0.7文件夹为cmuclmtk

# cd cmuclmtk

# ./configure

# make

# sudo make install

默认安装在/usr/local/bin下面,可以看到下面这些生成文件

idngram2lm   idngram2stats      mergeidngram     text2idngram

text2wfreq    text2wngram       wfreq2vocab


4)安装声学模型训练工具sphinxtrain

# tar -xzf sphinxtrain-1.0.7.tar.gz

重命名sphinxtrain-1.0.7文件夹为sphinxtrain

# cd sphinxtrain

# ./configure

# make

这里没有make install的安装过程,因为sphinxtrain只是包含了用来训练声学模型的PerlPython脚本,还有一些工具命令。

ubuntu已自带perl与python,运行如下命令,看是否安装有perl和python

# perl  -v            //如果已成功安装,终端显示This is perl 5, version 14, subversion 2 (v5.14.2)....................

# python            //如果已成功安装,终端将显示python版本号,GCC版本号。Ctrl+d 退出pytohn。

如果未装有perl或python,执行下面命令进行安装:

# sudo apt-get install perl

# sudo apt-get install python


四、获得语言模型和声学模型

      语言模型和声学模型的来源有以下三个方面:我们这里主要讲中文的。

源代码自带的:

pocketsphinx/model/hmm/zh/tdt_sc_8k目录下是中文的声学模型

pocketsphinx/model/lm/zh_CN目录下是中文的语言模型

这些模型已经被安装(拷贝)到了 /usr/local/share/pocketsphinx/model目录下:

hmm表示隐马尔可夫声学模型,lm表示language model语言模型)

.

├── hmm

│├── en

││└── tidigits

││├── feat.params

││├── mdef

││├── means

││├── sendump

││├── transition_matrices

││└── variances

│├── en_US

││└── hub4wsj_sc_8k

││├── feat.params

││├── mdef

││├── means

││├── noisedict

││├── sendump

││├── transition_matrices

││└── variances

│└── zh

│└── tdt_sc_8k

│├── feat.params

│├── mdef

│├── means

│├── noisedict

│├── sendump

│├── transition_matrices

│└── variances

└── lm

├── en

│├── tidigits.dic

│├── tidigits.DMP

│├── tidigits.fsg

│├── turtle.dic

│└── turtle.DMP

├── en_US

│├── cmu07a.dic

│├── hub4.5000.DMP

│└── wsj0vp.5000.DMP

├── zh_CN

│├── gigatdt.5000.DMP

│└── mandarin_notone.dic

└── zh_TW

├── gigatdt.5000.DMP

└── mandarin_notone.dic


五、使用语言模型和声学模型

       运行 pocketsphinx进行语音识别需要指定三个文件:声学模型、语言模型和字典文件。我们以源代码自带(pocketsphinx/model下)的三个文件为例子说明如何使用他们进行语音识别。

声学模型:pocketsphinx/model/hmm/zh/tdt_sc_8k

语言模型:pocketsphinx/model/lm/zh_CN/gigatdt.5000.DMP

字典文件:pocketsphinx/model/lm/zh_CN/mandarin_notone.dic

pocketsphinx/model/hmm/zh/tdt_sc_8k/  包含了

├── feat.params   //HMM模型的特征参数

├── mdef   //模型定义文件(为每个即将进行训练的HMM的每一状态定义一个独特的数字标识)

├── means  //混合高斯模型的均值

├── mixture_weights   //混合权重(不一定有)

├── noisedict    //噪声也就是非语音字典

├── sendump  //用来从声学模型中获取mixture_weights文件的??

├── transition_matrices  //HMM模型的状态转移矩阵

└── variances  //混合高斯模型的方差

然后我们执行:

# cd /usr/local/CMUsphinx/pocketsphinx/model

# pocketsphinx_continuous -hmm hmm/zh/tdt_sc_8k/ -lmlm/zh_CN/gigatdt.5000.DMP

  -dict lm/zh_CN/mandarin_notone.dic

-hmm选项指定声学模型文件夹 –lm选项指定语言模型 –dict选项指定字典文件;

pocketsphinx会分析你传入的文件取得模型和识别的参数,然后显示出来,再有很多信息,等到显示:

Warning: Could not find Mic element

READY....

     到这里你就可以对她喊话让它识别了。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐