我想在.wav文件中使用標記。讀取.wav文件的標記
這似乎是由aifc
模塊getmarkers()
支持:http://docs.python.org/2/library/aifc.html#aifc.aifc.getmarkers(用於.AIFF文件),而不是wave
模塊(http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers)。
我們怎樣才能讀取.wav文件的標記?
我想在.wav文件中使用標記。讀取.wav文件的標記
這似乎是由aifc
模塊getmarkers()
支持:http://docs.python.org/2/library/aifc.html#aifc.aifc.getmarkers(用於.AIFF文件),而不是wave
模塊(http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers)。
我們怎樣才能讀取.wav文件的標記?
編輯:這裏是增加了許多東西(24位.wav文件的支持scipy.io.wavfile
的更新版本讀/寫,提示標記,提示標記的標籤,以及其他一些類似的元數據間距(如果定義)等):
隨意分享吧!
我終於找到了解決方法(它使用scipy.io.wavfile的一些功能):
def readmarkers(file, mmap=False):
if hasattr(file,'read'):
fid = file
else:
fid = open(file, 'rb')
fsize = _read_riff_chunk(fid)
cue = []
while (fid.tell() < fsize):
chunk_id = fid.read(4)
if chunk_id == b'cue ':
size, numcue = struct.unpack('<ii',fid.read(8))
for c in range(numcue):
id, position, datachunkid, chunkstart, blockstart, sampleoffset = struct.unpack('<iiiiii',fid.read(24))
cue.append(position)
else:
_skip_unknown_chunk(fid)
fid.close()
return cue
隨意將其添加到SciPy的的wavfile.py
如果有人問津。
它是在wave.Wave_read模塊,稱爲Wave_read.getmarkers()
看到的文檔查看詳細: http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers
不錯!感謝分享 – goncalopp
我的標記類型爲'範圍'(id,開始,結束,持續時間?)。使用你的功能,我只能讀取每個範圍的起始位置。我怎樣才能修改你的功能,以使它適用於範圍呢? – Eric
這是我使用的參考資料:http://www.sonicspot.com/guide/wavefiles.html ...哪裏存儲了'range'類型的標記?在「提示區塊」(http://www.sonicspot.com/guide/wavefiles.html#cue)或「播放列表區塊」(http://www.sonicspot.com/guide/wavefiles.html#plst)中? – Basj