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

问题描述 投票:3回答:2

所以,我正在写一个语音识别程序。为此,我从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文件来应用该行代码。

audio wav sox
2个回答
4
投票

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

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

你需要安装parallel和sox,但是对于Mac你可以通过brew install获得。希望这可以帮助。


2
投票

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

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

此代码搜索每个文件并使其对python库可读。希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.