GoPi5Go-Dave Has Something To Say!

Repurposing the ROS 2 “Say Node” from Create3-Wali, GoPi5Go-Dave now has a voice:

pi@GoPi5Go:DOCKER:~/GoPi5Go/ros2ws $  ros2 run gopi5go_dave say_node &

which offers a /say service to speak the content of the SayStr message:

ros2 service call /say dave_interfaces/srv/Say "Hello from Go Pi Five Go Dave using Piper TTS arctic-medium voice"

requester: making request: dave_interfaces.srv.Say_Request(saystring='Hello from Go Pi Five Go Dave using Piper TTS arctic-medium voice')

[INFO] [1716495377.975366780] [say]: Say request:"Hello from Go Pi Five Go Dave using Piper TTS arctic-medium voice"
response:
dave_interfaces.srv.Say_Response(spoken=True)

and indeed the say_node logs anything spoken (or asked to be spoken during “Quiet Time”):

2024-05-23 05:57|Battery at 10.0 volts.  Docking now. - quiet time
2024-05-23 05:57|Docking success after 3.4 hours playtime - quiet time
2024-05-23 05:57|Reset Encoders To Zero - quiet time
2024-05-23 08:16|Full Charge.  Undocking now. - quiet time
...
2024-05-23 16:16|Hello from Go Pi Five Go Dave using Piper TTS arctic-medium voice - spoken: True

A current problem Dave is facing: Volume can only be set from outside the Docker container. Takes human assistance when he wants to shout!

2 Likes

And a clear one at that.
Very cool - congrats on the progress.
/K

1 Like

Thanks - yes the piper-tts voices are created from real humans - hundreds of “voice talents” in almost any language desired, male and female, young and adult which makes them more understandable than the default espeak-ng Text-To-Speech engine for the GoPiGo3 robots.

As with everything I attempt to integrate, there are issues to be solved. In this case, I don’t know how to stream from piper-tts, so I have to write the audio to file, then play it back. It works but there is a delay equal to the time it takes to generate the audio for the entire phrase before Dave can be heard speaking.

At some point in the future, I’ll have to tackle that one.

2 Likes