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

Change huge amount of data from NIST to RIFF wav file

所以,我正在写一个语音识别程序。为此,我从 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。但是我真的找不到如何正确使用它。

我现在需要的是一个脚本或其他东西,让 sox 将特定文件夹和子文件夹下的每个 wav 文件格式从 NIST 更改为 RIFF。

编辑: 在 中,我找到了适合我的回复... 运行 sph2pipe -f wav input.wav output.wav 我需要的是一个脚本或在文件夹下搜索的东西,所有包含 .wav 文件的子文件夹都可以应用该行代码。

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

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

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

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

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

虽然你需要安装 parallelsox,但是对于 Mac 你可以通过 [=13 获得两者=].希望这有帮助。