Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to convert an text file to an mp3 file using espeak. Is it possible to do this? I'm trying to use espeak to create a song synthesis shell script that can convert text to a song.

share|improve this question
I think this page explains how to generate mp3 files (at least partially): – Anderson Green Aug 21 '12 at 21:50
And here's an explanation of how to do this using a shell script: – Anderson Green Aug 21 '12 at 21:54
Also, it's possible to do pitch shifting using a program called rubberband. – Anderson Green Aug 21 '12 at 22:12
up vote 9 down vote accepted

There's two ways of doing this; if you just want a wav file, see the first example, and for an mp3 conversion see the second.

1) Feed espeak your text file using the -f option, then use the --stdout option and redirect its data stream to file to create a valid wav file that plays correctly in any audio player.

espeak -f mytext --stdout > myaudio

Result checked with the file command (file myaudio):

myaudio: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz

2) If you want an mp3 conversion you will have to use a program to convert your file (or simply save it in audacity and export it as mp3). I have used ffmpeg (the git version), but you can use any program and just change the options:

espeak -f myfile --stdout | ffmpeg -i - -ar 44100 -ac 2 -ab 192k -f mp3 final.mp3

Result checked with file final.mp3:

final.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
share|improve this answer

I actually wrote a script achieving this... and it ended up working quite well.


share|improve this answer
I can't tell if that's the best or the creepiest thing I've heard today. Good work. – Oli Oct 24 '12 at 13:13
This is not a direct reply to the question, but it is so crazy that it deserves an upvote anyway! – mivk May 15 '13 at 19:35

The --stdout option to espeak will tell it to write the audio data to stdout instead of putting it through the audio device. From there you can pipe it into e.g. ffmpeg for conversion to the proper format.

share|improve this answer
Can you show any examples of this that you've found? – Anderson Green Aug 21 '12 at 22:11
I haven't found any; I just understand how programs work. – Ignacio Vazquez-Abrams Aug 21 '12 at 22:13
This question is perhaps relevant as well: – Anderson Green Aug 21 '12 at 22:35

espeak now has a -w option which outputs to wav
(It still would need to be converted to mp3 afterwards.)

espeak -f foo.txt -w foo.wav
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.