Wednesday, January 25, 2012

How to Convert Text Document to Speech on Ubuntu Using eSpeak

Ubuntu espeak is a speech synthesizer for English (and several other languages) which will convert text to speech.
You can straight away execute espeak command on your Ubuntu machine without any installation or configuration.
In this article, let us review 8 examples of espeak command.

espeak Example 1: Speak the words specified in command line

This is the default usage.
# espeak --stdout 'words to speak' | aplay
Note: The above may also display the following message: “Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 22050 Hz, Mono”

espeak Example 2: Speak the words specified in stdin

This will take the words interactively from the standard input and convert it to speech.
# espeak --stdout | aplay

espeak Example 3: Speak your document

This will convert the text from the mydocument.txt to speech.
# espeak --stdout -t mydocument.txt | aplay

espeak Example 4: Generate voice file from text document

Convert your text file to an audio file as shown below.
# espeak -t mydocument.txt -w myaudio.wav

Customizing espeak

If you find the default speech synthesizing is not good, you can try to customize it as explained below.

espeak Example 5: List all available voice languages

# espeak --voices
Pty Language Age/Gender VoiceName       File        Other Langs
 5  af             M  afrikaans         af
 5  bs             M  bosnian           bs
 5  ca             M  catalan           ca
 5  cs             M  czech             cs
 5  cy             M  welsh-test        cy
 5  de             M  german            de
 5  el             M  greek             el
 5  en             M  default           default
 5  en-sc          M  en-scottish       en/en-sc    (en 4)

espeak Example 6: Choose a different voice language

The following will use “en-uk” – British english to translate the text to speech.
# espeak -v en-uk --stdout 'reading tips & tricks in TGS' | aplay

espeak Example 7: Increase or Decrease the number of spoken words per minute.

The default is 160 words per minute. You can reduce it using option -s as shown below.
# espeak -s 140 -f mydocument.txt | aplay

espeak Example 8: List the available espeak voices in specific language

The following example will display all possible english language variation that you can use for your text to speech conversion.
# espeak --voice=en
Pty Language Age/Gender VoiceName       File        Other Langs
 2  en-uk          M  english           en/en       (en 2)
 3  en-uk          M  english-mb-en1    mb/mb-en1   (en 2)
 2  en-us          M  english-us        en/en-us    (en-r 5)(en 3)
 5  en-sc          M  en-scottish       en/en-sc    (en 4)
 5  en             M  default           default