Zeitstempel bestimmen
Wir wissen, dass die Frequenz unserer Schallwelle 48 kHz beträgt – aber was, wenn nicht? Wir könnten sie ermitteln, indem wir die Länge unseres Soundwave-Arrays durch die Dauer unserer Schallwelle teilen. Das wave-Modul von Python bietet jedoch einen besseren Weg: Ein Aufruf von getframerate() auf einem Wave-Objekt liefert die Abtastrate dieses Objekts.
Anschließend können wir mit NumPys linspace()-Methode den Zeitstempel für jede Ganzzahl in unserem Soundwave-Array bestimmen. Das hilft uns später, unsere Schallwelle zu visualisieren.
Die Methode linspace() nimmt die Parameter start, stop und num und gibt num gleichmäßig verteilte Werte zwischen start und stop zurück.
In unserem Fall ist start null, stop die Länge unseres Soundwave-Arrays geteilt durch die Abtastrate (also die Dauer unserer Audiodatei) und num die Länge unseres Soundwave-Arrays.
Diese Übung ist Teil des Kurses
Verarbeitung gesprochener Sprache in Python
Anleitung zur Übung
- Wandle die Soundwave-Bytes in Ganzzahlen um.
- Ermittele die Abtastrate der „good morning“-Audiodatei mit
getframerate(). - Setze
stopauf die Länge vonsoundwave_gmgeteilt durch die Abtastrate. - Setze
numauf die Länge vonsoundwave_gm.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Read in sound wave and convert from bytes to integers
good_morning = wave.open('good_morning.wav', 'r')
signal_gm = good_morning.readframes(-1)
soundwave_gm = np.frombuffer(____, dtype='int16')
# Get the sound wave frame rate
framerate_gm = good_morning.____
# Find the sound wave timestamps
time_gm = np.linspace(start=0,
stop=____/____,
num=____)
# Print the first 10 timestamps
print(time_gm[:10])