读取.wav文件的标记

时间:2013-11-15 21:52:23

标签: python audio wav markers

我想在.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文件的标记

2 个答案:

答案 0 :(得分:3)

编辑:这是scipy.io.wavfile的更新版本,增加了许多内容(24位.wav文件支持读/写,提示标记,提示标记标签和其他一些元数据喜欢音高(如果定义)等等):

wavfile.py (enhanced)

随意分享!


我终于找到了一个解决方案(它使用了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中。

答案 1 :(得分:-2)

它位于wave.Wave_read模块中,名为Wave_read.getmarkers() 请参阅文档以获取详细信息: http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers