The babbletron is a device that lets you explore the world of computer generated speech. The basic concept used by the babbletron is that synthetic speech can be approximated using a small set of phonetically isolated speech fragments, called phonemes. To produce a word or phrase, you combine phonemes in a sequence that makes a voice recognizable to the human ear.

This method of speech generation has been around for at least two decades, and is an efficient and compact means of representation, but does require some processing power. The fairly recent introduction of low cost programmable micro-controllers has reduced the cost of speech synthesis hardware down to the price where makers and hobbyists can incorporate synthetic speech in their own projects and prototypes.

The babbletron is a sandbox of sorts that can serve to explore computer generated speech using low cost hardware, and easily understood software. This instructable can be used as a starting point for exploring your own artificial voice projects, and give you some general tips on how to construct a demonstrable project for public consumption.

Step 1: Parts

The babbletron is a combination of software and hardware. The role of the software is to read the buttons the user is pressing to create a sequence of phoneme codes that are eventually played back through the synthesizer and animated on a small LED screen. In building your own voice project you might want to change / omit the panel layout and visual display unless you are going to build a babbletron for display to the public, as was done with this device. The hardware consists of :

Arduino UNO compatible microcontroller

The Arduino serves as the central processing device in the system. During operation the Arduino polls the currently pressed button via the mux shield, determines the corresponding phoneme to speak, sends a command to the synthesizer shield to vocalize it, sends data to the LED shield to render a face image, and optionally records the button press data for later playback. The source code is written in C++ and is understandable and well documented. The code was developed using the Arduino IDE commonly used when programming in the Arduino environment. We assume in this instructable that you have some working knowledge of how to use an Arduino.

Ginsing waveform synthesizer shield

The GinSing shield provides the sound in the system. The GinSing is a waveform synthesis engine (Babblebot) with a built in audio amplifier that contains pre-programmed phoneme sound definitions. The GinSing uses a 3 pin serial interface to receive play commands from the Arduino and translate them into the audio voice you hear. Additional features, such as voice pitch control, allow the GinSing to add infection and musical qualities to the voice as well.

LinkSprite LED matrix shield

The LED smatrix hield provides the visual display in the system. The LinkSprite LED shield uses an LED driver (MAX7219) and an 8x8 LED grid to provide a low resolution 2D graphics display using a 3 pin serial interface. The Arduino stores predefined 8 byte images for various faces and transmits the face to the shield for display when a phoneme is selected.

Custom 64 input mux shield

The mux shield is provides the 64 button interface between the user and the Arduino. The mux shield consists of two 8 channel I/O multiplexers (HEF4051B) soldered onto an Sparkfun prototype shield that act as row and column button scanners that sequence through the button array. The Arduino sequences 6 address pins  on the mux ( 3 for row and 3 for column ), and reads the state via an analog pin to determine state.

I/O panel and cabinet

The panel and cabinet provide the tactile interface to the user and protect the rest of the hardware. The cabinet consists a 4'x4' quality grade plywood panel,  a 6' 2"x2" wooden stud, 64 candy colored arcade style push buttons, 2 1/2" x 5" plexiglass panel, 1/4" mono audio jack, a stereo RCA jack, a 6"x6" piece of Masonite board, and assorted nut/bolt fastening hardware.


Sparkfun ( www.sparkfun.com ) Arduino (Lepnardo ) microcontoller ( Leonardo ) arcade buttons, protoshield

GinSing ( www.ginsingsound.com ) GinSing waveform synthesis shield w/ Babblebot IC

LinkSprite ( www.linksprite.com ) 8x8 LED Matrix kit

Home Depot ( www.homedepot.com ) 4'x4' Sande plywood, 6'x2"x2" stud, misclleanous hardware

OfficeMax ( www.officemax.com ) 24"x36" print and lamination services

