Zacznij terazZacznij za darmo

Wyznaczanie znaczników czasu

Wiemy, że częstotliwość próbkowania naszej fali dźwiękowej wynosi 48 kHz – ale co zrobić, gdy jej nie znamy? Możemy ją wyliczyć, dzieląc długość tablicy fali dźwiękowej przez czas trwania nagrania. Moduł wave w Pythonie oferuje jednak wygodniejszy sposób: wywołanie metody getframerate() na obiekcie wave zwraca jego częstotliwość próbkowania.

Następnie możemy użyć metody linspace() z biblioteki NumPy, aby wyznaczyć znacznik czasu dla każdej próbki w tablicy fali dźwiękowej. Przyda nam się to później przy wizualizacji fali.

Metoda linspace() przyjmuje parametry start, stop i num, a zwraca num równomiernie rozłożonych wartości między start a stop.

W naszym przypadku start przyjmuje wartość zero, stop to długość tablicy fali dźwiękowej podzielona przez częstotliwość próbkowania (czyli czas trwania pliku audio), a num to długość tablicy fali dźwiękowej.

To ćwiczenie jest częścią kursu

Przetwarzanie mowy w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Przekonwertuj bajty fali dźwiękowej na liczby całkowite.
  • Pobierz częstotliwość próbkowania pliku audio z porannym pozdrowieniem, używając metody getframerate().
  • Ustaw wartość stop jako długość tablicy soundwave_gm podzieloną przez częstotliwość próbkowania.
  • Ustaw wartość num jako długość tablicy soundwave_gm.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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])
Edytuj i uruchom kod