Определение временны́х меток
Мы знаем, что частота нашей звуковой волны составляет 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])