【问题标题】:scipy.io.wavfile.read cannot read 16-bits .wav filesscipy.io.wavfile.read 无法读取 16 位 .wav 文件
【发布时间】:2019-06-30 04:30:06
【问题描述】:

我在读取 2 字节的 wav 文件时遇到问题。我看到scipy.io.wavfile.read cannot read 24-bits .wav files Unexpected end of file wavfile.read python 。但它们都与读取 wavfile.read 无法支持的 24 位文件有关。这是我从文件中获取信息时的代码

这是我想阅读它的时候,但我有一个错误的意外文件。

编辑:这是我的示例 .wav 文件 Uploaded File

【问题讨论】:

  • 您尝试读取的 wav 文件似乎有问题。您是否尝试过加载其他 wav 文件?如果问题仍然存在,您可能需要上传示例文件,以便我们重现问题。我也认为this answer 可以帮助你。
  • 帖子已编辑,我上传了一个示例文件
  • 在这里查看我的答案,我建议尝试wavio:stackoverflow.com/questions/56667042/…wavio.read 能够读取该文件。
  • 谢谢您的回复,我使用了这个库并成功读取了它,但是当读取大量数据时内存出现问题。我只想测试另一个库以查看结果
  • 实际上我想对我的数据进行下采样,但像 librosa 这样的库很耗时。如果我能找到一种在读取数据之前重新采样数据以使用 CNN 进行训练的方法,我可以使用 wavio 库来读取它。

标签: python scipy wave


【解决方案1】:

可以重现您的错误。正如here 建议的那样,我通过运行sox 50.wav -r 44100 resampled_50.wav“重新采样”了文件。

结果如下:

>>> from scipy.io import wavfile
>>> wavfile.read("50.wav")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/scipy/io/wavfile.py", line 246, in read
    raise ValueError("Unexpected end of file.")
ValueError: Unexpected end of file.
>>> wavfile.read("resampled_50.wav")
(44100, array([[-2171, -2025],
       [-1306,  -510],
       [ -550,   591],
       ..., 
       [ -157,  -155],
       [ -166,  -170],
       [ -164,  -164]], dtype=int16))
>>>

看起来这种方法有效。希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2022-01-23
    • 2019-06-15
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多