Scipy io读取wavfile错误

时间:2017-08-28 08:31:39

标签: python python-2.7 scipy wav audio-processing

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

rule_sets = DBSession.query(ProductSortRuleSet).all()
    rules = set()
    for i in rule_sets:
        for j in i.rules:
            rules.update(j)


错误:

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

更新

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

  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 MY_FILENAME.wav MY_FILENAME.wav

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

我尝试了许多解决方案,但仅通过以下步骤就获得了成功:

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