Перекодирование записей звонков
Частенько приходится перегонять записи телефонных разговоров в другие форматы.
И постоянно приходится гуглить по этому поводу в поисках рабочих скриптов. Посему попробую сделать подборочку разных скриптов.
Начнем-с.
gsm -> wav
#!/bin/bash cd /var/samba/convert if ! test -d /var/samba/convert/wav then mkdir /var/samba/convert/wav chmod -R 0644 /var/samba/convert/wav fi for a in *.gsm; do #Строка ниже для старых версий sox #sox "$a" -t raw -r 8000 -s -w -c 1 `echo $a|sed "s/.wav/.sln/"` resample -ql; sox "$a" -r 8000 -c 1 -2 -s wav/`echo $a|sed "s/.gsm/.wav/"` > /dev/null 2>&1 rm "$a" > /dev/null 2>&1 done |
Wav -> mp3
#!/bin/bash #20080624 - Author: Gregg Hansen #http://www.thiscoolsite.com recorddir="/var/spool/asterisk/monitor" for i in `ls $recorddir/*.wav`; do cd $recorddir /usr/bin/mlame -f -o "-b 16 -m m -q 9 --resample 8" $i date=`ls -l $i | awk '{print $7,$6,2008,$8}'` mp3=`echo $i | sed 's/.wav/.mp3/g'` touch -d "$date" $mp3 #Uncomment the below line if you want your .wavs moved to a different directory. #This way you can review the timestamps and mp3 files before deleting the .wav #mv $i /wav_recordings done |
Другая реализация:
#!/bin/bash recorddir=”${1:-/var/spool/asterisk/monitor}” cd $recorddir; for file in *.wav; do mp3=$(basename “$file” .wav).mp3; nice lame -b 16 -m m -q 9 –resample 8 “$file” “$mp3″; touch –reference “$file” “$mp3″; chown apache.apache “$mp3″; chmod 600 “$mp3″; rm -f “$file”; #mv “$file” /converted; done |
MP3 ->Wav
lame --decode file.mp3 - | sox -v 0.5 -t wav - -t wav -2 -r 8000 -c 1 file.wav |
На Питоне
#!/usr/bin/python import sys, commands FORMAT = sys.argv[1] files = commands.getoutput('find ./ -name \'*mp3\'').split('\n') if len(sys.argv) == 2: for i in files: out_name = i.replace('mp3', FORMAT) if FORMAT == 'gsm': cmd = 'sox "%s" -r 8000 -c1 "%s" resample -ql' % (i, out_name) elif FORMAT == 'wav': cmd = 'sox "%s" -r 8000 -e signed -c 1 "%s"' % (i, out_name) print cmd, commands.getoutput(cmd) elif len(sys.argv) == 3: out_name = sys.argv[2].replace('mp3', FORMAT) if FORMAT == 'gsm': cmd = 'sox "%s" -r 8000 -c1 "%s" resample -ql' % (sys.argv[2], out_name) elif FORMAT == 'sln': cmd = 'sox "%s" -t raw -r 8000 -s -w -c 1 "%s"' % (sys.argv[2], out_name) print cmd, commands.getoutput(cmd) |
🙂