我想使用 espeak 将文本文件转换为 mp3 文件。可以这样做吗?我正在尝试使用 espeak 创建一个可以将文本转换为歌曲的歌曲合成 shell 脚本。
答案1
有两种方法可以做到这一点;如果您只想要一个wav
文件,请参见第一个例子;如果您想要mp3
转换,请参见第二个示例。
1)espeak
使用该选项提供文本文件-f
,然后使用该--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
答案2
我实际上编写了一个脚本来实现这一点......而且效果很好。
https://github.com/divVerent/ecantorix
例子:https://github.com/downloads/divVerent/ecantorix/sarastro.ogg
答案3
espeak 现在有一个 -w 选项,可以输出为 wav
(之后仍然需要转换为 mp3。)
espeak -f foo.txt -w foo.wav
答案4
espeak选项--stdout
将告诉它将音频数据写入 stdout,而不是通过音频设备。从那里,您可以将其导入 ffmpeg 等,以转换为正确的格式。