Zeitstempel ermitteln
Wir wissen, dass die Abtastfrequenz unserer Schallwelle 48 kHz beträgt – aber was, wenn nicht? Wir könnten sie finden, indem wir die Länge unseres Soundwave-Arrays durch die Dauer unserer Schallwelle teilen. Allerdings hat Pythons wave-Modul eine bessere Methode: Ein Aufruf von getframerate() auf einem Wave-Objekt gibt die Bildrate (frame rate) dieses Objekts zurück.
Anschließend können wir NumPys Methode linspace() verwenden, um den Zeitstempel für jede Ganzzahl in unserem Soundwave-Array zu 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 Bildrate (also die Dauer unserer Audiodatei) und num die Länge unseres Soundwave-Arrays.
Diese Übung ist Teil des Kurses
<Kurs>Verarbeitung gesprochener Sprache in Python</Kurs>Übungsanweisungen
- Wandle die Soundwave-Bytes in Ganzzahlen um.
- Ermittle die Bildrate der „good morning"-Audiodatei mit
getframerate(). - Setze
stopauf die Länge vonsoundwave_gmgeteilt durch die Bildrate. - Setze
numauf die Länge vonsoundwave_gm.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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])