Tijdstempels bepalen
We weten dat de frequentie van onze geluidsgolf 48 kHz is, maar wat als we dat niet wisten? We zouden die kunnen vinden door de lengte van onze geluidsgolf-array te delen door de duur van onze geluidsgolf. Python's wave-module heeft echter een betere manier. Door getframerate() aan te roepen op een wave-object krijg je de framesnelheid van dat object.
Vervolgens kunnen we NumPy's linspace()-methode gebruiken om de tijdstempel van elk geheel getal in onze geluidsgolf-array te bepalen. Dit helpt ons om onze geluidsgolf later te visualiseren.
De linspace()-methode neemt de parameters start, stop en num en geeft num gelijkmatig verdeelde waarden terug tussen start en stop.
In ons geval is start nul, stop de lengte van onze geluidsgolf-array gedeeld door de framesnelheid (oftewel de duur van ons audiobestand) en num de lengte van onze geluidsgolf-array.
Deze oefening maakt deel uit van de cursus
Spoken Language Processing in Python
Oefeninstructies
- Zet de bytes van de geluidsgolf om naar gehele getallen.
- Haal de framesnelheid van het good morning-audiobestand op met
getframerate(). - Stel
stopin op de lengte vansoundwave_gmgedeeld door de framesnelheid. - Stel
numin op de lengte vansoundwave_gm.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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])