5

我正在尝试读取存储在本地目录中的压缩 .aiff 文件。我明白了;

>>>import aifc
>>>s = aifc.open('/Users/machinename/Desktop/folder/AudioTrack.aiff','r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py",     line 942, in open
return Aifc_read(f)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 347, in __init__
self.initfp(f)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 317, in initfp
self._read_comm_chunk(chunk)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/aifc.py", line 497, in _read_comm_chunk
raise Error, 'cannot read compressed AIFF-C files'
aifc.Error: cannot read compressed AIFF-C files
>>>

我相信必须有一个解决方法。在这里你可以看到aifc也支持 aiff-c 文件。

一个简单的问题,但我在网上找不到解决方案。

4

2 回答 2

2

旧帖子,但是...这似乎有两个可能的问题。

1 - 您可能需要pip install cl. 如果 AIFC 导入 cl 模块失败,它会报你提到的错误。

2 - aifc.py 源(至少是我发现的)中似乎存在一个错误,它期望未压缩的文件将压缩指定为“NONE”。然而,一些文件似乎报告“原始”(注意末尾的额外空间),并且 AIFC 不将其识别为压缩格式。

于 2020-02-06T15:11:25.193 回答
0

您可能会发现scikits.audiolab(需要安装 mega-nerd.com/libsndfile/)可以满足您的需求。例如,我最近需要获取 .aif 文件的持续时间(以秒为单位):

import scikits.audiolab

aiff_file = scikits.audiolab.Sndfile('best_song_ever.aif')
print aiff_file.nframes / float(aiff_file.samplerate)

你也可以做很多其他很酷的事情(完整的 API 文档)。我希望这会有所帮助!

于 2015-09-09T04:57:00.507 回答