linux下用sox批量将pcm文件加wav头、批量修改采样率、切音频

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

shell view plain copy
  1. #!/bin/bash  
  2. for x in ./*.wav;do
  3.   b=${x##*/}  
  4.   sox $b -r 16000 tmp-$b  
  5.   rm -rf $b  
  6.   mv tmp-$b $b  
  7. 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



你可能感兴趣的:(ubuntu)