Vorrei convertire un file di testo in un file mp3 usando espeak. È possibile farlo? Sto cercando di usare espeak per creare uno script di shell di sintesi di brani che può convertire il testo in un brano.
Vorrei convertire un file di testo in un file mp3 usando espeak. È possibile farlo? Sto cercando di usare espeak per creare uno script di shell di sintesi di brani che può convertire il testo in un brano.
Risposte:
Ci sono due modi per farlo; se vuoi solo un wav
file, vedi il primo esempio e per una mp3
conversione vedi il secondo.
1) Alimenta il espeak
tuo file di testo usando l' -f
opzione, quindi usa l' --stdout
opzione e reindirizza il suo flusso di dati su file per creare un wav
file valido che viene riprodotto correttamente in qualsiasi lettore audio.
espeak -f mytext --stdout > myaudio
Risultato verificato con il file
comando ( file myaudio
):
myaudio: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz
2) Se vuoi una conversione mp3 dovrai usare un programma per convertire il tuo file (o semplicemente salvarlo in audacity
ed esportarlo come mp3). Ho usato ffmpeg
(la versione git), ma è possibile utilizzare qualsiasi programma e modificare le opzioni:
espeak -f myfile --stdout | ffmpeg -i - -ar 44100 -ac 2 -ab 192k -f mp3 final.mp3
Risultato verificato con 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
In realtà ho scritto una sceneggiatura per raggiungere questo obiettivo ... e alla fine ha funzionato abbastanza bene.
https://github.com/divVerent/ecantorix
Esempio: https://github.com/downloads/divVerent/ecantorix/sarastro.ogg
L' --stdout
opzione espeak gli dirà di scrivere i dati audio su stdout invece di metterli attraverso il dispositivo audio. Da lì è possibile reindirizzarlo ad esempio in ffmpeg per la conversione nel formato corretto.