从python中的TIMIT数据库读取WAV文件

oku*_*oub 5 python audio wav scipy wave

我正在尝试从python中的TIMIT数据库中读取一个wav文件,但是我收到一个错误:

当我使用wave时:

wave.Error: file does not start with RIFF id
Run Code Online (Sandbox Code Playgroud)

当我使用scipy时:

ValueError: File format b'NIST'... not understood.
Run Code Online (Sandbox Code Playgroud)

当我使用librosa时,程序卡住了.我尝试使用sox将其转换为wav:

cmd = "sox " + wav_file + " -t wav " + new_wav
subprocess.call(cmd, shell=True)
Run Code Online (Sandbox Code Playgroud)

它没有帮助.我看到一个引用scikits.audiolab包的旧答案,但看起来它不再受支持了.

如何读取这些文件以获取数据的数据?

谢谢

War*_*ser 5

您的文件不是 WAV 文件。显然它是一个 NIST SPHERE 文件。来自LDC 网页“许多 LDC 语料库包含 NIST SPHERE 格式的语音文件。” 根据NIST 文件格式的描述,文件的前四个字符是NIST. 这就是 scipy 错误告诉你的:它不知道如何读取以NIST.

如果您想使用您尝试过的任何库读取文件,我怀疑您必须将文件转换为 WAV。要使用程序强制转换为 WAV sph2pipe,请使用命令选项-f wav(或等效的-f rif),例如

sph2pipe -f wav input.sph output.wav
Run Code Online (Sandbox Code Playgroud)