ÎncepețiÎncepe gratuit

Găsirea marcajelor de timp

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

Apoi putem folosi metoda linspace() din NumPy pentru a determina marcajul de timp al fiecărui întreg din array-ul undei sonore. Acest lucru ne va ajuta să vizualizăm unda sonoră mai târziu.

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 „bună dimineața" folosind getframerate().
  • Setează stop ca lungimea lui soundwave_gm împărțită la rata de cadre.
  • Setează num ca 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