linux下用sox可以给pcm文件加头
例如:test.pcm是不带wav头的pcm文件
$ sox -t raw -c 1 -e signed-integer -b 16 -r 16000 test.pcm test.wav
要查看音频文件的格式可以用soxi
$ soxi test.wav
Input File : 'test.wav'
Channels : 1
Sample Rate : 16000
Precision : 16-bit
Duration : 00:00:02.22 = 35520 samples ~ 166.5 CDDA sectors
File Size : 71.1k
Bit Rate : 256k
Sample Encoding: 16-bit Signed Integer PCM
sox也可用于修改文件差样率,如test.wav文件的采样率修改为8000HZ
$ sox test.wav -r 8000 test-8K.wav
对于批量修改可以如下操作:
法1:awk
将当前文件夹下的pcm文件批量加文件头
rename '.raw' '' *
find -name "*" >file.list
cat file.list | awk '{ cmd = "sox -t raw -c 1 -e signed-integer -b 16 -r 16000 "$0" "$0".wav";print cmd;system(cmd);}'
mkdir ../voice_wav
mv *.wav ../voice_wav/
法二:bash
将当前文件夹下的wav文件批量修改为16000HZ
- #!/bin/bash
- for x in ./*.wav;do
- b=${x##*/}
- sox $b -r 16000 tmp-$b
- rm -rf $b
- mv tmp-$b $b
- done
切音频顺便转成wav
eg :pcm音频长2.22s,头尾都有一小部分不想要,只想要0.26s至2.17秒部分
~$ sox -t raw -c 1 -e signed-integer -b 16 -r 16000 test.pcm test.wav trim 0.26 1.91
其中1.91=2.17-0.26