从终端重新采样音频文件

5
我目前有一个文件列表需要更改采样率。
最近我意识到可以使用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.

我该如何对一个音频文件目录进行重新采样?


你能否发布你当前正在使用的完整命令和参数? - DirkyJerky
完整命令发布在@DirkyJerky。 - I am not Fat
1个回答

8
尝试更改输出文件名,如果要保持同一文件名,可能需要将其放在不同的目录中。
例如: 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

但是我需要在波形文件目录中执行它,就像我上面所说的那样。我知道这是一个问题,但是否仍有一种简单的方法可以做到这一点? - I am not Fat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接