Scipy io 读取 wavfile 错误

Scipy io read wavfile error

每当我尝试读取.wav 文件时,都会出现以下错误。 我到处搜索,但没有任何进展。
代码:

import scipy as sp
import matplotlib.pyplot as plt
sr, y = sp.io.wavfile.read(MY_FILENAME)
print sr


错误:

  File "/usr/local/lib/python2.7/dist-packages/scipy/io/wavfile.py", line 252, in read
    fmt_chunk = _read_fmt_chunk(fid, is_big_endian)
  File "/usr/local/lib/python2.7/dist-packages/scipy/io/wavfile.py", line 94, in _read_fmt_chunk
    raise ValueError("Unknown wave file format")
  ValueError: Unknown wave file format

更新:

在我尝试使用 sox 按照@velikodniy 的建议转换我的文件后:

sox MY_FILENAME.wav MY_FILENAME.wav

但它会引发另一个警告:

sox WARN wav: Premature EOF on .wav input file

现在,如果我尝试播放原始 .wav 文件,它会在媒体播放器中显示不支持的格式(之前播放)

WAV 可能包含不同格式的音频数据。例如,MP3.scipy.io.wavfile.read 目前只能读取 PCM 和浮点格式(WAVE_FORMAT_PCM 和 WAVE_FORMAT_IEEE_FLOAT,确切地说)。

因此您必须使用音频编辑器(例如 Audacity 或 sox)转换您的音频文件。

我尝试了很多解决方案,但只有通过以下步骤才成功:

  1. 转到站点:https://audio.online-convert.com/convert-to-wav ;
  2. 上传您的文件;
  3. 可选设置中将更改位分辨率更改为16位;
  4. 单击开始转换并下载转换后的文件;
  5. 尝试使用 scipy.io.wavfile.read(...);
  6. 再次打开

我使用代码将 wav 文件转换为特定格式,错误得到解决。

import soundfile as sf
y, s = librosa.load(pwd+'\ans.wav', sr=48000)
sf.write('audio_test_1.wav', y, s, "PCM_24")

rate, data = read(pwd+'\audio_test_1.wav')