从espeak生成mp3文件

我想使用espeak将文本文件转换为mp3文件。 是否有可能做到这一点? 我正在尝试使用espeak创建一个可以将文本转换为歌曲的歌曲合成shell脚本。

有两种方法可以做到这一点; 如果您只想要一个wav文件,请参阅第一个示例,对于mp3转换,请参阅第二个示例。

1)使用-f选项espeak文本文件,然后使用--stdout选项并将其数据流重定向到文件以创建在任何音频播放器中正确播放的有效wav文件。

 espeak -f mytext --stdout > myaudio 

使用file命令( file myaudio )检查结果:

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

2)如果你想要一个mp3转换,你将不得不使用一个程序来转换你的文件(或者只是将其保存为audacity并将其导出为mp3)。 我使用过ffmpeg (git版本),但你可以使用任何程序,只需更改选项:

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

使用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 

我实际上写了一个实现这个目的的脚本……它最终工作得很好。

https://github.com/divVerent/ecantorix

示例: https : //github.com/downloads/divVerent/ecantorix/sarastro.ogg

espeak的--stdout选项将告诉它将音频数据写入stdout而不是通过音频设备。 从那里你可以将它传输到例如ffmpeg以转换为正确的格式。

espeak现在有一个-w选项输出到wav
(之后仍然需要转换为mp3。)

 espeak -f foo.txt -w foo.wav