In this post, I buld a board that uses the CTS256A-AL2 text to speech and SP0256A-AL2 speech synthesizer chips:
Why?
“Why? ” seems like a good question to ask. I’ve been working with vintage speech synthesizer ICs lately, and you see the CTS256A-AL2 appear on eBay from time to time. The CSS256A-AL2 is not a speech synthesizer chip, but rather it’s a text-to-speech chip. It’s designed to take ASCII text and convert it to phonemes, which are then converted to text by the SP0256A-AL2. Using this IC frees a project from having to specify speech in phonemes and allows you to use plain ordinary ASCII. I wanted to give that a shot, so I made a board.
Design
The design came straight out of the Radio Shack data sheets and application notes, which a couple of small modifications, such as adding an activity LED and picking a more modern serial driver chip. Below is my schematic:
Again, the design is right out of the datasheet / application notes, and you can find those on the web. Nevertheless, I’ll summarize the interesting bits:
- The CTS256A-AL2 is a microcontroller with on-board ROM and RAM. It’s programmed to implement the text-to-speech algorithm. It’s a big 40-pin dip package. It interfaces to external chips through a multiplexed address/data bust (i.e. if ALATCH is active, then address bits will be latched, otherwise the bus containers data bits). There’s also an additional 8 address bits, giving it a 16-bit address space.
- A 74HCT138 is used to do address decoding for external peripherals, including the SP0256A-AL2.
- External ROM and RAM are supported. The external ROM allows you to store special phoneme rules in case the default TTS rules speak a word incorrectly. The external RAM allows you to increase the size of the buffers. These are optional.
- External jumpers are supported to let you select serial parameters, and are buffered by another 74HCT373. These parameters let you set number of data bits, stop bits, etc.
- The CTS256A-AL2 has TX, RX, and BUSY (i.e. CTS) lines for serial communication. I connected them to a MAX202 RS232 driver and a DB-9 connector.
- Also supported, though not included in my schematic due to space limitations on the PCB, is a parallel interface in case you’d like to talk to the chip via parallel rather than serial.
Implementation
As usual, I sent the board design off to OSH Park and had a PCB fabricated. Below is what it looks like:
There’s not a whole lot to say about the pc-board, it’s a straightforward layout of the schematic. Note that this is a 5V project, so if you build one, make sure to plug 5V into the barrel jack, not 12V. The RAM chip I ordered the wrong size (narrow instead of wide) and I had to build an adapter to go from the narrow to the wide footprint. oops.
PCB Ordering
As usual, the PCB is shared on Osh Park in case anyone wants to build one of these.
This is great! I happen to have a few CTS256 and SP0256 chips i ordered a decade ago sitting around that I never used! Are the rest of the components easily accessible?
Joe
Scott –
Do you have a part number for the potentiometer or audio output jacks?
I built one of these back in the day using point to point wiring. Loaned it to a friend , never to be seen again. Him or the project. I have all the parts to build another, but a pcb would be awesome. the thing is the link you provide wants me to create an account before I even see the price. I don’t want to have another account I never use. Do you know what the price is?
Hey Clarence, it appears they send you 3 proto boards for $5/sq inch. This board is ~16 sq in, so ~$80. A bit pricey for a fun project…
I have an original set of these ICs still in the packaging — my brother worked at Radio Shack in the 80’s: https://twitter.com/Jeff__Ward/status/973662087971987456
I can’t decide if I should go for it. The other thing is, the CTS256A-AL2 seems to be adding a lot of complexity. You can build an Arduino project with just the SP0256-AL2 and WAY fewer components, if you’re happy encoding the phonemes yourself. See this instructable: http://www.instructables.com/id/Arduino-Vintage-Speech-Chip/
So I’m torn on how to proceed.
Scott — thanks for this. I’m glad, if I don’t build it, to at least hear how it sounded. And if I do, thanks for the PCB design! 😀 And not to sound so needy, but if you have a bill of materials for the other parts just lying around (e.g. an email invoice), that’d be cool!
Or, hey, might as well ask if you (or anyone else on this thread) have a spare PCB I could buy from you?
Best,
-Jeff
Hello
Great project, I’m working on similar myself. I built mine in June 2006, without the additional ram, rom, or serial settings options.
Did you know there is a problem with the cts256 chip? The serial buffer does not account for the status of the sp0256 chip. [https://ia801901.us.archive.org/4/items/bitsavers_gispeechGe05DCTS256AAL2CodetoSpeechChipset10Dec198_3565008/General_Instrument_-_AN-0505D_-_CTS256A-AL2_Code-to-Speech_Chipset_-_10Dec1986.pdf Page 5]
Just thought I’d let you know.
Gary, you may have found the part by now, but anyone else wondering, the footprint is for a sing ganged Panasonic EVU series. For it to fit with a keystone bracket, ya gonna need to trim the hell out of it.
Hi,
I’m Pavin from Thailand. I have a program running on MCS51 chip such as P89V51RD2. It convert text to allophone for SPO256-AL2. The program is written in C programming. The program was written by Tom Jennings and fix bugs by John A. Wasser. Then, I modified and fix some remaining bugs. Now, it run on MCS51. I want to share it without any cost. If you are interesting in it, please let’s me know. I can send to you via email.
Hi Pavin
I would love to see that code to port it to the Arduino ! can you share it with me