Eu fiz isso:
me@riverbrain:~/sgf$ echo "test" | text2wave -otype raw -F 16000 >> test.raw
que produziu um arquivo de áudio sem cabeçalho. O maravilhoso desse arquivo é que ele pode ser concatenado (usando cat
, como texto) com outro arquivo de áudio bruto.
Claro, eu tenho um problema. O problema é que ainda não consigo jogar.
me@riverbrain:~/sgf$ play test.raw
play FAIL formats: bad input format for file `test.raw': sampling rate was not specified
e também, ao especificar a taxa de amostragem
me@riverbrain:~/sgf$ play -r 16000 test.raw
play FAIL formats: bad input format for file `test.raw': data encoding was not specified
Quando procurei algumas informações em "codificação", tive a sensação de que tinha muito a ver com a arquitetura do processador, mas talvez eu esteja errado. De qualquer forma, não consigo encontrar nenhuma documentação sobre como 'perguntar' ao computador qual é a codificação de dados do arquivo de áudio bruto. E também sei qual é a taxa de amostragem, devido a defini-la, mas isso é o máximo que posso obter.
Respostas:
Pode variar - mas pelo menos para mim, o text2wave produz PCM inteiro assinado de 1 canal, 16 bits. Eles são razoavelmente normais - e ficará muito claro quando você os acertar (por exemplo, se você não assinou um número inteiro por engano, obterá um som extremamente distorcido)
Com o jogo, isso se parece com:
Esses parâmetros estão configurados no Festival em algum lugar, eu suspeito. Alguns deles também podem ser codificados.
A única coisa dependente da arquitetura que você pode encontrar é grande versus pouco endian; na minha máquina little-endian, o Festival está escrevendo little-endian; se eu movesse esse arquivo para uma máquina big endian, provavelmente precisaria adicionar
-L
. Setext2wav
fossem executados em uma máquina big endian, não tenho certeza se ele gravaria dados big ou little endian.fonte
Você provavelmente pode criar seu próprio cabeçalho RIFF. Um pouco de bashing deve fazê-lo .. e apenas colocar o cabeçalho nas suas outras peças ...
Este link mostra o layout do cabeçalho: O formato de arquivo Canonical WAVE
Há também um link relacionado no SO: Converter dados de áudio RAW em WAV com script , mas as respostas mplayer / mencoder têm uma contagem de zero marcada. No entanto, parece que o SoX funciona.
O SoX é mencionado nos links acima e está disponível no repositório do Ubuntu; Suponho que também esteja nos outros.
PS ... Eu apenas tentei usar
play
(não sabia que existia) e descobri que é SoX! ... O link SO fornece um exemplo, copiado aqui:sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>
Se você não conseguir fazê-lo funcionar com o sox , talvez o mplayer / mencoder ou o cabeçalho RIFF o ajudem.
fonte
Use em
aplay
vez deplay
para reproduzir um arquivo bruto, desta forma, você pode especificar que é um áudio cru pela opção -t:fonte