Digikey ( www.digikey.com ) HEF4015B IC, 16 pin DIP sockets, wire, DB23 connectors, jacks
<p>An excellent way to use phonemes effectivily<strong>.</strong></p>
SUPERB LOOKS! The colors and the layout are simply superb. <br>A immediate desire to try your unit, it looks soooooo good. <br>
Very nice project ...I have not read through the whole Instructable yet ...but I plan on it ! <br>Thanks for the share ! <br>Build_it_Bob
It would seem like you should be able to write a program to generate the buttonmap for you; giving you a list of buttons to press in order, and then outputting the table to paste into your code.
Possibly, There are two reasons why I did it manually; to confirm that each button was properly wired, and to make the association between the button address and the actual phoneme on the panel label.
What is the 'e' down at the bottom for? Also, one idea to enhance this (if possible) is to put in a slider/joystick/trackpad for the range of values of ə, so you can get all possible vowel sounds.
Oh, now I get it, that 'e' is actually your logo thing.
Did almost the same thing back in the early 80's with a Commodore VIC-20 and a Radio Shack SP0256 chip. Brings back memories. <br>Mine couldn't change pitch though.
Yep, I was blown away by the SP0256 when I first got one, although I did actually blow up the first one I bought. I recall that chip being pretty darn expensive, but not much more than the Babblebot it seems. The other chip that blew my mind that came out about that time was the GI 8910 - I still have one of the those.<br> <br> <a href="http://en.wikipedia.org/wiki/General_Instrument_AY-3-8910" rel="nofollow">http://en.wikipedia.org/wiki/General_Instrument_AY-3-8910</a>
I got the optional rom for the sp0256 as well which had popular phrases for making a talking clock. I interfaced it to the Commodore VIC-20's user port and wrote phonetic sentence construction software. You had to know which E you wanted to use though, for instance you might write a word as e1hntu2r for ENTER. The VIC just didn't have the RAM to take a word like ENTER and decide what phonetics to use. I did it all with perfboard and point to point wiring using ribbon cable wire. The handshaking was surprisingly easy (for my then young mind) but honestly people were much more interested in the Pay TV Decoder I made using a 4528 dual monostable multivibrator (later changed to the 14528 for noise and power reduction). Ah, the good old days! Then I discovered girls. Then I discovered beer. LOL!
And of course <strike>pay</strike> free TV
Awesome! Excellent instructable. Nice level of detail. Is the recorded audio stored on the Arduino? I have about 20 projects I could use that mux shield for. I might have to give this a try.
Thanks, nein. One very cool thing about the GinSing / Babblebot is that there are no recorded sounds; the IC is a waveform synthesizer so it generates the sound using digitally controlled osccillators configured in such a way as to create each of the phonemes. This is what allows it to change pitch, add inflection, change timing, and even blend between each of the phoneme sound ( i.e. slurring ). The Arduino is simply sending an array of phonemes that comprise a phrase to the chip using the GinSing software library ( i.e. GS.speak() ).<br> <br> There are mux shields available out there in commercial form, but for me buying the proto shield and the ICS was far cheaper. Let me know if you need any more details about making your own mux shield.
Ah cool. When you're in the mode where a phrase is repeated, is the array of phonemes resent each time it's played, or is there a repeat mode on the GinSing? Can you change the inflection etc during this repeated playback mode? I've been playing around with my GinSing a bit. Is there a way to switch to synth mode on your creation?
W/r to synth mode - yes, you can go into synth mode ( or poly mode ) and back again, but the basic parameters of the speech ( frequency, speed ) should be restored before speaking again.
Yes, the phrase is sent down every time. Its a very small amount of data, for example &quot;I am Babbletron&quot; is at most two dozen bytes; which at 9600 baud is just over a millisecond. I am also sending down pitch commands when the pitch value changes, running the loop at 100 ms IIRC.<br> <br> The inflections ( _PITCHUP , _PITCHDN , _BENDUP , _BENDDN ) precede the allophone that it effects; in other words sending this array:<br> <br> { _AU , _PITCHUP , _AU , _PITCHDN , _AU , _ENDPRHASE }<br> <br> will result in the first one at normal pitch, the second inflected up, and the third inflected down. These are the &quot;pre&quot; commands on the babbletron; the &quot;post&quot; are the pauses and delays ( _PA0 , _PA1 , _PA2 , _FD0 , _FD1 , FD2 ) respectively. These are built into the phrase, and to change them would mean changing the array, but you can change the pitch at any time using the setFrequency() or setNote() function calls.
Very cool project, Mike.<br> <br> I notice you left <a href="http://www.ginsingsound.com" rel="nofollow">THE BABBLEBOT</a> out of your suppliers list, LOL.
Somebody should make one of these with Morgan Freeman's voice!!!
If anyone made that, it would implode into a singularity of awesomeness.
This brings back memories. When I was in 7th grade Bell Labs came out with a speech synthesis kit which the builder could construct, using an included slide rule and charts, to produce a limited number of voice &quot;formants&quot; which corresponded to a handful of the individual buttons on the Babbletron. Our school obtained one, which was given to me as the resident nerd and had much to do with my later career path.
Wow, that is the coolest thing since wire wrap! The babblebot IC uses 6 oscillators to form the vocal tract and the mouth shapes, which a variety of modulations to create the formants; furthermore, because the oscillators are all digital, it dynamically blends between the formants ( phonemes ) for a smooth transition, which it calls &quot;allophones&quot;. Now designing an analog circuit that can come close to that is pretty amazing even today. Thanks for the pic.
@flashular; Hi! This article piques my curiosity. I've tweeted it. Great demo video. Great looking product. Are you going to sell kits? How does it compare to music industry tools for creating/manipulating voice? (e.g., &quot;All Your Base Are Belong to Us&quot;). Thanks! Site <br>
Thanks sitearm, thanks for your support. I had not planned to sell kits, mainly because all of the parts are available retail; I could put together a complete parts list and cost if there is interest. The chip used in the project ( Babblebot IC ) has musical qualities and could easily be connected to a MIDI keyboard using an OTS shield, and would make for an interesting mod. Probably the biggest difference between this project and commercial musical products is that this chip uses a pure synthesized voice, rather than a modulated human voice, which usually take the form of a vocoder., such as the MicroKorg. Curiously both technologies have been around for a while and are finally getting down the price where they are affordable, although the Babbletron even with a keyboard would be quite a bit cheaper than most vocoders. Here's an interesting article on the vocoder:<br> <br> <a href="http://www.npr.org/templates/story/story.php?storyId=126781688" rel="nofollow">The Vocoder: From Speech-Scrambling to Robot Rock</a>
That's good fun. Thanks for building and sharing!
Nice Project , Thanks For Sharing !!!!
Very cool, although my first thought was why build the hardware instead of writing an IOS or Android Tablet app which could easily be reconfigured.
Thanks for your comments, macrumpton. I wanted to create a standalone device (which was demonstrated at a Maker Faire) that was literally hands on for the general public; hence the candy colored buttons. The other reason is that I did not want to have to worry about iOS updates :-)
These text to speech chips are amazing! <br>A bit expensive though...
Not really. The <strong>Speakjet</strong> chip was about $25, the <strong>Babblebot</strong> chip is $20 and appears to be the same or very similar PIC chip.&nbsp;<br> <br> You can get the Babblebot here: <a href="http://www.ginsingsound.com/store" rel="nofollow">http://www.ginsingsound.com/store </a><br> <br> The Speakjet came with software called the &quot;<strong>Phraselator</strong>&quot; which is similar to what <strong>flashular</strong> shows in the post before this one.<br> <br> I found the Babblebot chip datasheet here: <a href="http://babblebot.net/Downloads/R288-SOUNDGIN-IC.pdf" rel="nofollow">SOUNDGIN CHIP</a><br> <br> The one thing I liked about the Speakjet a bit better was, instead of all the &quot;<strong>NC</strong>&quot; pins, they had it set to when you had a change-state on certain pins, it would say a prerecorded sequence... you could store 8 phrases or sound effects. This meant you could have a device say something like &quot;<em>High Water Level</em>&quot; without needing a microprocessor attached.<br> <br> If you are interested, here is the data sheet:<a href="http://www.magnevation.com/pdfs/speakjetusermanual.pdf" rel="nofollow"> SPEAKJET</a><br> <br> They are about $5 more... but I like the additional functions. You can get them here if you want to experiment: <a href="https://www.sparkfun.com/products/9578" rel="nofollow">Speakjet Supplier</a><br> <br> The software is available here: <a href="http://www.magnevation.com/software.htm" rel="nofollow">Speakjet Software</a><br> <br> Also found... Arduino Forum: <a href="http://forum.arduino.cc/index.php?topic=53345.0" rel="nofollow">Discussion on Speakjet</a><br> <br> I didn't download the Babblebot software as I don't have a chip to experiment with... but if it's anything like the Speakjet software, it should provide you with an ASCII string that you can just &quot;print&quot; to the chip to have it speak. The Babblebot software link is here: <a href="http://www.ginsingsound.com/software-banner" rel="nofollow">Babblebot Software</a><br> <br> For more in the differences between the two chips you can go <strong><a href="http://www.ginsingsound.com/component/kunena/16-frequently-asked-questions/68-whats-different-between-babblebot-and-speakjet?Itemid=0" rel="nofollow">HERE</a></strong>.<br> <br> And if you really want to get into it... <a href="http://ginsingsound.com/component/content/article/12-public/hardware/12-about-the-chip" rel="nofollow"><strong>GO HERE</strong></a><br> <br> Hope that was helpful.<br> Jerry<br>
Thanks for the links! <br>I'm just used to buying chips for a few cents, no more than $5. <br>For $20 though, it's a great piece of technology.
Oh... and I almost forgot... Nicely done, and a very good instructable too.
True, between $10-$20. One thing nice about the Babblebot IC, though is that you have total control over the synthesizer portion of the chip, which is not really demonstrated in this instructable other than pitch inflection. The phoneme set that is generated by this chip is not a recording; its generated by presetting a waveform synthesizer. Here is an example of what you get for your money with this chip as well as synthetic speech:<br> <br> <a href="http://vimeo.com/73832163" rel="nofollow">Babblebot IC as a synthesizer</a>
Oh, I would love to be there to see that things' face when this goes off. <br>
This is awesome!

About This Instructable




Bio: I am a multidisciplinary engineer actively interested in new technology and how it can be used to further interest in science, technology, engineering, and mathematics.
More by flashular:babbletron -  an interactive exploration of computer generated speech plugduino - Arduino based 120 Volt outlet controller Raspberry Pi as a DMX light controller 
Add instructable to: