Making the Raspberry Pi Speak



This is a short post on getting audio setup on my Raspberry Pi and then making it speak.


For the audio setup, I followed instructions on this website:


http://cagewebdev.com/index.php/raspberry-pi-getting-audio-working/


After the above steps, the first time I plugged in a pair of powered speakers to the Pi, I got a whole bunch of “journal” errors from the kernel. Luckily, they went away after a reboot. I have to live with the fact that installing stuff on Linux will always be a “transcendental” experience for me. 😉


To test audio, you can try:

aplay /usr/share/sounds/alsa/*


Once you are happy with this, the next step is to install pyttsx, which is a Python text-to-speech library. You can install it as follows:

wget https://pypi.python.org/packages/source/p/pyttsx/pyttsx-1.1.tar.gz
gunzip pyttsx-1.1.tar.gz
tar -xf pyttsx-1.1.tar
cd pyttsx-1.1/
sudo python setup.py install


In addition to the above, I also needed to install espeak, which I did as follows:

sudo apt-get install espeak


Now, to get some quality speech out of our Pi. Try the Python code below:


###############################################################################
# speech-test.py
#
# Author: electronut.in
#
# Description:
#
# Testing Raspberry Pi audio using pyttsx - Python Cross-platform
# text-to-speech wrapper
#
# test run:
#
# python speech-test.py "hello there"
###############################################################################

import sys
import pyttsx

# main() function
def main():
  # use sys.argv if needed
  print 'running speech-test.py...'
  engine = pyttsx.init()
  str = "I speak. Therefore. I am.  "
  if len(sys.argv) > 1:
    str = sys.argv[1]
  engine.say(str)
  engine.runAndWait()

# call main
if __name__ == '__main__':
  main()