บันทึกเทคนิกการแปลงไฟล์เสียง

เอามาจาก

การเปลี่ยนชื่อไฟล์

แปลงวรรคในชื่อไฟล์เป็น underscore
ใช้เทคนิกของโปรแกรม tr เช่นแปลงทุกไฟล์ที่มีนามสกุล mp3
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
แปลงชื่อไฟล์ตัวใหญ๋เป็นตัวเล็ก
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
แปลงเฉพาะนามสกุล
for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done

การแปลงเป็น WAV

เลือกใช้ ffmpeg
คำสั่งคือ
ffmpeg -i infile.xxx -acodec pcm_s16le -ar 44100 -ac 2 -f wav outfile.wav

(มีความรู้สึกว่าแปลงด้วย ffmpeg เสียงครบกว่าแปลงด้วย mplayer ซึ่งเสียงจะนุ่มลงเล็กน้อย)

ถ้าแปลงทีละไดเรกทอรี่ คำสั่งคือ

for i in *; do ffmpeg -i "$i" -acodec pcm_s16le -ar 44100 -ac 2 \
-f wav "$i.wav"; done

แทรกนิด แปลงจาก mp3 เป็น mp3 ผ่านไลบรารี libmp3lame แบบเล็ก แต่ฟังได้ดี

for i in *; do ffmpeg -i "$i" -acodec libmp3lame -ab 24k -ar 11025 -ac 2 \
"mp3/$i"; done
แปลงจาก mp3 โดยใช้ mpg321
คำสั่งคือ
for i in *.mp3; do mpg321 -w "`basename "$i" .mp3`.wav" "$i"; done
แปลงจาก mp3 โดยใช้ MAD
คำสั่งคือ
for i in *.mp3; do madplay -o "`basename "$i" .mp3`.wav" "$i"; done
แปลงจาก mp3 โดยใช้ Lame
คำสั่งคือ
for i in *.mp3; do lame --decode "$i" "`basename "$i" .mp3`.wav"; done
แปลงจาก OGG โดยใช้ ogg123
คำสั่งคือ
for i in *.ogg ; do ogg123 -d wav -f "`basename "$i" .ogg`.wav" "$i"; done
แปลงจากรูปแบบอื่น ๆ โดยใช้ mplayer
คำสั่งคือ
for i in *.wma; do mplayer -vo null -vc dummy -af resample=44100 \
-ao pcm:waveheader:file="${i%.wma}.wav" "$i" ; done

รูปแบบอื่น

จาก wav เป็น m4r
aptitude install faac
faac -b 16 -c 44100 -w --title "TITLE" --artist "ARTIST" INFILE.wav

ได้ไฟล์ออกมาเป็น INFILE.m4a (คุณภาพดีกว่าแปลงจาก ffmpeg)

Normalize (เกลี่ย) เสียง

คำสั่งคือ

normalize-audio -m *.wav

หรือ

mp3gain -c -r *mp3

แต่งเสียง

เกลี่ยเสียง ลดเสียงทุ้มลง 18db เพิ่มเสียงแหลม 3db

sox --norm INFILE.wav OUTFILE.wav bass -24 treble +3

Rip Audio

cdda2wav -D /dev/cdrom -t TRACK 01

update

แปลงจาก mp3 เป็น wma โดยใช้ ffmpeg
จากการทดลอง ได้ต่ำสุดถึง sampling=16000Hz bitrate=8kbits
$ ffmpeg -i sound.mp3 -ar 16000 -ab 8 -ac 1 sound.wma
อีกรุ่นนึง
$ ffmpeg -i sound.mp3 -acodec wmav2 -ab 24k -ac 1 -ar 11025 sound.wma
แปลงจาก rm เป็น wav โดยใช้ ffmpeg

$ ffmpeg -i sound.rm sound.wav

รูปแบบที่เลือกใช้
เลือกใช้ mp3 เนื่องจากแพร่หลาย และไม่ผูกติดกับวินโดวส์
เลือกใช้ตัวแปลงคือ lame เนื่องจากเสียงนุ่มนวลกว่า

บีบอัดเล็กสุดแบบมีคุณภาพ
$ lame -h -b 16 INFILE.XXX OUTFILE.mp3
บีบเพื่อเก็บเป็นต้นฉบับ
$ lame -h -b 128 INFILE.XXX OUTFILE.mp3
update 520730 แปลงจาก mp3 ใหญ่เป็น mp3 เล็ก 32kbps 11.025kHz
$ for i in *mp3; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader:file=/tmp/x.wav "$i"; ffmpeg -i /tmp/x.wav -acodec libmp3lame -ab 32k -ar 11025 -ac 2 "24k/$i"; done; rm /tmp/x.wav
update 520815 แปลงจาก mp3 ใหญ่เป็น mp3 เล็ก 32kbps 24kHz
$ lame --mp3input -m m --resample 24 -h INFILE.mp3 OUTFILE.mp3
แปลงวีดีโอเป็น 3gp
$ ffmpeg -i INFILE.mpg -f 3gp -vcodec mpeg4 -b 150000 -s 320x240 -r 18 -acodec libfaac -ab 64000 -ar 24000 -ac 2 OUTFILE.3gp

หมายเหตุ
การติดตั้งแพกเกจที่เกี่ยวข้อง

ffmpeg
$ sudo aptitude install ffmpeg
mpg321
$ sudo aptitude install mpg321
MAD
$ sudo aptitude install madplay
lame
$ sudo aptitude install lame
ogg123
$ sudo aptitude install vorbis-tools
mplayer
$ sudo aptitude install mplayer
normalize
$ sudo aptitude install normalize-audio
cdda2wav
$ sudo aptitude install cdda2wav