loading


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.
 

Suppliers

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

Step 2: Prototype Hardware

Contrary to the image presented by the large button panel, the babblebot is actually a small device. If you are considering using voice synthesis in your project but don't need a big user interface, you should consider wiring up a small breadboard concept first. Even if you are going to do a big build, you should still probably start with a breadboard design.

Pictured here is the babblebot sans the button panel, which is great for testing functionality. By stacking the Arduino, the GinSing shield, Sparkkun protoshield (with breadboard), and the LED matrix we have the basic electronics to implement the babbletron. Also pictured here is a potentiometer used to simulate the footswitch used in the final design to control voice pitch.

Since the shields all pass the Ardiuno pins, the only real work in building the prototype is to seat the LED shield and connect it (via jumpers preferably) to the pins. To connect the LED matrix display, wire shield D8 to display DIN, D9 to display CS, D10 to display CLK, 5V to display VCC, and GND to display GND as shown. The only other connections in the prototype are a potentiometer on the [ PWR, GND, A1 ] Arduino pins, and either a speaker or 1/8" stereo jack to amplifier.

Step 3: Prototype Software

The following discussion assumes that you are familiar enough with the Arduino to load and execute code on the device using the standard IDE. If you are new to Arduino, please refer to the "Getting Started" section on the Arduino website ( www.arduino.cc ).

1. Open up the IDE, and select the board and communication line associated with the Arduino. To verify you can try the sample "blink" program; if this works you are ready to load the babbletron code.

2.Download the Zip file from this page and uncompress it ( usually be double clicking it ). This will create a folder in your download directory that you can either run directly ( by double-clicking the "babbletron12.ino" file ) or copy into your Arduino sketchbook folder if you wish it to show up on your  menu.

3.Perform the build and run operation ( the arrow button in the IDE ). When the program starts, the display will flash briefly, and then you will hear "I am babbletron" audio output with an accompanying facial animation as seen in the video.

Note: This code base is built to accommodate the 64 button mux board, so if you are not planning on using the buttons you can remove this function by deleting the C_Mux tab, and then deleting the few references to the "buts" class in Z_Main. This will also free up digital inputs D5,D6,D7, D11, D12, and D13 for other uses as you see fit.

Step 4: Enclosure

Building the enclosure involves several steps that for convenience are presented on a single page here. As you may choose to build a different style of cabinet use this step as a guideline. Take time following these steps; no significant skills are required other than some patience and a somewhat steady hand. If you are new to this process, its best to practice on scrap material to make sure you understand what is required and what the outcome will be.

1.Design the panel decal. Included on this page is a PDF file that matches the control panel layout you see here, although you will most likely want to design your own. This file was created using Open Office and exported as a PDF, but you can use whatever drawing program you feel comfortable with. Once the PDF file is created, you can take the file to a local printer ( i.e. OfficeMax ) and have it printed on a large format printer and laminated. This results in a waterproof surface that is ideal for mounting on the plywood backing.

2.Cut the panel pieces. Lay out the panel on the plywood and measure the panel size against the decal. Use the remaining plywood to create side panel pieces. As you can see in the picture, the sides can be cut from the same piece and measured to create the tilt as desired.

3.Mark hole locations. Cut out any opening (such as the display window used here) and mark drill locations. To do this, tape the decal to the panel, and use a craft knife and small pilot bit to avoid tearing or wrinkling the decal. Once the locations are marked remove the decal and put aside for later.

4.Cut the panels. Using a jig saw and a drill, cut out any non-drill openings by drilling into the corners and then squaring off using the saw a pictured. Using the pilot holes from the last step, drill the button holes. This project uses large arcade buttons, so a spade bit was required; if you use a spade bit be sure to go easy on the wood so as not to rip parts off the back of the panel.

