Retired!

This is a retired product, but fear not as there is a newer, better version available: DEV-10661

Creative Commons images are CC BY-NC-SA 3.0

Retired RETIRED

This product has been retired from our catalog and is no longer for sale.

This page is made available for those looking for datasheets and the simply curious. Please refer to the description to see if a replacement part is available.

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.

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

Documents:

Replaces: DEV-09624

Comments 24 comments

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

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

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

    http://www.open.com.au/mikem/arduino/SpeakJet

    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

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

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

  • 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.

  • Would this work with a 8ohm 1W speaker?

  • 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?

  • Could you please fix the links to the example code?

  • 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© 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’):
    self.s=serial.Serial(port,
    9600,
    serial.EIGHTBITS,
    serial.PARITY_NONE,
    serial.STOPBITS_ONE)
    time.sleep(1)
    def say(self,s):
    self.s.write(s)
    time.sleep(1)
    def close(self):
    self.s.close()
    if name==‘main’:
    sp=speakjet()
    sp.say(aybabtu)
    sp.close()

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

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

  • 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.

    • 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.

  • 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.

  • Combine this with the cellular shield for prank calling fun?

  • 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.

  • My fault. I had picked ‘arduino pro’ as the board instead of ‘duemilanove’.

    • 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

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

  • 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?

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

  • 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.


Related Products