《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

      编译之后生效环境变量,就可以正常运行语音播放了。