从终端重新采样音频文件

Resample audio file from terminal

我目前有一个文件列表,我需要为其更改采样率。

我最近意识到使用 sox 可以做到这一点,但是当我尝试这样做时,我不断收到一条错误消息 sox wav: Premature EOF on .wav input file 并导致音频文件为空..似乎 sox 无法对输入 = 输出的音频文件重新采样...我有点需要,如果我必须转换整个音频文件目录...

当前使用的命令:

~/kaldi-trunk/egs/yesno/s5_k_added$ sox 0_0_0_0_1_1_1_1.wav -r 8000 0_0_0_0_1_1_1_1.wav 
sox WARN wav: Premature EOF on .wav input file
:~/kaldi-trunk/egs/yesno/s5_k_added$ play 0_0_0_0_1_1_1_1.wav 

0_0_0_0_1_1_1_1.wav:

 File Size: 44        
  Encoding: Signed PCM    
  Channels: 1 @ 16-bit   
Samplerate: 8000Hz       
Replaygain: off         
  Duration: unknown      

In:0.00% 00:00:00.00 [00:00:00.00] Out:0     [      |      ]        Clip:0    
Done.

如何对音频文件目录重新采样?

尝试更改输出文件名,如果您想保持相同的文件名,可以将其放在不同的目录中。

例如:

sox 0_0_0_0_1_1_1_1.wav -r 8000 ./out/0_0_0_0_1_1_1_1.wav

我相信 sox 正在尝试读取正在积极更改文件的文件,有时 sox 不会创建临时文件以输出到其中。

编辑:如果你有一个文件目录你都想改变,使用这个:

$ mkdir out
$ for file in *; do sox ${file} -r 8000 ./out/${file}; done