5.Assemble and add bracing. Secure the front panel to the side panels by pre-drilling holes in the font panel that line up with the side panels using a bit slightly smaller than the screw you are using. Finish the hole with a counter sinking bit so the screws will sit flush, and then screw the pieces together. Carefully turn over the enclosure and measure, cut, and screw the bracing pieces from the 2x2 stud piece. Use the same screwing technique to attach and sink the screws.

6.Sand and paint. Fill the screw holes with wood filler, and sand the outside surfaces of thenenclosure with 150 grit sandpaper. Inspect and clean any drill holes or openings that may have defects on the back side of the panel to ensure the buttons will go in easy and flush. Paint with spray paint to a clean finish, about 3 coats.

7.Apply  the decal. Carefully cut out two button holes with an craft knife on the template on opposite corners using a button nut as a guide; this will allow you to align the decal with the holes. Mask off the panel from the rest of the enclosure and apply a light coat of spray adhesive glue as per the directions on the product. Align the decal using the guide holes and press and let dry.

8.Mount buttons. Using the craft knife trace the outline of the holes by running the knife around the drilled openings and remove the material; with practice this will take only a few minutes. Mount the buttons on the panel first loosely until all are mounted, then orient the button solder tabs from underneath to all point the same direction and tighten. Aligning the tabs will make the next step easier.

Step 5: Button Wiring

If you are not using the button panel you can skip this step and replace it with one that is consistent with wiring your own panel interface.

In this design, we use 64 buttons, which allows for all 58 phonemes, 2 inflections, 2 time delays, and 2 record / play buttons. The multiplexer shield can support this many buttons by scanning an 8 x 8 grid comprised of rows and columns and checking the state of the current row and column to form a complete circuit. When a button is pressed, the corresponding row and column for that button will provide a zero volt signal on the mux output; otherwise it will be 5V.

The mux supports 64 buttons in an 8x8 pattern, which at first seems impossible given the layout on the panel, but in reality the physical location of the buttons do not matter - only that each button has its own unique row and column line. Since there are 8 rows and 8 columns, there are a total of 16 lines from the wired panel that will connect to the mux shield.

Wiring the buttons first involves wiring each row to a set of eight buttons each. If the buttons are aligned, you can pick one side of the solder tabs ( i.e. left side ) and wire the first eight buttons in proximity. Likewise, the next row will be tied to the next eight buttons, and so on until all eight rows are wired. This will solder 1/2 of the connections as 8 rows with 8 buttons each. Once the rows are wired, use the same operation for the 8 columns using the same process.

Note that deciding which row and column for any given button becomes hard to figure out when the grid is not regular, but this is easily determined with some debug prints in the code.

Step 6: Breadboard Mux

If you are not using the button panel you can skip this step and replace it with one that is consistent with wiring your own panel interface.

Although in the end the multiplexer (mux) shield will be built permanently, it is a good idea to verify the circuit works by breadboarding it as we did earlier with the rest of the system. To create the mux breadboard, follow these steps:

1.Start with open breadboard shield. If you only have one protoshield, you can remove the breadboard wiring you used when prototyping the display; it should no longer be needed now that you have verified operation.

2.Lay out the ICs. As you can see in the picture, lay out the ICs across the center of the breadboard end to end. This is also how you will arrange the protoshield so it will be easy to transfer. Make sure that both ICs have pin 1 (dot) aligned to the top of the board. From this point on we will refer to the top IC as the "column" IC, and the bottom IC as the "row" IC.

3.Wire the shield power connections ( GND, +5V ). Although not required, using premade jumpers for this operation will make it very easy and ensure solid connections on the shield headers. Both ICs will have pins 6 ,7,8 ( E, VEE, VSS ) wired to ground, and pin 16 ( VDD ) to +5V.  Wire the pin 3 Z connections for each IC; the row IC will go to the resistor ( 4.7K ) and then to +5V, and the column IC will go directly to ground. Finally wire from the row IC pin 3 Z to A1 on the shield.

