Aan de slagBegin gratis

Tijdstempels bepalen

We weten dat de bemonsteringsfrequentie 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. Maar Python's wave-module heeft een betere manier. Als je getframerate() aanroept op een wave-object, krijg je de framesnelheid van dat object terug.

Vervolgens kunnen we NumPy's linspace() gebruiken om de tijdstempel van elk geheel getal in onze geluidsgolf-array te bepalen. Dat helpt ons straks bij het visualiseren van onze geluidsgolf.

De methode linspace() neemt de parameters start, stop en num en geeft num gelijkmatig verdeelde waarden terug tussen start en stop.

In ons geval is start nul, is stop de lengte van onze geluidsgolf-array gedeeld door de framesnelheid (oftewel de duur van ons audiobestand) en is num de lengte van onze geluidsgolf-array.

Deze oefening maakt deel uit van de cursus

Spoken Language Processing in Python

Bekijk cursus

Oefeninstructies

  • Zet de bytes van de geluidsgolf om naar gehele getallen.
  • Haal de framesnelheid van het "good morning"-audiobestand op met getframerate().
  • Zet stop gelijk aan de lengte van soundwave_gm gedeeld door de framesnelheid.
  • Zet num gelijk aan de lengte van soundwave_gm.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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