我正在尝试读取存储在本地目录上的压缩。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文件。
一个简单的问题,但我在网上找不到答案。
旧帖,但…这似乎有两个可能的问题。
1 -您可能需要pip install cl
。如果AIFC导入cl模块失败,它将报告您提到的错误。
2 -似乎在aifc.py源代码中有一个bug(至少是我发现的那个),它期望未压缩的文件将压缩指定为'NONE'。然而,有些文件似乎报告为'raw '(注意末尾的额外空间),并且AIFC不将其识别为压缩格式。
您可能会发现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文档)。我希望这对你有帮助!