4.Wire the shield address connections ( S1, S2, S3 ). Each chip has 3 lines that control the address that the mux will be inspecting. The Arduino will set these lines for each IC to tell the mux what row/column to pass to the analog line for detection. There are 3 lines since we are using eight possible addresses. On the chip they are pins 9,10, and 11 ( S1 , S2, S3 ). For the row connection connect  row IC S1,S2, S3 to pins 11,12, and 13 on the shield respectively. For the column connection connect column IC S1,S2,S3 to pins 5,6, and 7 respectively.

5.Wire the shield sensor connection ( A1 ). When a particular row and column address is selected by the Arduino, the mux will connect that circuit to the Z in/out of the two ICs. By tapping off the Z pin of the row IC, you can sense if that row/column has been connected. To determine this on the Arduino, connect the row IC pin 3 ( Z ) to the shield A1. The code will check for the value of A1 determine if a button was pushed.

6.Wire the button matrix connections. In the picture you can see that an additional breadboard was used to bridge between the panel wires and the breadboard wires; this make its physically easy to connect the two components, but also helps lay out a connector that we will build using a DB25 connector. This is not required, but will make it easier to manage to two components separately. On the row IC, connect the 8 rows lines to pins 1,2,4,5,12,13,14, and 15. Likewise connect the column lines to the same pins on the column IC.

Step 7: Protoshield Mux

If you are not using the button panel you can skip this step and replace it with one that is consistent with wiring your own panel interface.

The Sparkfun Arduino protoshield will be used in this step to harden the mux shield made in the previous step. In addition, we will add a DB25 connector to make it easy to install on the panel, but this is not required. We will start by placing two 16 pin IC sockets on the protoshield slightly offset to allow for more room when adding the panel wires.

If you are new to using a shield like this, the basic idea is to place things to be wired together next to each other, and then create a wire bridge that can be used to flow solder between the two holes on the connection. The first few pictures show in detail how the wires are placed and how they look on the bottom when soldered together. Note that the back of the board does not have any wires; just solder connections as there is no trouble overlaying wires if they are insulated on the top side.

Following the same procedure as was used to wire the breadboard, we will first solder the power lines, then the address lines, then the sensor line, and finally the panel wires. As the last step we wire the jumper headers and filter caps that came with the kit. The other components in the protoshield kit are not used here.

Pictured here is a use of the DB25 connector to allow this shield to break away from the panel for later modifications and repairs if need be. We prefer to use this method also to minimize wire length and complexity during the build.

Step 8: Electronics Package

In this step we will be assembling the electronics package, which consists of the Arduino, the mux shield, the synth shield, and the LED matrix display. The only other electrical connections outside of this package are the front panel buttons and the back panel jacks.

1.Solder LED Matrix lines. As per the earlier schematic, the Arduino pins D8, D9, D10, +5V, and GND will be connected to the LED matrix display. Solder these lines into the protoshield next to the corresponding pins. In the example here, jumper wires were used with one end cut off and soldered to the board to allow removal of the display.

2.Solder pedal lines. If using the pedal potentiomer ( or another sensor ) you will need a +5V, GND, and sensor line ( A1 in this case ) that is best connected to the protoshield; in this way all external wires other than the speaker / line out will be wired into this board. In this example we run these lines out to the DB25 connector so that all external connections are done through one cable bus.

3.Stack shields. Although it does not strictly matter, we suggest a stack that has the Arduino on the bottom, the mux shield in the middle, and the Ginsing board on top; this puts the most separation between the Arduino processor and Ginsing processor and reduces EMI between the boards; it also puts some strain relief on the wires to the console.

4.Load the mux ICs. Now that all soldering is complete on the mux shield, populate the IC sockets and tame the wires down so that the shield is stackable.

5.Build the display panel. Using a small piece of Masonite board, layout and drill holes to mount the stack to the board, and to mount the display. In this case the display is located next to the Ginsing board and slightly above so standoff bolts were used to place the display close to the window opening on the panel.

