SpeakJet fun

Working on a little project to incorporate a ultrasonic rangefinder and a SpeakJet, plus a few other bits.

Here's a pic of my little SpeakJet test setup with onboard amplifier (LM386). It's a generic board with header pins for 5V power, speaker out, plus the SpeakJet I/O lines. Planning on using this for a few more projects in the future. Didn't make it into a shield as I'll be using my own "mini-Arduino" board that I've cobbled together.

I was hoping to create a nice little library to control the SpeakJet but quickly realised the IDE limitation about libraries using other libraries (boo!), but have created some generic code for controlling the SpeakJet (incl speaking numbers, distances etc) that I'll share once everything is solid.

The speech is very robotic, but I love that retro sound (ahh, the 80's) :slight_smile:

My 5yo daughter wanted to know if it could say "I love pears". :smiley:


Cool! I've always wanted to buy one of those Speakjet chips, but can't quite justify paying 25 bucks for it ;D!

Anyone got one they want to ship my way? :wink: haha

Got a schematic?

I bought 2 of em... hate buying singles. I got em for ~$35 for the pair from toysdownunder.com - but their prices seem to have gone up. Maybe I got em on sale by chance. Not sure actually.

Hooking up the SpeakJet by itself is easy - you need almost no external components for a basic setup. The majority of what you see is a simple low-pass filter feeding into the amp circuit which pretty much came straight from the LM386 datasheet. If you're using an external amp or powered speakers you could just go with a line-level output and forgo the LM386 amp setup. Pin 18 on the SpeakJet is output to the low-pass filter. Pin 10 is input and that's wired through a resistor into the header which goes to the Arduino pin (which is setup with the SoftwareSerial lib). The 3 other pins going to the 4-way header are for the SpeakJet status indicators (Ready, Speaking, Buffer half-full). The rest of the connections are used for setting up certain modes that I didn't care about.

The SpeakJet can be setup to respond to 16 specific events and play canned responses (you can flash the EEPROM yourself with custom messages via the serial connection). That's what most of the pins on the far side are for, except for a single ground connection

There's all this other stuff it can do with regard to RC servo's etc, but I kinda skimmed that section 'cause it ain't relevant for the moment.


I got em for ~$35 for the pair from toysdownunder.com - but their prices seem to have gone up.

You're telling me! The cheapest I've seen them is $25 for 1!

Thanks for the info.

Do you use a 0,5 Watt 8 Ohm loudspeaker ?

I think it was 250mW, 8 Ohm from memory, but anything in that range will be fine.


There are a couple of links on the Speech Synthesizer project page on the "Practical Arduino" site that may be useful to you, such as the link to the Phrase-A-Later software:


Cheap prototyping shields: ProtoShield Basic for Arduino | Freetronics

The Phrase-A-Later comes in handy to get you in the ball-park, but I found manual tweaking was still required in many cases. It's Windows-only too, so Mac users will need Fusion or Parallels to use it.

I bought a couple of TTS chips recently that supposedly let you avoid messing with the raw phonetic guff - haven't had a chance to hook em up yet though.


Is it possible to use the Phrase-A-Later Software in combination with the Arduino and the Sparkfun Voicebox Shield ?

Yes. Just write a sketch that copies all input to the Arduino's serial RX and use NewSoftSerial:: to writes that input to the SpeakJet's RX pin.
Be mindful of baud rate differences or set the Arduino's hardware serial port to match that of the SpeakJet's.

[Edit] Forgot to mention that your Arduino sketch will probably have to buffer input from your PC because the SpeakJet won't be talking as fast as the PC sends. Watch the SpeakJet's Half-Full pin.