将大量数据从NIST更改为RIFF wav文件

时间:2017-11-18 19:29:38

标签: audio wav sox

所以,我正在写一个语音识别程序。为此,我从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的一些事情,我也加了,但我下载的nist文件是.wav,而不是.sph)。

我从http://sox.sourceforge.net/下载了SOX 我正确地将路径添加到我的环境变量中,以便我的cmd识别sox。但我无法真正找到如何正确使用它。

我现在需要的是一个脚本或者某些内容,以便在某些文件夹和子文件夹下将所有wav文件格式从NIST更改为RIFF。

编辑: 在reading a WAV file from TIMIT database in python我找到了一个对我有用的回复...... 正在运行sph2pipe -f wav input.wav output.wav 我需要的是一个脚本或在文件夹下搜索的东西,所有子文件夹都包含一个.wav文件来应用该行代码。

2 个答案:

答案 0 :(得分:4)

由于forfiles是Windows命令,因此这是unix的解决方案。 只需cd到上层文件夹并输入:

find . -name '*.WAV' | parallel -P20 sox {} '{.}.wav'

您需要安装 parallel sox ,但对于Mac,您可以通过brew install获得。希望这会有所帮助。

答案 1 :(得分:2)

好的,我终于明白了。转到上层文件夹并运行以下代码:

forfiles /s /m *.wav /c "cmd /c sph2pipe -f wav @file @fnameRIFF.wav"

此代码搜索每个文件并使其可读为python库。希望它有所帮助!