Giving Your GoPiGo3 A Voice

The options for giving voice to a GoPiGo3 are quite numerous, but generally fall into five categories:

  1. Wired Speaker - Wired 5v
  2. Wired Speaker - Rechargeable Via USB
  3. Wired Speaker - Powered Via USB
  4. Bluetooth Speaker - Rechargable Via USB
  5. USB “Digital” Speaker - Power and Audio via USB

Thoughts on each:
1) Wired Speaker - Wired 5v
My current method - I am using a MonkMakes “Speaker Kit For Raspberry PI” <-(link) and grabbing power from an unused A/D port of the GoPiGo3:

The speaker is mounted to the GoPiGo3 using strips of 3/4" wide hook-and-loop fastener (permanent adhesive on back of each part).
I also used a short audio cable with 90 degree plug on both ends, and carved away a bit of the plug for wheel clearance. The 5v power and ground come from one of the A/D ports, rather than snaking to the GPIO connector of the RPi.

This speaker is very light weight, has a slim form factor that fits nicely under the GoPiGo3, and only draws 1 ma when not speaking.

The speaker input mixes left and right channel audio so no problems with stereo audio.

2) Wired Speaker - Rechargeable Via USB
DI sells a very nice version of this type of speaker:

Screen Shot 2020-02-19 at 5.39.23 PM

There was a period when my GoPiGo3 used this speaker type, when I was looking for the smallest form factor speaker I could find:

This speaker worked well, but I had to switch it on and off, and recharge it separately. I tried leaving it on and plugging the recharging cable into one of the Raspberry Pi USB jacks, but this causes the speaker to emit noise.

This speaker was surprisingly “meaty” for its size, and by mounting it on the front lip of the GoPiGo3, it lightened the load on the castor wheel making turns more accurate - an unexpected benefit.

Being self powered, it did not affect the robot run time at all.

The audio from this tiny speaker was barely acceptable from a quality standpoint, and its round form factor did not offer a stable mounting with the hook-and-loop fastening.

3) Wired Speaker - Powered Via USB
A desire for a speaker that would have good audio while grabbing power from the USB port, I tried the “powered speaker” of a pair of Hewlett-Packard portable laptop computer speaker set for a while.

This speaker was “always on”, powered from USB, loud, and superior quality. It was heavy, and it drew 50mA all the time. Being too large to mount on the front, and with “Carl” taking up the top of the chassis, the speaker had to be mounted on the rear deck. Did I mention it was heavy? The turning accuracy and turn consistency went down noticeably.

Since my bot is on 24/7 (and mostly idle), the constant 50mA draw of this speaker reduced the idle “playtime” from 8.5 hours to 7 hours using an eight AA cell 2550mA NiMH battery set.

The USB power cable had to be routed on the opposite side of the audio cable to minimize noise to an acceptable level.

4) Bluetooth Speaker - Rechargable Via USB

@wp1 posted trouble with a Bluetooth speaker recently, (to which no one responded).
( Blue Tooth Speaker Not Working )

Several years ago, I gave up on using a Bluetooth speaker with a Raspberry Pi running Jessie - it just wouldn’t auto connect.

I just returned a PS3 controller due to Bluetooth connection issues, although folks report a PS4 controller, which is twice the price, connects reliably, Bluetooth seems to me to be a risk. Something to consider if choosing a Bluetooth speaker.

  1. USB “Digital” Speaker - Power and Audio via USB
    I have not seen a really small USB digital audio speaker on the market yet. The idle power draw, and weight might be a concern, but the audio quality would likely be better than any of the other speaker solutions.



  • Wired - Wired, solution 1 - The MonkMakes “Speaker Kit For Raspberry PI” is working the best for me. It has sufficient quality, sufficient volume with extremely low battery drain, and very low weight impact.

My thoughts too, though I don’t think I can get the MonkMakes board here in Russia. I’ll go to Chip & Dip and look for an amplifier board I can use.

Why does the voice have such a strong British accent?

Every time Carl speaks I keep waiting for him to say something like “Jolly good show, old boy! Stiff upper lip and all that rot.” or “Oh what a balls-up! My batteries are low and I can’t find my bloody charging dock!”
:wink: :grin:

Actually the correct technical term is “cock-up”, but I wanted to keep this rated PG-13. :wink:

Minion thing?

I ask espeak-ng for “en-us female number 5” and it comes out "Carl":

subprocess.check_output(['espeak-ng -s150 -ven-us+f5 -a'+str(vol)+' "%s"' % phrase], stderr=subprocess.STDOUT, shell=True)

flite TTS is much more understandable, (but half the volume).

Carl tried flite for a few days, but he just wasn’t himself. My wife asked “What happened to his voice?” and we decided Carl has to use espeak, now espeak-ng ( “next generation” ).

Four years ago, I was investigating speech recognition on the new RPi 3B. I would speak each test phrase to my robot “Pogo” and the system would use espeak to say what it “thought it heard.” I was video taping the sessions. My wife was at her computer in the same room. When I spoke the phrase “What’s the weather look like?”, the system announced with the espeak voice - “What’s the weather, long quiet?”. My wife could not contain her laughter.

Four years later, she sometimes asks Carl “What’s the weather, long quiet?” and then we laugh. ( Robot cruelty? )


1 Like