ÎncepețiÎncepe gratuit

Găsirea marcajelor temporale

Știm că frecvența de eșantionare a undei noastre sonore este de 48 kHz, dar ce ne-am face dacă n-am ști asta? Am putea afla acest lucru împărțind lungimea array-ului undei sonore la durata undei sonore. Totuși, modulul wave din Python oferă o metodă mai bună. Apelând getframerate() pe un obiect wave, obții rata de cadre a acelui obiect.

Putem folosi apoi metoda linspace() din NumPy pentru a afla marcajul temporal al fiecărui număr întreg din array-ul undei noastre sonore. Acest lucru ne va ajuta mai târziu să vizualizăm unda sonoră.

Metoda linspace() primește parametrii start, stop și num și returnează num valori distribuite uniform între start și stop.

În cazul nostru, start va fi zero, stop va fi lungimea array-ului undei sonore împărțită la rata de cadre (adică durata fișierului audio), iar num va fi lungimea array-ului undei sonore.

Acest exercițiu face parte din cursul

Procesarea limbajului vorbit în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Convertește octeții undei sonore în numere întregi.
  • Obține rata de cadre a fișierului audio „good morning" folosind getframerate().
  • Setează stop ca fiind lungimea lui soundwave_gm împărțită la rata de cadre.
  • Setează num ca fiind lungimea lui soundwave_gm.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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])
Editează și rulează codul