We are converting a lot of different files to our costumers.
Usually we get the files in WAV, or WMA files, most of them in WMA, as it is microsoft recorders favorite codec.
Unfortuneatly, Asterisk cannot use that codec, so we have to convert it to something that Asterisk understands.
To save time, and all the manual work we use this little handy script that converts WMA to both wav mono 16bit 8Khz, sln format, and gsm.
That way asterisk can choose the format that is most similar to the codec that runs in the channels.
for i in *.wma; do
wav=$(basename $i .wma).wav
sln=$(basename $i .wma).sln
gsm=$(basename $i .wma).gsm
ffmpeg -i $i -ar 8000 $wav
sox $wav -t raw -r 8000 -s -2 -c 1 $sln
scale=$(sox $wav /tmp/foo.wav stat -v 2>&1)
if [ $scale != "1.000" ]; then
echo -n "Rescale $i..."
cp $wav $tmpfile
sox $tmpfile -v $scale $wav
for i in *.wav; do sox $i -r 8000 -c 1 $gsm resample -ql; done