### How to convert some WAVe files to u-law, a-law or gsm on Linux? ###


Many VoIP solutions (like Asterisk) are using the u-law, a-law or gsm sound format to store and play audio. To convert any wave file to one of these formats, you can use a very handy tool, called sox.

Here are some examples:
 * Converting a WAVe file to u-law
  sox filein.wav -r 8000 -t ul -U -c 1 fileout.ulaw

 * Converting a WAVe file to a-law
  sox filein.wav -r 8000 -t al -A -c 1 fileout.alaw

 * Converting a WAVe file to gsm
  sox filein.wav -r 8000 -t gsm -g -c 1 fileout.gsm

What does these option mean?
 filein.wav - the input file
 -r 8000 - resampling the input file to 8 KHz
 -t xx - setting output format to xx (ul, al, gsm)
 -U - setting the output encoding to U-law
 -A - setting the output encoding to A-law
 -g - setting the output encoding to gsm
 -c 1 - only one channel (mono)
 fileout.xxx - the output file

Now, what if you don't have one or two such files to convert, but THOUSANDS? No problem, just use a "for" loop!

 for myfiles in *.wav ; do sox $myfiles -r 8000 -t ul -U -c 1 `basename $myfiles .wav`.ulaw ; done

Note, that I also used basename here to write new files without their old ".wav" extensions.