PICTalker is a low cost allophone-based system for synthesising
speech. These pages describe PICTalker and include the circuit diagram,
the PIC source code, the allophone file and an allophone file
downloader
program. It is anticipated that this will be sufficient information for
a PIC-proficient experimenter to build and use a similar speech
synthesis
system.
This documentation is, to say the least, sketchy, and is insufficient for a neophyte to build a similar system. We don't sell PICTalker kits or parts, nor provide advice, explanations or information except that which is on these pages. It's unlikely we'll have time to respond to questions you may have, so emailing us is probably futile - sorry.
Note that you need a PIC development system and programmer, and Microsoft QBasic to program the microcontroller and EEPROMs.
Realtime Control's Marine Instrument Talker is based on the PICTalker.
Background
The venerable SPO256-AL2 (aka SP0256-AL2) offered an easy way to equip small systems with speech capability, but they have been out of production for some time now and are difficult to source and relatively expensive. Their 100 mA (or thereabouts) power consumption is inconveniently high for some applications.
PICTalker was developed as a lower-cost, lower-power functional substitute for the SPO256 using currently available parts.
PICTalker generates the same 59 allophones and 5 pause codes as the SPO256, but has a 4800 bps serial interface instead of the parallel interface of the SPO256.
Functional block diagram

The 59 allophones are stored in digital form in the pair of 24LC256 EEPROMs. Each EEPROM has a capacity of 32 Kbytes. The sample rate is 7200 /s.
The PWM capability of the PIC16F628 along with a low pass filter are used to generate the audio waveform, allophone by allophone, from the data stored in the EEPROMs.
The software supports both externally controlled speech wherein a host PC or processor sends the allophone codes one at a time for the PCTalker to say, and speech initiated and controlled from within the PIC SW.
Performance
Speech quality is somewhat inferior to that from an SPO256 system.
Most
people immediately understand most or all of the speech it produces
provided
sufficient care is taken when constructing words from the component
allophones.
The speech is significantly easier to understand if the loudspeaker
used has poor base response.
Building the HW
We've yet to design a PCB, so you're on your own in that respect at
present.
Do not fit the EEPROM WP (write-protect) link yet.
PICTalker Circuit
Downloading the allophone file to the EEPROMs
Unzip these into a suitable directory: PICTalker source files, allphons.bin and QBASIC utilities
Comment out (ie. precede with a semicolon) the following lines in
main.asm
#define talkwords
#define straighthru
#define talkserialphonemes
Ensure the following line does not start with a semicolon
#define loading
Assemble main.asm
Program the PIC16F628 and fit to the PICTalker board
Connect a DB9 socket as follows:
- PCTalker serial in + to DB9 pin 3
- PCTalker serial out to DB9 pin 2
-PCTalker 0V and serial in - to DB9 pin 5.
Connect the DB9 socket to a serial port on your computer
Run DOWNLD.BAS under QBASIC
(QBASIC came with Windows 3.1, Windows NT4 and I believe a few other
Windows OSs.)
Power up the PCTalker.
With luck, allphons.bin will be copied into the EEPROMs.
Fit the WP link to the PICTalker.
Installing the externally-driven talker code
Comment out (ie. precede with a semicolon) the following lines in
main.asm
#define talkwords
#define straighthru
#define loading
Ensure the following line does not start with a semicolon
#define talkserialphonemes
Assemble main.asm
Program the PIC16F628 and fit to the PICTalker board.
Testing
Run PCTALK.BAS under QBASIC
With luck, you'll hear your PICTalker speaking.
Installing the stand-alone talker code
Comment out (ie. precede with a semicolon) the following lines in
main.asm
#define talkserialphonemes
#define straighthru
#define loading
Ensure the following line does not start with a semicolon
#define talkwords
Assemble main.asm
Program the PIC16F628 and fit to the PICTalker board.
Testing
Power up the PICTalker
With luck, you'll hear your PICTalker speaking.