Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Zet de bytes van de geluidsgolf om naar gehele getallen.
  • Haal de framesnelheid van het good morning-audiobestand op met getframerate().
  • Stel stop in op de lengte van soundwave_gm gedeeld door de framesnelheid.
  • Stel num in op de lengte van soundwave_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])
Code bewerken en uitvoeren