您的位置:首页 > 其它

ROS语音识别-----pocketsphinx安装和使用

2016-11-03 18:06 1006 查看
   目前对pocketsphinx能支持的最高ROS版本是jade,本文主要介绍pocketsphinx在ROS Kinetic版本上的安装和使用。

1 系统软件环境

Ubuntu16.04+ROS Kinetic

2 安装过程

2.1
安装ros-kinetic-audio-common

sudo apt-get install ros-kinetic-audio-common

2.2 安装libasound2

sudo apt-get install libasound2

2.3 安装libgstreamer0.10

sudo apt-get install gstreamer0.10-*

2.4 安装libsphinxbase1

sudo dpkg -i libsphinxbase1_0.8-6_amd64.deb

2.5 安装libpocketsphinx1

sudo dpkg -i libpocketsphinx1_0.8-5_amd64.deb

2.6 gstreamer0.10-pocketsphinx

从https://packages.debian.org/jessie/gstreamer0.10-pocketsphinx下载gstreamer0.10-pocketsphinx

sudo dpkg -i gstreamer0.10-pocketsphinx_0.8-5_amd64.deb

2.7 安装pocketsphinx

git clone https://github.com/mikeferguson/pocketsphinx
下载之后拷贝到ROS安装目录/opt/ros/kinetic/share/下,tree pocketsphinx输出如下信息:

tree pocketsphinx/

pocketsphinx/

├── CHANGELOG.rst

├── CMakeLists.txt

├── demo

│   ├── robocup.corpus

│   ├── robocup.dic

│   ├── robocup.launch

│   ├── robocup.lm

│   ├── robocup_r1.launch

│   ├── robocup_r2.launch

│   ├── turtlebot_voice_cmd.launch

│   ├── voice_cmd.corpus

│   ├── voice_cmd.dic

│   ├── voice_cmd.launch

│   └── voice_cmd.lm

├── nodes

│   ├── recognizer.py

│   └── voice_cmd_vel.py

├── package.xml

└── README.md

注意:由于ROS Kinetic不支持(sudo apt-get install ros-kinetic-pocketsphinx),所以才有以上2.4 ~ 2.7步骤。

3 测试pocketsphinx

3.1 首先检查系统耳机和麦克风设备设置是否正常(我使用的USB外置声卡)





3.2 启动pocketsphinx测试

目前不知道是否是是由于pocketsphinx与ROS Kinetic兼容性导致,如果直接运行pocketsphinx启动脚本命令“roslaunch pocketsphinx robocup.launch”会出现如下错误,



为此,首先我对recognizer.py做了如下修改:

1)注释掉self.asr.set_property('configured', True)

2)添加lm,dict,hmm支持英语和普通话识别

  self.asr.set_property('lm', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/lm/en/tidigits.DMP')

  self.asr.set_property('dict', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/lm/en/tidigits.dic')

  self.asr.set_property('hmm', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/hmm/en/tidigits')

  #self.asr.set_property('lm', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/lm/zh_TW/gigatdt.5000.DMP')

  #self.asr.set_property('dict', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/lm/zh_TW/mandarin_notone.dic')

   #self.asr.set_property('hmm', '/home/siriansu/Downloads/model/usr/share/pocketsphinx/model/hmm/zh/tdt_sc_8k')



其次,下载特定词典,声学和语言学模型

普通话:

pocketsphinx-hmm-zh-tdt

pocketsphinx-lm-zh-hans-gigatdt

英语:


pocketsphinx-hmm-en-tidigits

这些安装好之后,可以开始测试pocketsphinx的语音识别功能了:

1)在一个终端运行启动文件

roslaunch pocketsphinx robocup.launch

2)对着麦克风说些东西吧(如果使用英文库,说一些数字;如果使用普通话库讲中文),哦这里这里列举英语case测试

3)可以用rostopic echo进行查看识别的输出





4 总结

1)实验中难点主要是由于ROS kinetic不支持pocketsphinx直接安装,引出众多依赖包的安装,以及默认pocketsphinx包中robotcup声学模型无法识别而需要下载其它模型

2)从实验结果看语音识别率不是很高(或许是由于麦克风设备和我发音不准导致吧:))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ROS pocketsphinx