2013-11-15 8 views

Antwort

3

bearbeiten: hier ist eine aktualisierte Version von scipy.io.wavfile, die für viele Dinge (24-Bit-WAV-Dateien unterstützen fügt lesen/schreiben, Cue-Marker, Cue-Marker Etiketten und einige andere Metadaten wie Tonhöhe (falls definiert), etc.):

wavfile.py (enhanced)

Fühlen sie sich frei, es zu teilen!


ich endlich eine Lösung gefunden (es irgendeine Funktion von scipy.io.wavfile verwendet):

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 

Fühlen Sie sich frei es in wavfile.py der Scipy hinzufügen, wenn jemand interessiert ist.

+0

Schön! Danke für die Freigabe – goncalopp

+0

Meine Marker sind vom Typ 'Bereich' (ID, Start, Ende, Dauer?). Mit Ihrer Funktion kann ich nur die Startposition jedes Bereichs ablesen. Wie kann ich Ihre Funktion ändern, damit sie auch für die Reichweite funktioniert? – Eric

+0

Dies ist die Referenz, die ich verwendet habe: http://www.sonicspot.com/guide/wavefiles.html ... Wo sind Ihre Marker vom Typ 'Bereich' gespeichert? In 'Cue Chunk' (http://www.sonicspot.com/guide/wavefiles.html#cue) oder' Playlist Chunk' (http://www.sonicspot.com/guide/wavefiles.html#plst)? – Basj

-1

es ist in wave.Wave_read Module, genannt Wave_read.getmarkers() die Dokumentation für Detail sehen: http://docs.python.org/2/library/wave.html?highlight=wave#wave.Wave_read.getmarkers

+0

'Wave_read.getmarkers()': Gibt keine zurück. – Basj

+1

Ich kann ehrlich nicht verstehen, warum das nicht "NotImplemented" statt – goncalopp

+0

FWIW, wenn Sie dies selbst implementieren möchten, gibt es eine Menge guter Informationen [hier] (http://home.roadrunner.com/~jgglatt /tech/wave.htm) (siehe Abschnitt über Cue-Points) – goncalopp