Introduction: Arduino + Vintage Speech Chip

Picture of Arduino + Vintage Speech Chip

Ever wanted to make your arduino talk to you? Do you want a cool vintage robotic sounding voice for your next robot? Not satisfied with the harsh sounding options you've found so far? Look no more! In this Instructable, I'll show you how to use a vintage speech synthesis chip, the SPO256-AL2 (Also commonly known as the SP0256-AL2), with your arduino!

This particular chip is quite easy to use, sounds good, and can say pretty much anything in the English language.

Step 1: What You'll Need:

Picture of What You'll Need:

Ready to start? Great! Let's see what we need:

  • An arduino + breadboard + breadboard wires

  • The SPO256-AL2 (Info on where and how to get this in the next step)
  • A 3.579545Mhz or 3.120Mhz crystal and 22pf caps, OR a 3.579545Mhz TTL oscillator

  • A speaker or audio jack for your breadboard (Don't use a piezo beeper, it will sound bad)

  • A 22uf capacitor (Or something close to that value). This is optional, but it helps smooth out the sound.

  • 2 LEDs. (Green and red) These are also optional, but it's nice to have some indicators.

The overall cost is around 15-20$, depending on where you get the chip, and how much else you already have on hand.

Step 2: Buying the Chip and Crystal: Where and How

Picture of Buying the Chip and Crystal: Where and How

Since the chip is from the 80's, finding one may be a little hard, but they're not too rare yet, so you should be able to get one pretty easily. As for the crystal, there are several options.

When I first started this project, I headed out to eBay and bought a chip from a Chinese seller that was about 1.50$. Long story short, after much frustration (Some of which was my fault), I ended up buying 3, none of which worked, and all of which had a pin break very quickly. They're not original, and they probably don't work. To keep it simple, don't buy cheap new chips from Chinese sellers that don't look original, stick to NOS chips.

When looking for NOS (New Old Stock) chips on eBay, look for a few things. The pictures show some non-genuine chips vs genuine chips, so look for those. The real chips should have the GI logo on them, should have the copyright line, and should look old and like the ones in the pictures.

Make sure the chip you buy has the chip model "SPO256-AL2" or "SP0256-AL2". There are other models with different words and sounds, such as the "SPO256-017", which says numbers from . Apparently, the "SPO256-080" and the "SPO256-019" also have the same allophones as the "SPO256-AL2", so if anyone tries either of them, please let me know how it works. (The SPO256-019 is supposed to have the same allophones, as well as some application-specific phrases, it was used in a game. So, I guess you get some bonus sounds!)

There is one source on eBay right now that I am pretty sure is genuine: eBay Source

Another thing to do is to watch the searches "spo256" and "sp0256" for any auctions for the chips in their original archer brand packaging, as shown in the pictures.

There are a few NOS sources besides eBay, which I have found searching forums and such, which I will list here:

http://www.speechchips.com/shop/item.aspx?itemid=7

http://www.greenweld.co.uk/cgi-bin/sh000001.pl?REFPAGE=http%3a%2f%2fgreenweld.co.uk%2f&WD=spo256&SHOP=%20&PN=Shop_ICs_229.html%23aZ733#aZ733

Here's a source for the SPO256-080:

http://www.futurebots.com/sensor.htm

Feel free to mention any other sources of NOS chips you've found in the comments.

Step 3: Wire It Up: Power Connections

Picture of Wire It Up: Power Connections

Ok, now you have everything, it's time to wire! Be careful and double check everything, because it's really easy to wire it wrong, and the wrong wires in the wrong places can blow your speech chip, and that would be a shame. (I've wired it wrong a few times, but luckily it's not blown yet.) The PDF datasheet is a lot of help here, so if you're confident enough, you might want to go off of that instead of my version.

  • Pin 1 (GND) one the speech chip goes to GND on the breadboard.
  • Pin 2 (Reset) goes to +5v.
  • Pin 3 (External Rom Disable) goes to +5v
  • Pins 4, 5, and 6 don't connect to anything.
  • Pin 7 (VDD) goes to +5v.
  • Pins 8 (SBY) and 9 (LRQ) can either be left unconnected or connected to LEDs. Pin 8 goes to a green LED, and pin 9 to a red LED.
  • Pins 10, 11, and 12 don't connect to anything.
  • Pins 13-18 don't go to anything yet.
  • Pin 19 (SE) goes to +5v.
  • Pin 20 doesn't go to anything right now.
  • Pin 21 doesn't go to anything.
  • Pin 22 (Test) goes to GND.
  • Pin 23 (VD1) goes to +5v.
  • Pin 24 (Digital out) goes to the speaker, or the audio jack.
  • Pin 25 (SBY Reset) goes to +5v.
  • Pin 26 doesn't connect to anything.
  • Pins 27-28 don't go to anything right now.

Step 4: Wire It Up: Everything Else

Picture of Wire It Up: Everything Else

Now that you have all the power and ground wired up, time to add everything else!

  • On the Arduino:
  • Wire the first 6 pins of port D on the arduino (Digital pins 0-8) to the first 6 address pins on the speech chip (Pins A1-A6) Wire pin D8 on the arduino to pin 20 (ALD) on the speech chip.
  • For the crystal:
  • If you're using a crystal, connect it between pins 27 and 28 (OSC1 and OSC2) on the speech chip. Connect both pins to ground via a 22pf capacitor. The capacitors aren't needed, but without them, there will be a lot of unwanted background noise, and the chip might behave in unwanted ways.
  • For the TTL oscillator:
  • If you're using a TTL oscillator, stick it into the breadboard. Connect it according to the pinout in the picture, with OUT connected to pin 27 (OSC1) on the speech chip.
  • For the speaker/audio jack:
  • Connect a wire to pin 24, and connect it to the speaker (Or the audio pin on the jack). Connect the 22uf capacitor between pin 24 and ground. If you use the capacitor, you will need some form of amplification before you'll be able to hear it. As a side note, you'll probably have to listen closely with just a speaker, since it's pretty quiet anyways.

Step 5: The CODE... (Actually, a Library)

Picture of The CODE... (Actually, a Library)

It took me a lot of time to program this. (Well, ok, maybe 48 hours of work) But, don't worry, because I've made a nice library for you to use! The library doesn't have text-to-speech capabilities, instead you decide which allophones to tell the arduino to send.

To add the library, from the Arduino IDE, click "Sketch", then "Include library", then "Add .ZIP library". Browse to wherever you saved the SpeechChip library to, select it, and click "Open". You'll now be able to use the SpeechChip library.

(By special request by a Arduino Mega user, I've included a version of the library which should work on Mega pins 22-29 (Port A), just make sure to change the wiring accordingly.)

Here's the code to the example sketch:

/*
 * Example for the SpeechChip library by Jacob Field. 
 * The ALD pin is connected to pin 8. The allophones DD1,
 * DD2, and SS have been renamed to D1, D2, and S for 
 * conflict reasons.
 */

#include 

SpeechChip SpeechChip(8); //Tell the library that the Spo's ALD pin is connected to digital pin 8

void setup() {
  // Nothing here now!
}

void loop() {

  //Say "HELLO:
  SpeechChip.HH1();
  SpeechChip.EH();
  SpeechChip.LL();
  SpeechChip.OW();
  SpeechChip.PA5();

  SpeechChip.WW();
  SpeechChip.OR();
  SpeechChip.LL();
  SpeechChip.D1();
  SpeechChip.PA5();

  delay(1024);
  
}

Step 6: Testing and Troubleshooting:

Picture of Testing and Troubleshooting:

Time to test it out! Every single time I wire this up, without fail, It doesn't work at first. Luckily this chip seems to be pretty fine with us doing horrible things to it, so I haven't blown mine yet. As a general rule, do your wiring carefully, don't rush. Double check the connections, then plug it in. If you hear weird noises, don't be too alarmed. Upload the example program, and see what happens.

  • If it works first try, great! Congratulations! Advance to go! I mean, to the next step!
  • If nothing happens, don't worry. Check the red LED to see if it's on. If it's consistently on, then you probably need to unplug the Arduino for just a second (Not too long), then plug it back in. My chip does this every time, and I think perhaps it needs a reset before it will operate correctly.
  • If nothing at all happens, check all the connections again. Pay especial attention to the power connections.
  • If it makes horrible hissing noises, unplug it and plug it back in several times until it stops. My chip seems to do that every now and then, and I have no idea why.
  • If it keeps making horrible hissing noises, make sure you wired the data wires correctly (The ones connected to pins 0-5 on the arduino, and pins A1-A6 on the Speech chip). If it seems right, try reversing it anyways. I do that too sometimes. ;P
  • If you still haven't got it working, describe your problem (With pics) in the comments, and I'll try my best to help you.

Step 7: More Vocabulary! More! More!

Picture of More Vocabulary! More! More!

If just simply having an arduino that makes an old chip say "HELLO WORLD" over and over is your thing, then great, but probably most of us want to make it say at least a bit more.

To do this, we need to know a bit about the allophones on the Speech Chip.

The SPO256-AL2 has 59 "Allophones" at different addresses in the chip. Allophones are the sounds that make up words, for instance, "TT UW (Pause) BB EE" in the words "To be". The microprocessor (An arduino, in this case), selects the the correct allophones via a 6 bit address port on the chip to make up a word, and sends them one at a time to the SPO256-AL2, which then speaks the allophone.

I would recommend printing out the manual and reading it that way. I did that back when I first started the project, and it helped a lot. Although, since poring takes a lot of time, the pictures I've included of the manual has the dictionary, and an allophone list with example words. The manual itself has a lot more. In other words, take a look at the manual. It's pretty helpful.

Step 8: Final Notes

Picture of Final Notes

Well, hopefully now you know how to program and use the SPO256-AL2. If I was too over-explanatory, or boring, please let me know! ;P

If anyone downloaded the library before 7:28PM on 12/24/15, please re-download and install the current library. The old one had a couple allophones missing.

Feel free to comment with any thoughts, improvements, suggestions, or corrections.

This is entered in the Arduino all the things! contest, please vote if you think it's a winner!

Comments

rah187 (author)2017-02-06

I love the idea! Unfortunately I probably won't get around to making it any time soon, but it's definitely cool!

Jfieldcap (author)rah1872017-02-07

Thanks! Sounds like me- All the awesome ideas in the world, and so little time!

HotriderDude. (author)2016-06-23

Hi there Jfieldcap

I've tried to do this to. Heated the chip of a PCB from a "Currah C64 cartridge" . I had to give it some heat to get it of the PCB so I was worried, if I had damaged it. Placed a new 28 pin socket in the old C64 PCB, so I could test the chip on one of my working C64's - and was happy to find it fully functioning. I had no Idea how it worked and how to use it with Arduino. So I started my search on information and found this page:

http://nsd.dyndns.org/speech/

Are You the Author of this to ?

I've followed the instructions and the build on that site. With both success and not really... - My "Arduino speech-box" is somewhat unstable. I've tested all connections again and again - found nothing wrong.. but strangely the unit gets more and more stable the longer its on power - resetting the unit from my Arduino mega an unspecific number of times - and then it will talk for hours - and I suspect days and more if power is stable. It is totally stable on the C64 from being turned on.

I suspect My SPO0256A-AL2 is picky about the crystal and dont like the 3.5xxxx Mhz one that I had lying around ;-)

On My SP0256 the Label l stats: SP0256A-AL2,

GI, General Instruments Co

(P) 1981

I wanted to try your library - but for my project I will use an Arduino Mega. and wants digital pin 0 and 1 free to use serial interface.

So what I actually need is a way to get your library running on the mega ;-)

