Zacznij terazZacznij za darmo

Znajdowanie znaczników czasu

Wiemy, że częstotliwość próbkowania naszej fali dźwiękowej wynosi 48 kHz, ale co gdybyśmy tego nie wiedzieli? Moglibyśmy ją obliczyć, dzieląc długość tablicy fali dźwiękowej przez czas trwania nagrania. Moduł wave w Pythonie oferuje jednak prostsze rozwiązanie. Wywołanie getframerate() na obiekcie fali zwraca jej częstotliwość próbkowania.

Następnie możemy użyć metody linspace() z NumPy, żeby znaleźć znacznik czasu dla każdej liczby całkowitej w naszej tablicy fali dźwiękowej. Przyda się to później, gdy będziemy wizualizować naszą falę dźwiękową.

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

W naszym przypadku start będzie wynosić zero, stop będzie równe długości tablicy fali dźwiękowej podzielonej przez częstotliwość próbkowania (czyli czasowi trwania naszego pliku audio), a num będzie równe długości 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 „dzień dobry", używając getframerate().
  • Ustaw stop jako długość soundwave_gm podzieloną przez częstotliwość próbkowania.
  • Ustaw num jako długość 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