Arduino + Vintage Speech Chip

8,783

127

20

Published

Introduction: Arduino + Vintage Speech Chip

About: I love creating value, and discovering new things! I take things apart to see how they work, spend too much time learning about irrelevant things, and love making cool stuff, like Robots, electronic projects...

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:

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

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

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

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)

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:

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!

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

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!

Share

Recommendations

  • Clocks Contest

    Clocks Contest
  • Oil Contest

    Oil Contest
  • Casting Contest

    Casting Contest
user

We have a be nice policy.
Please be positive and constructive.

Tips

Questions

20 Comments

Very nice instructable!
Would it be possible to modify the library so that address pins could be user defined? Some of those you used by default are necessary for other modules to work (D0 and D1 are the serial receive and transmit pins Rx and Tx) so they are someway "wasted" to build up addresses bits.
Thankyou!

1 reply

Hi, sorry it has been a while, instructables doesn't always email me when people comment!

It would definitely be possible, with a little extra coding. In my library, I use PORTD, which is why it uses the D0 and D1 pins (Believe me, that was a headache to troubleshoot when I was trying to figure it out!)

If you wanted, you could just use digitalWrite statements for each pin, but that would be less efficient (Though, the libary wastes a lot of time with the delays anyways)

Or, I'll bet you could shift the bits over two spots, write the new value to the port without modifying the bits on D0 and D1- Since the SPO256 only needs 6 pins, not the 8 total on port D.

I can't recall exactly off the top of my head, but if you look at the bitshift operators and others on the Arduino reference page, you should be able to figure it out. I did a lot of bitshifting and modifying partial registers without modifying the other bits in my SAA1099 project, and those were invaluable.

I've been thinking for a while that I should update the library so as not to use up time while waiting for the delays, and to add some features and such. This is another good addition that I may add, when I get the free time... xD

Hope this helps! Let me know how it goes!

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

1 reply

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

user

It sounds like my TS2068 !!!

1 reply

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.

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

1 reply

Awesome! I wish you the best of luck!

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.

1 reply

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

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

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

1 reply

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.

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

1 reply

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.

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.

1 reply

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. :)