How can I configure the ports to - let's say starting from pin 22 ?

Regards !

Jfieldcap made it! (author)HotriderDude.2016-06-23

Hi HotriderDude, thanks for trying my project! It's cool to hear someone has actually found the chip used somewhere. What are you going to do with it?

No, I'm not the author of that page, but I did find that page and it was helpful when I was trying to figure it out myself.

As for the instability, I actually have that problem too. Often I'll need to reset the arduino, or unplug it and then plug it back in again. I believe it's something to do with the SPO's internal reset circuitry, which we're ignoring in this project. You could possibly fiddle around with it and get it to be as stable as in the C64. (Again, read the Datasheet like a novel). I've just been too lazy to do much about it so far, as it works well enough for my purposes. If you're not using a TTL oscillator, you might be able to improve it by adding the little 0.1uf ceramic capacitors between each pin of the crystal and ground.

Hmm, using it on the Mega. The way my library works is by using port manipulation, which only works on certain sets of pins. Luckily, from a bit of research, pins 22-29 are port A on the Mega.

I rewrote a copy of the library, which should use port A on the Mega. (Basically went through the .h and .cpp files and replaced everywhere it said "PORTD" and "DDRD" with "PORTA" and "DDRA".) I'll attach it to this comment.

Keep in mind that I only have an Uno, so I'm not to familiar with the Mega (maybe I should fix that), so there may be things I've overlooked. Tell me if it doesn't work and I'll look into it further.

