在python中无法使用aifc模块读取AIFF-C文件

Bed*_*mez 5 python audio cd aiff

我正在尝试读取存储在本地目录中的压缩.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
>>>
Run Code Online (Sandbox Code Playgroud)

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

一个简单的问题,但我无法在网上找到解决方案.

小智 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)
Run Code Online (Sandbox Code Playgroud)

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