Let's Make Robots!

SpeakJet howto

Give your robot a voice

 

Your browser is not able to display this multimedia content.

Your browser is not able to display this multimedia content.

Your browser is not able to display this multimedia content.

AttachmentSize
amp.sch_.mp3172.94 KB

OK,you can read it now

 

 

"The SpeakJet is a completely self contained, single chip voice and complex sound synthesizer."

This walk thru will show how to use the SpeakJet with a Picaxe.


 1. The first thing to do is make sure the chip is working to start with. This configuration will put the IC into demo mode, you should hear some voice/soundFX. (see video 1)

 

 demohookup.jpgdemo.jpg

 

I didn't have a 120ohm (12ohm?) speaker (I don't know if an 8ohm would do any harm?), so I  ran the output  to an amp, then to an 8ohm speaker instead (you can buy a kit from here)

lm386.jpg 

 


2. Now that you know it's working it's time to hook it up to the picaxe. In this example, we'll use output 0 on the picaxe to go to the serial in of the speakjet.

 

 speakjet_pic.jpg  

 

From the manual -

"The SpeakJet serial configuration is fixed at: 8 bits, No- Parity,and 1 stop bit (8, N, 1) and non-inverted, (RS-232 is inverted logic and higher voltages). The Speakjet can be configured to accept Baud rates from 2400 to 19200. The factory default setting is 9600 baud. This baud rate can be changed any time by placing the SpeakJet into the “Baud Rate Configure Mode."

Unless you overclock your picaxe, 9600 is too fast, from the manual again -  

"If the SpeakJet is in the Demo/Test mode and a momentary Low logic level is placed on Mode Select M1, the Speakjet starts a Sonar Ping sound to indicate the Baud Rate Configuration mode is selected. At this time the Speakjet is waiting for a serial sync character (hex 55) to set the internal clock for the baud rate that is to be used. Once the baud rate is captured, the Speakjet automatically stores this value in the EEPROM and returns to the demo mode. The SpeakJet will continue to use this new Baud Rate until configured again." 

So from this we see we need to put the SpeakJet in demo mode, then ground M1 (pin 12), when you hear the sonar pings, have the Picaxe send serial data (55 hex = 85 decimal) at the baud rate you want (I use 2400).  (see video 2)

 

 baud_set.jpg

 

main:

serout 0,t2400,(85)

pause 2000

goto main

 


3. Take the chip out of demo, and put it in serial mode by moving pin 13 from V+ to GND:

 

finished.jpg 

 


 4. Now we should be ready to send commands to the speakjet. The manual talks about phonemesallophonesDiphthongs, WTF. But Magnevations has made 'PhraseaLator' available:

phrasealator1.jpg 

 The software is pretty self explanatory, type something into the 'Say Data' area, press view codes, copy this into your program

 phrasealator2.jpg

 So your program would look something like this: (see video 3)

 

main:

serout 0,t2400,(20, 96, 21, 114, 22, 88, 23, 5, 183, 7, 159, 146, 164, 147, 151, 145, 176)

pause 2000

goto main 

 

 It's all fairly easy, have fun! Let me know of any mistakes.

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

is it possible to connect pic18f microcontroller to speakjet or txt via pc to speakjet...i m working in ccs compiler ,i have problem with speakjet program..give me some idea to convert text to speech by using pic microcontroller...

Hey! Love this guide, but I was wondering. If you wanted to connect a speakjet to a PIC or AVR microcontroller, would you just connect the TX pin of the microcontroller to RCX of the speakjet?

Since no one has replied to you yet... That is exactly right! Just connect the TX pin of your PIC/AVR to to RCX of the the SpeakJet chip.  After Ant originally posted this article I posted my own using an Arduino (see http://letsmakerobots.com/node/11969 - which eventually led to my creating an Arduino shield for the SpeakJet) - in my case I wanted to keep the single hardware serial port open for debugging/communicating with the Arduino so I used a software serial port to communicate with the SpeakJet...

Doesn't know about the 12 ohm speaker, but an LM386 from the shack will work to push speakjet out of an 8 0hm (something Calculon could never get the speakjet to do using just the schematic.). Calculon just puts this amp circuit where the speaker is on the speakjet schematic above.

lm386.gif

 Calculon has also seen a similar schematic but with two pins connected to a pot for variable gain.

Stupid Question Time!
What is the audio amp for and will it work without it? If not are there plans on how to build your own? What if the resistance of the speaker is say 8ohms instead can I put a 4ohm resistor on it to make 12ohms?
I updated my schematic on my original blog post about the SpeakJet, it is much larger now than the one that was originally there. Should be a lot easier to read now... :-)

No the SpeakJet will not work without an audio amp. It just doesn't have enough power to drive a speaker on its own. An audio amplifier is used to increase the level of power (making the sound much louder) to the speaker. The schematic that Calculon put up in his reply is nearly identical to the way I do it. The schematic from my blog post on the SpeakJet was TOO TINY to see. I'll see if I can't somehow fix that in a few moments!

No, you really shouldn't add a 4ohm resistor to an 8ohm speaker to get 12ohms resistance. It MIGHT work, but all you've really done is cut down the available voltage to the speaker! Speaker resistance is a "reactive" resistance - in other words it has to do with a speaker just looking like a big inductor to an AC waveform (like audio). You can look it up on Wikipedia (try using "inductance" as a search term?). Anyway, way more explanation than I really have time to get into here!

One *should* try to match the resistance of the speaker to the load expected by the audio amplifier, but you do not entirely have to try to do so! Good news eh? In general the speaker should still work (as long as the target resistance isn't too far away). What this really affects is how loud the speaker will be. It could either be overdriven (too loud - thus probably distorted), or weak(not very loud at all). Chances are though, you will hear something!

Hope this helped somebody...

 

I was going by what was in video #3. From your images/your text, I thought it was supposed to be saying "Hello World." Now that I know its saying "Hello L.M.R." I can understand it.

Thanks.

I couldn't understand a single word the SpeakJet was producing. It says it was supposed to be saying "Hello World." Even with knowing that...I still can't undertand what its saying. Is this just me? Am I missing something?

This looks like a REALLY cool component though...as long as it does actually produce understandable speech.

Are you going by whats in the video (#3 says "hello L.M.R.") or have you put one together yourself?