Search:  
Gentoo Wiki

TIP_Converting_AMR_to_WAV_and_vice_versa

This article is part of the Tips & Tricks series.
Terminals / Shells Network X Window System Portage System Filesystems Kernel Other

Contents

Introduction

Playing around with modern mobile phones you have probably got to the moment when you wanted to convert a favourite WAV (MP3, OGG Vorbis etc.) file to AMR or vice versa - AMR to WAV and Co.

Note: the scripts posted here are not rocket science: it might work out of the box or with a little tweaking from your side.

Requisites

Emerge sox, vorbis-tools and lame. Build the 3GPP reference converter files (compiled with these changes: makefile without -DETSI and add #include "sp_dec.h" to decoder.c).

Scripts

The script is tweaked taking into accound the usual defaults. You might still need some changes. It also corrects the part that was giving a headache in the original script: $FILE.$TEMP to $FILE.raw. The script uses decoder for converting the AMR to RAW, then sox for RAW to WAV and then oggenc or lame encodes the WAV to OGG Vorbis or MP3. Change the sox, oggenc and lame options so as to suit your needs. With this configuration, I didn't notice loss in quality with AMRs created by a Siemens S75.

Convert AMR to OGG Vorbis

File: /usr/local/bin/amrtoogg
#!/bin/bash

# By Aquarion - Aquarion@Aquarionics.com
# Do what you want with it, it's not rocket science.

##Change these:
#Wherever you put encode and decode when you compiled them:
CODEC=/usr/local/bin

#Temporary directory. Chances are you've already got this set
TEMP=/tmp

#Where do the final MP3s go?
FINAL=/home/user/media/siemens/ogg

for file in *.amr; do 
	FILE=`echo $file | sed -e "s/.amr//"`; 
	echo -n "$FILE [AMR] -> [RAW]"
	$CODEC/decoder $file $TEMP/$FILE.raw > log.std 2> log.err; 
	echo -n " -> [WAV] "
	sox -r 8000 -w -c 1 -s $TEMP/$FILE.raw -r 44100 \
		-w -c 1 $TEMP/$FILE.wav > log.std 2> log.err; 
	echo -n " -> [OGG] "
	oggenc $TEMP/$FILE.wav -q 5 -o $FINAL/$FILE.ogg --quiet \
		-t "$FILE" -a "Sanda" -l "Anul nou" -d `date +%Y`
	echo  " :-) "
	rm $TEMP/$FILE.wav;
	rm $TEMP/$FILE.raw;
done

Convert AMR to MP3

File: /usr/local/bin/amrtomp3
#!/bin/bash

# By Aquarion - Aquarion@Aquarionics.com
# Do what you want with it, it's not rocket science.

##Change these:
#Wherever you put encode and decode when you compiled them:
CODEC=/usr/local/bin

#Temporary directory. Chances are you've already got this set
TEMP=/tmp

#Where do the final MP3s go?
FINAL=/home/user/media/siemens/mp3

for file in *.amr; do 
	FILE=`echo $file | sed -e "s/.amr//"`; 
	echo -n "$FILE [AMR] -> [RAW]"
	$CODEC/decoder $file $TEMP/$FILE.raw > log.std 2> log.err; 
	echo -n " -> [WAV] "
	sox -r 8000 -w -c 1 -s $TEMP/$FILE.raw -r 44100 \
		-w -c 1 $TEMP/$FILE.wav > log.std 2> log.err; 
	echo -n " -> [MP3] "
	lame $TEMP/$FILE.wav $FINAL/$FILE.mp3 --preset standard --silent \
		--tt $FILE --ta Sanda --tl Anul\ Nou --ty `date +%Y`
	echo  " :-) "
	rm $TEMP/$FILE.wav;
	rm $TEMP/$FILE.raw;
done

Convert OGG, MP3 etc. to WAV

For converting OGG vorbis or MP3 to AMR look at the replies (search for ffmpeg; never tried it).

See also

External links

Retrieved from "http://www.gentoo-wiki.info/TIP_Converting_AMR_to_WAV_and_vice_versa"

Last modified: Fri, 05 Sep 2008 23:32:00 +0000 Hits: 7,198