Step 9: Final Assembly

With the enclosure ready, buttons wired, and electronics package ready, we now simply put the pieces together to complete the project.

1.Wire the panel to the mux shield lines. As per our previous steps you can connect the row/column lines from the panel to the row/column lines on the mux shield. Pictured here is the other side of the DB25 connector attached to the row and column lines that match the connector on the mux shield.

2.Mount electronics package. To mount the display from the bottom, create a window barrier out of masonite and fush mount standoff screws. Attach the barrier to the panel using short hobby wood screws. Using an extra set of nuts, you can set the offset distance between the panel front and the electronics package to ensure an accurate fit.

3.Build and mount jack plate. Using a small piece of masonite cut holes for the audio output jack and the pedal switch (if appliccable). Here we are using a stereo RCA jack to feed an amplifier at line level, and a 1/4 strereo jack wired with +5V, GND, and A0 to match the previous breadbard prototype.

4.Build and mount bezel. Using a small piece of clear plastic or lexan ( we used a colored clipboard at OfficeMax ), score the material to match the size of the bezel to create on both sides and snap off cleanly. Using fine sandpaper or emory board smooth the cuts and slightly round the corners. Attach the bezel using thin two sided tape cut around the overlap between the bezel and the panel.

Step 10: Buld Button Map

Since the wiring between the button row and columns and the mux row and columns where not explicitly defined, you will need to match the buttons with the phonemes associated with the buttons in code. This is a simple process, and aside from setting the output volume (via the thumbweel) on the GinSing board no other calibration is needed.

To perform this operation, you will first need to find out what button code is generated when each button is pushed. This can be done by adding this line to the loop() code in the Z_Main source file:



// read the button panel for a new input

 
  int newButton = buts.update();      // this line is already in the file
  Serial.println ( newButton );       // this line has been added to print button value


When the program is run now, you will see the value of the button pressed appear in the display. Using the worksheet included here, you can map the values to the corresponding button on the panel. So for instance in this wiring example when the "a" button was pressed on the panel the printout read "3". Do this for every button, noting that if the wiring is correct each button will have its own unique value from 1 to the number of buttons you have.

The final step in setting up the mapping is to modify the table labeled but2Allophone[] in the Z_Main source file. The current file looks like this:

 

 byte but2Allophone[] = {  _HO , _DE , _IE , _A , _I , _DO , _HE , _AA , _PE , _R ,
                           _TS , _UE , _OR , _U , _PO , _V , _AIR , _BO , _AE , _OB ,
                           _AU , _EB , _BE , _CH , _SE , _SH , PLY , _TH , REC , _T ,
                           _SO , _THH , _E , _ER , _ED , _GE , _OD , _F , _EE , _GO ,
                           _OI , _OU , _OE , _M , _LE , _LO , _OO , _NE , _NO , _KE ,
                           _NGO , _EK , _NGE , _KO , _J , _OK , _Z , _PITCHUP , _W , _PA1 ,
                           _Y , _PITCHDN , _ZH , _FD2 };

This table maps the button value to the phoneme to be played. For example, the first item in this table is _HO, which maps to the zeroth button in the button table as per the chart. To rebuild this table, start with an empty array, and go one be one by button value and enter the corresponding phoneme into the array.
 

Step 11: Congratulations!

If you have made it this far in the instructable, you are to be commended on creating a great sounding and great looking project to amaze your friends and confound your enemies. It is also possible that you just skipped to the end to find out more or ask questions.

In the case of the former, your reward comes from a job well done, in the case of the latter, you can find out more by visiting the project website at  www.engeldinger.com. If you have a question or need clarification feel free to comment in the instructable or drop us a note on the website.
<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.
http://www.ginsingsound.com
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>
nice
This is awesome!

About This Instructable

18,113views

184favorites

License:

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: