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 wavarquivo, veja o primeiro exemplo e, para uma mp3conversão, veja o segundo.
1) Alimente espeakseu arquivo de texto usando a -fopção, use a --stdoutopção e redirecione seu fluxo de dados para arquivo para criar um wavarquivo válido que seja reproduzido corretamente em qualquer reprodutor de áudio.
espeak -f mytext --stdout > myaudio
Resultado verificado com o filecomando ( 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 audacitye 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 --stdoutopçã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.