Resolvendo algumas dores de cabeça com o Sox.

Muitas pessoas tem dificuldade na conversão dos arquivos de áudio para o Asterisk. A melhor forma, que eu conheça, é convertendo os mesmo para o formato gsm. Neste post mostrarei algumas tricks para vocês.

Bom, para convertermos os áudios para o formato gsm, utilizaremos o Sox. Vamos começar instalando ele, imaginando que você utilize Debian, isso é possível com o seguinte comando:

# aptitude install sox libsox-fmt-all

No comando acima estaremos instalando dois pacotes, o primeiro que é o próprio programa Sox e o segundo que é um pacote com todos os formatos disponíveis para o Sox utilizar. Após a instalação, você pode rodar o comando abaixo para confirmar se a instalação ocorreu corretamente:

# sox --version

O comando deverá retornar algo parecido com isso: “sox: SoX v14.0.1”. Agora poderemos converter para o formato gsm. Segue um exemplo de conversão do formato wav para gsm:

# sox input_file.wav -r 8000 -g -c 1 output_file.gsm resample -ql

No lugar do <input_file.wav>, você poderá colocar outros formatos, como por exemplo, mp3. E, óbvio, substitua o nome do <input_file.wav> para o nome do seu arquivo de entrada e o <output_file.gsm> para o nome do seu arquivo de saída (o arquivo convertido).

Para o Asterisk poder executar o áudio na aplicação Playback(), é necessário que o mesmo possua permissão sobre o arquivo. Com o seguinte comando é possível fazer isso:

# chmod 755 output_file.gsm

Novamente, substitua o <output_file.gsm> pelo nome do arquivo convertido.

Agora uma maneira de converter todos os áudios de uma pasta e modificar as permissões, em um único comando:

# for i in *.wav; \
do sox $i -r 8000 -g -c 1 $(basename $i .wav).gsm resample -ql \
chmod 755 $(basename $i .wav).gsm; done

Para chamar o áudio no Asterisk faça da seguinte maneira:

exten => _X.,n,Playback(output)

Se você deseja aumentar o volume do seu áudio use o comando abaixo. Lembrando que o volume normal é 1.0, ou seja, para diminuir o volume você deverá utilizar 0.9, 0.8, assim por diante. E se você utilizer 2.0 o Sox aumentará o volume em 100%.

# sox -v 1.5 input_file output_file

Notas:

  • Quando for executar o Playback() não se deve colocar a extensão do arquivo. O Asterisk irá buscar o arquivo com o mesmo formato do codec do canal. Se o arquivo não existir, o Asterisk realizará a transcodificação do áudio para o formato existente, desde que o Asterisk suporte o formato.
  • Quando executar os comandos para converter os áudios, o Sox dirá que o efeito resample está obsoleto. Porém ele irá converter normalmente.
  • Se você utilizar espaço nos nomes dos arquivos de áudio, o comando para converter o formato de vários arquivos não vai funcionar. Lembre-se, aqui é Linux, facilite sua vida, não coloque espaço nos nomes dos arquivos, utilize o underline.
Esse post foi publicado em Dicas e marcado , . Guardar link permanente.

Deixe um comentário