所以,我正在写一个语音识别程序。为此,我从TIMIT下载了400MB的数据。当我打算阅读wav文件(我试过两个库)如下:
import scipy.io.wavfile as wavfile
import wave
(fs, x) = wavfile.read('../data/TIMIT/TRAIN/DR1/FCJF0/SA1.WAV')
w = wave.open('../data/TIMIT/TRAIN/DR1/FCJF0/SA1.WAV')
在这两种情况下,它们都存在wav文件格式为“NIST”并且必须采用“RIFF”格式的问题。 (关于sph的东西我也是readed但是我下载的nist文件是.wav,而不是.sph)。
我从http://sox.sourceforge.net/下载了SOX,我正确地将路径添加到我的环境变量中,以便我的cmd识别sox。但我真的无法找到如何正确使用它。
我现在需要的是一个脚本或什么东西使sox在某些文件夹和子文件夹下将每个wav文件格式从NIST更改为RIFF。
编辑:在reading a WAV file from TIMIT database in python我找到了一个对我有用的响应...运行sph2pipe -f wav input.wav output.wav
我需要的是一个脚本或在文件夹下搜索的东西,所有子文件夹都包含一个.wav文件来应用该行代码。
由于forfiles
是Windows命令,因此这是unix的解决方案。只需将cd
添加到上层文件夹并输入:
find . -name '*.WAV' | parallel -P20 sox {} '{.}.wav'
你需要安装parallel和sox,但是对于Mac你可以通过brew install
获得。希望这可以帮助。
好的,我终于明白了。转到上层文件夹并运行以下代码:
forfiles /s /m *.wav /c "cmd /c sph2pipe -f wav @file @fnameRIFF.wav"
此代码搜索每个文件并使其对python库可读。希望能帮助到你!