НачатьНачать бесплатно

Определение временны́х меток

Мы знаем, что частота нашей звуковой волны составляет 48 кГц, но что если бы это было неизвестно? Её можно вычислить, разделив длину массива звуковой волны на продолжительность звука. Однако модуль wave в Python предлагает более удобный способ: метод getframerate(), вызванный на волновом объекте, возвращает его частоту кадров.

Затем с помощью метода linspace() из NumPy можно найти временну́ю метку каждого целого числа в массиве звуковой волны. Это пригодится нам при визуализации звуковой волны.

Метод linspace() принимает параметры start, stop и num и возвращает num равномерно распределённых значений в диапазоне от start до stop.

В нашем случае start равен нулю, stop — это длина массива звуковой волны, делённая на частоту кадров (то есть продолжительность аудиофайла), а num — длина массива звуковой волны.

Это упражнение является частью курса

Обработка устной речи на Python

Посмотреть курс

Инструкции к упражнению

  • Преобразуйте байты звуковой волны в целые числа.
  • Получите частоту кадров аудиофайла с приветствием, используя метод getframerate().
  • Задайте stop как длину soundwave_gm, делённую на частоту кадров.
  • Задайте num как длину soundwave_gm.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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])
Редактировать и запускать код