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.
Schön! Danke für die Freigabe – goncalopp
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
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