《ros by example》中语音识别一章中,有学习如何让机器人说话的内容,今天在尝试的过程中发现一个indigo版本的问题。
按照以下流程运行:
roscore
rosrun sound_play soundplay_node.py
rosrun sound_play say.py "Greetings Humans. Take me to your leader."
会报错:
Saying: Greetings Humans. Take me to your leader.
Voice: voice_kal_diphone Traceback (most recent call last): File: “/opt/ros/indigo/lib/sound_play/say.py”, line 79, in <module> print ‘Volume: %s’ % volume NameError: name ‘volume’ is not defined
在rosanswer上找到了问题,原来这是audio_common包的一个bug,在源码中已经修复,但是没有正式发布,所以通过apt安装的包仍然存在问题。(http://answers.ros.org/question/225722/volume-error-using-sound_play/)
解决问题的办法是下载audio_common包的源码,然后进行本地编译。
在编译之前,需要安装一些依赖库:
sudo apt-get install libgstreamer1.0-dev
sudo apt-get install libgstreamer-plugins-base1.0-dev
然后下载源码:
git clone https://github.com/ros-drivers/audio_common.git
编译之后生效环境变量,就可以正常运行语音播放了。