VoiceBox Shield

Replacement:DEV-10661. The new revision of this board includes a 3.5mm audio jack which makes it easier to connect your VoiceBox Shield to a speaker or other audio output. This page is for reference only.

The VoiceBox Shield can be mounted on top of your Arduino USB Board or Pro, to give it access to all capabilities of the SpeakJet voice and sound synthesizer. The Voice Box Shield uses the SpeakJet chip to convert serial commands into a great robot-sounding voice.

Populated on the VoiceBox Shield are the 18-DIP SpeakJet IC and a two stage audio amplifier with a potentiometer to set the gain. You can connect a speaker directly to the 'SPK+/-' pins, and get your Arduino-bot talking with very minimal work!

You can control the SpeakJet through either its serial line, or the eight event input lines which are connected to digital pins 5-12. A 3-way jumper allows you to connect either the software (D2) or hardware (D1) TX pin of the Arduino to the SpeakJet's serial input.

Also included on the shield are a 13x7 grid of 0.1" pitch through-holes for prototyping, the Arduino's reset button. Headers are not included, we recommend the 6 and 8-pin stackable headers.

**Replaces: **DEV-09624

VoiceBox Shield Product Help and Resources


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • RoBoTnErD / about 13 years ago / 2

    Random... has anyone tried to say dead using this shield? every sequence i have tried sounds terrible.

  • Member #410993 / about 11 years ago / 1

    hola alguien podria ayudarme para realizar un codigo que diga el abecedario completo con mi arduino y voicebox shiel... espero sus repuestas gracias..

  • mikem / about 12 years ago / 1

    There is a new Arduino OO library for controlling SpeakJet chip and works out of the box with this SparkFun VoiceBox shield:


    It supports speaking of: - raw individual phonemes - arrays of phonemes - words from a custom dictionary or the standard built-in dictionary - sentences (sequences of words) from a custom dictionary or the standard built-in dicitonary - integers from 0 to over 4 billion - strings of digits or IP addresses - creation and conversion of custom word-to-phonemes dictionaries

    • MikeMoretti / about 11 years ago / 1

      There's no library zip on your site. Is this something commercial we need to buy?

      • MikeMoretti / about 11 years ago / 1

        Ahh, nevermind, there were so many links on that page I couldn't see the one pointing to the zip. I found it. Thanks!

  • ortsac / about 13 years ago / 1

    Does this shield come in a kit form with a DIP IC and not SMT? I would like the DIP version of the Speakjet not soldered to the board so that I can mount it on an IC socket. I do do not want to do a surgery on the Speakjet when I add the TTS256 but rather do the surgery on the socket. My skill at soldering is not so great yet and so doing a surgery on an SMT could just ruin the shield.

  • TECH GEEK / about 13 years ago / 1

    Would this work with a 8ohm 1W speaker?

  • echus / about 13 years ago / 1

    This is a very fun little board. I am trying to build a looper and need all the D/I's I can get so I can have 12 notes in a scale. I think I can barely do it with 16 multiplexed inputs (so 4x4 pins)
    With this attached to the Arduino, can I use D5-D12 (Speakjet E0-7) for my input buttons? Will this interfere with the Speakjet or should I cut these pins so they don't connect?

  • viperspd / about 13 years ago / 1

    Could you please fix the links to the example code?

  • Member #155499 / about 13 years ago / 1

    I'm using this without an Arduino, and mounted a MAX232 (http://www.sparkfun.com/products/316) in the experimental section. I now have a nice module to which you apply power (3.3v and 5v both work!) and RS232 serial data, attach a speaker, and you get speech! Here's my simple Python code to drive it:
    import serial,time
    def phrase(a):
    return ''.join([chr(c) for c in a])
    aybabtu=phrase([20, 96, 21, 114, 22, 88, 23, 5, 8, 135, 8, 146, 5, 128, 153, 5, 170, 154, 8, 188, 5, 152, 5, 170, 8,128,146,8,135,8,144,5,8,191,162,5,8,134,187])
    sounds=phrase([200, 201, 202, 203, 220, 221, 222] * 10)
    class speakjet(object):
    def init(self,port='/dev/ttyAM1'):
    def say(self,s):
    def close(self):
    if name=='main':

  • Ksharber / about 13 years ago / 1

    flowcontrol! i always get a high on breakout pin 3...??? heeelp!

  • MobileWill / about 13 years ago / 1

    Can you use the other pins since they are connected to the event pins?

  • chh / about 14 years ago / 1

    Killer Spud - you just saved me a whole lot of work. I just got this board and started playing with it today. Having the second string play twice was driving me up the wall. I thought I was doing something wrong, myself.
    Is there a way to preload strings and play them with events? The EEPROM space seems to be awfully small for this kind of thing. What I'd like to do is create 5 or 10 phrases in Japanese (i.e. Hello, good morning, mama, Martha Martha the aliens have landed) and have them play based on various switches opening and closing on the arduino.
    And, is there a way to get rid of that "ready" phrase? I don't want it playing all the time.

    • MobileWill / about 13 years ago / 1

      Look at page 11 to get rid of the "ready" on startup. I haven't tired it yet. You can to set a bit in the EEPROM.

  • KillerSpud / about 14 years ago / 1

    I ran into a bit of a hurdle using the sample code. I always found that the second string would play twice, this was caused by the .print() function skipping from the first string to the second without stopping. A terminating character is needed to force .print() to stop sending (and not send arbitrary data) such as a 0).
    for example:
    char message[] = {20, 4, . . . , 191, 0};
    btw, I got a little confused by the way the compiler would optimize the second string out if it was never referenced.

  • wchill / about 14 years ago / 1

    Combine this with the cellular shield for prank calling fun?

  • Wiley Wiggins / about 14 years ago / 1

    No, it's working fine now. If you look at the pro 328 page it tells you to select duemilanove as the board in the arduino ide, I had been picking pro. All is well.

  • Wiley Wiggins / about 14 years ago / 1

    My fault. I had picked 'arduino pro' as the board instead of 'duemilanove'.

    • N8B / about 14 years ago / 1

      The pro and the duemilanove are almost the exact same circuit. You should be able to get anything that works on the Duemilanove to work on the Pro, there might need to be a few minor modifications though.
      If you are still within the 30 day return period and haven't modified the pro you got, you can swap out the pro for a duemilanove. Talk to customerservice@sparkfun.com

  • Wiley Wiggins / about 14 years ago / 1

    I'll see if I can get any other code to run on it first.

  • Wiley Wiggins / about 14 years ago / 1

    It looks like my arduino pro is hosed. It works when I use a duemilanove.
    It doesn't give me any errors when I upload to the board though.
    Sparkfun did send my arduino pro in the same box as their speaker, which has a big magnet in it. That didn't damage the arduino, did it?

    • MikeGrusin / about 14 years ago / 1

      A magnet won't erase FLASH memory. Contact us at techsupport at sparkfun and we'll see what we can do about your Pro.

  • Wiley Wiggins / about 14 years ago / 1

    I seem to be having some issues with the sample code. My voice shield gives a 'ready' when it powers on, but when I load the code up it gives a couple of the phoenemes in 'all your base' but most of the words are replaced with random sound fx like the 'ping' sfx. Are the codes in the sample out of date?
    This is stacked on an arduino pro 328.

Customer Reviews

No reviews yet.