Best of luck!

HotriderDude. (author)Jfieldcap2016-06-23

Thanks a lot :-) I'll try it out as quick as possible ..

My project is to upgrade my domestic house robot - it runs on a C64 with 8 relays - 2 temperature sensors - 8 digital inputs - old Mobil-phone connected calls last dialed number and gives vocal feedback on problem back home if any -when "Sammy" is all alone ;-).

But as the days goes by since the idea came to mind - I see that it is a greater project then I first imagined And as new features pops up in my brain.. the bottom readout tends to be.. " it's going to be expencive.. uh."

I'll be back..

Jfieldcap (author)HotriderDude.2016-06-23

And yes, unfourtunatly there's always the "wallet lightness" effect that these projects have...

HotriderDude. (author)Jfieldcap2016-06-23

Hi again Jfieldcap

I'm delighted to tell you that Your little coding fix for the mega - almost worked out of the box.. Just that All (PA) pauses don't work because on the mega these named variables is "not unique identifiers" so I renamed them to PPA1 to 5 and it works !

Furthermore I studied the data-sheet a bit more and found that grounding A8 and A7 on the chip - and make ROM Disable pin High from + 5v - solved all issues !!

It is now stable as a rock from the moment I turn it on ;-) Great ! and thanks again for a great tutorial on this SpeechChip - the effort in coding for my mega.

Seems to be pretty usable now. Clear speech with no noise at all !

I hope I have contributed with some useful info for others who want to give it a try.

Best Regards !

Ralph aka The HotriderDude ;-)

I think there will be posts from my latest projects soon.. when I get the time for it.

Among them is a Eight-legged Autonomous robot named "Romella" , Homemade Arduino controlled CNC milling and laser-cutting machine.

My Domestic C64 robot is a project that have been running for 9 years now. Longest time running without having to reset is one whole year, sometimes only a week and I can't find the BUG ;-)

the code running on it, is a mix of machine-code and C64 basic. the board is equipt with special ROM chips - evolved from hacking original ones and modifying kernel and basic ROM to fit my needs and then burning them to EPROM. It uses a machine-code speech-program that makes the SID-chip (synth-chip in c64) talk - with better speech and sound than the SP0256 produces ;-)

The Robot controls outdoor lighting, light in my garden-pond, controls a valve on my "wood-boiler" in the cold part of the year when I need to heat my house.

Surveillance of doors and windows for intruders when I'm not at home while listening for sound from fire-alarm in boiler-room and living room, Makes loud voice-alarm in living areas and also over Mobil-phone.

In the winter it tells me if outer-door is open more than 5 minutes (the dog has been out, is in again and I forget to close the door afterwards )

It keeps track of time and season - has build in sun up/down almanac to control lighting periods in garden-pond.

All collected data is stored on SD-card-reader/writer.

It has a emergency power circuit running on big 12 volt truck-battery with connected power-inverter 12v to 220v - If house is without electricity - robot and "boiler" runs undisturbed on that for approx 6 hours. It is a must have to keep my mind at peace when not at home and need to heat the house. :-)

Cheers for now. Need to sleep a little..

Will be around..

Jfieldcap (author)HotriderDude.2016-06-24

Awesome that you got it working and stable! Glad I could help you. That sounds pretty neat, all of it, really. I'll look forward to seeing your Instructables when you get around to making them. (A tip, if you will: Take a bunch of good pictures, and later you can turn them into a good instructable)

Bets of luck!

Jfieldcap (author)HotriderDude.2016-06-23

Sounds awesome! You'll have to make an instructable on it. ;) And using a C64... Interesting choice! Are you programming it in basic, or assembler or something?

Jfieldcap (author)Jfieldcap2016-06-23

I've also added it quickly to the instructable, as the comments weren't updating so I though they weren't working. (I ended up posting about 6 of the same comment. XD)

vmsa (author)2015-12-29

It sounds like my TS2068 !!!

Jfieldcap (author)vmsa2015-12-29

Huh! It must have a speech synthesizer installed? I wouldn't be suprised, actually, if it was the same chip. It was pretty widespread back then.

kooth (author)2015-12-26

This is very cool! Thanks for posting this! I'm going to try to build it!

Jfieldcap (author)kooth2015-12-28

Awesome! I wish you the best of luck!

cowboyathome (author)2015-12-26

Cool!

Jfieldcap (author)cowboyathome2015-12-28

Thanks!

imalan54 (author)2015-12-26

I still have the original one I purchased from Radio shack in the 80's. I hooked it up to to an Atari 130 XE.

Jfieldcap (author)imalan542015-12-28

Cool! There seem to be a lot of people who used them back when they were common.

baz1l (author)2015-12-27

Thanks I have two of these chips which I have never used one, time to dust them off and get them working, there is an emulator available which also converts text to allophones

http://www.speechchips.com/shop/item.aspx?itemid=1...

Jfieldcap (author)baz1l2015-12-28

Yeah, I've seen the emulator. It's pretty neat. Good luck in getting them working!

imcp1024 (author)2015-12-25

why do you label newer runs as fakes? Archer, Tandy Etc are all repackaged items sourced from China, Taiwan, Etc.

Jfieldcap (author)imcp10242015-12-25

Yes, however, the ones I marked as being likely fake are all brand new, not new old stock. It is possible that some of them work, but I would be quite surprised. I didn't mean to be racist at all, just that it seems like all the sellers of the newer chip are based in China/around that area of the world.

ThomasK19 (author)2015-12-25

Hu, 30$ for a vintage chip is a pound. Where can one salvage it?

Jfieldcap (author)ThomasK192015-12-25

The eBay source has them for about 21.00 a piece (Including shipping). There are plenty of circuits out there that used them, but they'd probably be worth more as the original circuit than the value of the chip. I watched eBay until I found a used set in the original packages for 12.00.

kcraske (author)2015-12-25

I don't think the description too boring. People can always skip information which they do not want but if information is incomplete it makes understanding things difficult. Well done for bringing a vintage chip up to date. I used one of these in my hand built computer, a Microtan 65, many years ago. Using it with the arduino brings this interesting chip for use in today's technology.

Jfieldcap (author)kcraske2015-12-25

Thanks! I was a little worried about it, but you have some good points. I did have a lot more info (History from wikipedia) and stuff, but I didn't think that much was necessary. You used one in a home-brew computer? Cool! Do you remember the frequency of the crystal you used? Yes, I'm thinking I'll use it to narrate parts of a presentation board that my robotics team needs to do. :)

About This Instructable

7,853views

125favorites

License:

Bio: I am a electronic maniac. I take things apart to see how they work or what I could use out of them, and I love ... More »
More by Jfieldcap:The ProtoBot Project - Super Affordable Educational RobotsRestoring a Vintage CalculatorLEDs for the clueless beginnner
Add instructable to: