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

Поиск временных меток

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

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