读.wav文件的标志 [英] read markers of .wav file

查看:697
本文介绍了读.wav文件的标志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用标记在.wav文件。

I would like to use markers in .wav files.

这似乎是由 AIFC 模块的支持与 getmarkers():<一href=\"http://docs.python.org/2/library/aifc.html#aifc.aifc.getmarkers\">http://docs.python.org/2/library/aifc.html#aifc.aifc.getmarkers (对于.AIFF文件),但不适用于模块(<一个href=\"http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers\">http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers).

It seems to be supported by aifc module with getmarkers() : http://docs.python.org/2/library/aifc.html#aifc.aifc.getmarkers (for .aiff files), but not for wave module (http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers).

我们怎么能读取.wav文件标记

推荐答案

我终于找到了一个解决方案(它使用scipy.io.wavfile的一些功能):

I finally found a solution (it uses some function of 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 ,如果有人有兴趣。

这篇关于读.wav文件的标志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