Programming the SpeakJet Shield TTS to speak English text is fairly easy; a minimal program requires only several lines of code!
Configure the SpeakJet Shield TTS for use:
The photo below shows where the post shunts are pushed onto the board for normal use of the SpeakJet Shield TTS.
Settings for SpeakJet Shield TTS v1,0-1.2 (Click on photo to enlarge.)
Confirm that the shunts installed during assembly are in the proper positions. A post shunt should already be installed on the two pin header labeled "SJTest" near R3. This puts the SpeakJet into its normal running mode (when the shunt is removed, the SpeakJet is in a self-test mode). For the software examples below to work, this shunt MUST be installed!
A post shunt should also already be installed on the two pins at the "TTS" labeled side of the three post header near IC2 (the SpeakJet chip). This connects serial communication from digital pin 2 of the Arduino directly to the text-to-code processor. The proper position of this shunt is shown in the photo below.
A post shunt may also be installed to signal either a SpeakJet buffer half-full (BHalf) or SpeakJet busy (Busy) condition to your Arduino. This can be used as a form of flow-control if you need it in your programs. Some programs you write may not need flow control so this shunt may be removed if you desire. For the software example used on this page, the shunt is plugged onto the two pins at the "Busy" side of the three post header near R3 as shown in the photo below.
Writing Software for the SpeakJet Shield TTS:
Note for SpeakJet Shield TTS v1.3 or later:
wherever #define txPin 2 appears, change it to #define txPin 6
wherever #define rxPin 3 appears, change it to #define rxPin 5
wherever #define busyPin 4 appears, change it to #define busyPin 7
A classic first program could be "Hello World".
Stack your Arduino and SpeakJet TTS Shield together; connect your stereo headphone (I-Pod ear-buds work great!) or speaker to the SpeakJet TTS Shield headphone jack. Connect power to the Arduino.
Start up the Arduino code editor, and create a sketch like the following.
// set up a new software serial port
//rxPin: the pin on which to receive serial data
//txPin: the pin on which to transmit serial data
//busyPin: the pin used to monitor SpeakJet Busy line
// SpeakJet Shield v1.0-1.2 uses these pins:
//#define txPin 2
//#define rxPin 3
// SpeakJet Shield v1.3 or later uses these pins:
#define rxPin 5
#define txPin 6
After a few moments, the Arduino will reset and you may hear "ready" spoken multiple times (at least with mine, three times is common).
After that, it very shortly should say "hello world". If it doesn't, press the "Reset" button on the shield; it should then say "ready" once and then "hello world" (note: sometimes random squeaks and quacks may be heard during the upload, after uploading is done, press the Reset button twice). If you still don't hear anything, check the speaker connection and the setting of the volume pot on the shield (turning more clockwise is louder).
You will note I highlighted part of the sketch above in yellow. As an exercise, you can modify this to say whatever you want the shield to speak. Have fun!
Note: The sketch above has been tested on Arduino 15, 17 and 18 software. If you have an earlier version of the Arduino software, the sketch may or may not function.
SpeakJet Shield TTS/Basic by Galen Raben is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
Permissions beyond the scope of this license may be available at http://www.droidbuilder.com.
The code samples given in this document are released into the public domain.
© 2010 Galen Raben/DroidBuilder.com