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.