无法在Python中导入audiolab

4 投票
4 回答
5006 浏览
提问于 2025-04-17 17:45

我从这个网址安装了audiolab:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikits.audiolab

这是我找到的唯一适用于Python 2.7的Windows版本。

当我输入 from scikits import audiolab 时,出现了以下错误:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    from scikits import audiolab
  File "C:\Python27\lib\site-packages\scikits\audiolab\__init__.py", line 34, in <module>
    from pysndfile.matapi import *
  File "C:\Python27\lib\site-packages\scikits\audiolab\pysndfile\matapi.py", line 145, in <module>
    Format('wav', 'pcm16').file_format)
  File "_sndfile.pyx", line 170, in scikits.audiolab.pysndfile._sndfile.Format.__init__ (scikits\audiolab\pysndfile\_sndfile.c:1429)
NameError: _SNDFILE_FILE_FORMAT

有没有办法解决这个问题?如果没有,那我该用什么来处理音频呢?(在音频工具中,audiolab似乎是音频工具和pyaudio中最好的选择)

编辑:

在替换了libsndfile-1.dll之后,我遇到了这个新错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    from scikits import audiolab
  File "C:\Python27\lib\site-packages\scikits\audiolab\__init__.py", line 25, in <module>
    from pysndfile import formatinfo, sndfile
  File "C:\Python27\lib\site-packages\scikits\audiolab\pysndfile\__init__.py", line 1, in <module>
    from _sndfile import Sndfile, Format, available_file_formats, \
  File "numpy.pxd", line 30, in scikits.audiolab.pysndfile._sndfile (scikits\audiolab\pysndfile\_sndfile.c:9632)
ValueError: numpy.dtype does not appear to be the correct type object

注意:numpy已经安装。

4 个回答

0

我在Ubuntu 10.04.4 LTS上也遇到了同样的问题。原因是我安装的audiolab版本是针对python2.5的,但在这段时间里,Ubuntu 10.04.4 LTS的python升级到了2.6。后来我重新安装了audiolab(这次安装了正确的版本),一切都正常了。

0

我在Mac OS上也遇到了同样的问题。可能是你在安装audiolab之后,更新了或者安装了新的python/numpy版本。我做的就是先卸载scikits.audiolab,然后再重新安装,这样就解决了这个错误。

0

根据我的了解,你需要安装 libsndfile-1.0.25,这个信息就在你下载二进制文件的地方提到过。

Scikits.audiolab 是一个用于处理音频文件的工具,它使用 numpy 数组来进行输入输出。这个工具是和 libsndfile-1.0.25 连接在一起的。

你可以从 这里 下载安装程序。安装完 libsndfile 后,你可能需要重新安装 scikits.audiolab,不过说实话,我也不太确定。

不过,如果觉得这些步骤太麻烦,你可以考虑安装 Python 2.6,然后从 PyPi 安装 audiolab,这也是 scikits 文档 推荐的做法。PyPi 上的 scikits.audiolab 版本已经和 libsndfile 绑定在一起了,所以你就不需要自己再去安装它了。

撰写回答