Eu gostaria de converter um arquivo de texto em um arquivo mp3 usando o espeak. É possível fazer isso? Estou tentando usar o espeak para criar um script de shell de síntese de música que possa converter texto em uma música.
Eu gostaria de converter um arquivo de texto em um arquivo mp3 usando o espeak. É possível fazer isso? Estou tentando usar o espeak para criar um script de shell de síntese de música que possa converter texto em uma música.
Respostas:
Existem duas maneiras de fazer isso; se você quiser apenas um wav
arquivo, veja o primeiro exemplo e, para uma mp3
conversão, veja o segundo.
1) Alimente espeak
seu arquivo de texto usando a -f
opção, use a --stdout
opção e redirecione seu fluxo de dados para arquivo para criar um wav
arquivo válido que seja reproduzido corretamente em qualquer reprodutor de áudio.
espeak -f mytext --stdout > myaudio
Resultado verificado com o file
comando ( file myaudio
):
myaudio: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz
2) Se você quiser uma conversão de mp3, precisará usar um programa para converter seu arquivo (ou simplesmente salvá-lo audacity
e exportá-lo como mp3). Eu usei ffmpeg
(a versão git), mas você pode usar qualquer programa e apenas alterar as opções:
espeak -f myfile --stdout | ffmpeg -i - -ar 44100 -ac 2 -ab 192k -f mp3 final.mp3
Resultado verificado com 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
Na verdade, eu escrevi um script para conseguir isso ... e acabou funcionando muito bem.
https://github.com/divVerent/ecantorix
Exemplo: https://github.com/downloads/divVerent/ecantorix/sarastro.ogg
A --stdout
opção de falar diz para gravar os dados de áudio no stdout, em vez de colocá-los no dispositivo de áudio. A partir daí, você pode canalizá-lo para, por exemplo, ffmpeg para conversão para o formato correto.