Ask Your Question

Revision history [back]

Hi Ringo,

I have a possible solution for you below but first here is a summary of what I tried. I am using Ubuntu 10.04 with the festival debian packages obtained using the Synaptics package manager.

First I tried your scenario with the latest Diamondback debian packages and confirmed that I also get the slow low voice. (I reported this a while back as a bug.)

Next I tried it with the latest Electric beta debian packages and in this case, launching the sound_play node fails with the following error:

process[soundplay_node-2]: started with pid [5505]
Traceback (most recent call last):
  File "/opt/ros/electric/stacks/audio_common/sound_play/scripts/soundplay_node.py", line 49, in <module>
    from diagnostic_msgs.msg import DiagnosticStatus, KeyValue, DiagnosticArray
ImportError: No module named diagnostic_msgs.msg
[soundplay_node-2] process has died [pid 5505, exit code 1].
log files: /home/patrick/.ros/log/d13001dc-c1ef-11e0-9414-0022683b2a0b/soundplay_node-2*.log

The fix I have found that works with both Diamondback and Electric is to overlay the latest audio_common stack as follows:

$ cd /home/ringo/ros (or whatever your personal ROS directory is)
$ sudo apt-get install mercurial
$ hg clone `roslocate uri audio_common`
$ rosmake --rosdep-install audio_common

Then run:

$ rospack profile

in each of your terminal windows and try this test:

In the first terminal:

$ roslaunch sound_play soundplay_node.launch

and in the second terminal:

$ rosrun sound_play say.py "How do I sound now?"

IMPORTANT: In your Python program, you need to add a second argument to the SoundClient say() command. So this:

self.soundhandle = SoundClient()
rospy.sleep(1)
self.soundhandle.say('Take me to your leader.')

becomes this:

self.soundhandle = SoundClient()
rospy.sleep(1)
self.soundhandle.say('Take me to your leader.', '')

The second argument is for specifying the voice, but I have only tried setting it to the null string.

Hope that works for you!

--patrick

Hi Ringo,

I have a possible solution for you below but first here is a summary of what I tried. I am using Ubuntu 10.04 with the festival debian packages obtained using the Synaptics package manager.

First I tried your scenario with the latest Diamondback debian packages and confirmed that I also get the slow low voice. (I reported this a while back as a bug.)

Next I tried it with the latest Electric beta debian packages and in this case, launching the sound_play node fails with the following error:

process[soundplay_node-2]: started with pid [5505]
Traceback (most recent call last):
  File "/opt/ros/electric/stacks/audio_common/sound_play/scripts/soundplay_node.py", line 49, in <module>
    from diagnostic_msgs.msg import DiagnosticStatus, KeyValue, DiagnosticArray
ImportError: No module named diagnostic_msgs.msg
[soundplay_node-2] process has died [pid 5505, exit code 1].
log files: /home/patrick/.ros/log/d13001dc-c1ef-11e0-9414-0022683b2a0b/soundplay_node-2*.log

The fix I have found that works with both Diamondback and Electric is to overlay the latest audio_common stack as follows:

$ cd /home/ringo/ros (or whatever your personal ROS directory is)
$ sudo apt-get install mercurial
$ hg clone `roslocate uri audio_common`
$ rosmake --rosdep-install audio_common

Then run:

$ rospack profile

in each of your terminal windows and try this test:

In the first terminal:

$ roslaunch sound_play soundplay_node.launch

and in the second terminal:

$ rosrun sound_play say.py "How do I sound now?"

IMPORTANT: In your Python program, you need to add a second argument to the SoundClient say() command. So this:

self.soundhandle = SoundClient()
rospy.sleep(1)
self.soundhandle.say('Take me to your leader.')

becomes this:

self.soundhandle = SoundClient()
rospy.sleep(1)
self.soundhandle.say('Take me to your leader.', '')

The second argument is for specifying the voice, but I have only tried setting it to the null string.

Hope that works for you!

--patrick