Почему мне нужно применять оконную функцию к семплам при построении спектра мощности аудиосигнала?

Я несколько раз обнаруживал следующие рекомендации по получению спектра мощности аудиосигнала:

  • собрать N образцов, где N - степень двойки.
  • применить к образцам подходящую оконную функцию, например Ханнинг
  • передать оконные образцы в процедуру БПФ - в идеале вам нужно БПФ от реального к комплексному, но если все, что у вас есть, это БПФ от комплекса к комплексному, то передайте 0 для всех мнимых входных частей
  • вычислите квадрат величины ваших выходных бинов БПФ (re * re + im * im)
  • (необязательно) вычислить 10 * log10 каждого квадрата выходного бункера величины, чтобы получить значение величины в дБ.
  • Теперь, когда у вас есть спектр мощности, вам просто нужно определить пик (ы), что должно быть довольно просто, если у вас есть разумное соотношение сигнал / шум. Обратите внимание, что разрешение по частоте улучшается с увеличением N. Для приведенного выше примера с частотой дискретизации 44,1 кГц и N = 32768 разрешение по частоте каждого бина составляет 44100/32768 = 1,35 Гц.

Но ... зачем мне применять оконную функцию к образцам? Что это на самом деле означает?

Что насчет спектра мощности, это мощность каждой частоты в диапазоне частот дискретизации? (пример: визуализатор звука в проигрывателе Windows Media?)


person Nuno Santos    schedule 07.09.2011    source источник


Ответы (4)


Как сообщает @ cyco130, ваши сэмплы уже имеют прямоугольную функцию. Поскольку преобразование Фурье предполагает периодичность, любой разрыв между последней выборкой и повторяющейся первой выборкой вызовет артефакты в спектре (например, «размытие» пиков). Это известно как спектральная утечка. Чтобы уменьшить этот эффект, мы применяем функцию сужающегося окна, такую ​​как окно Ханна, которое сглаживает любой такой разрыв и тем самым уменьшает артефакты в спектре.

person Paul R    schedule 07.09.2011
comment
после расчета величин и дБ я получаю значения выше 0 дБ. это нормально. Я знаю, что это неубедительный вопрос, но я действительно не могу понять, когда я должен получить 0 дБ. мой входной сигнал и примененная функция hann таковы: in [step] = 0,05f sin ((2 * M_PI step * 440) / 44100) + 0,1f sin ((2 * M_PI step * 880) / 44100) + 0.2f sin ((2 * M_PI step * 1760) / 44100); in [шаг] = 0.5f * (1.0f- cos (float ((2 * M_PI step) / float (NSAMPLES-1)))); - person Nuno Santos; 14.09.2011
comment
@Nuno: не беспокойтесь об абсолютных значениях дБ - 0 дБ в любом случае является произвольной точкой отсчета, если вы снова не откалибруете какую-либо известную ссылку и не используете, например, дБВ или дБм. Более важно, чтобы пики в вашем спектре находились на правильных частотах и ​​чтобы величина пиков имела разумное значение относительно вашего минимального уровня шума. - person Paul R; 14.09.2011

Большинство звуковых сигналов реального мира непериодичны, что означает, что реальные звуковые сигналы обычно не повторяются точно в любой заданный промежуток времени.

Однако математика преобразования Фурье предполагает, что сигнал, преобразуемый Фурье, является периодическим в течение рассматриваемого промежутка времени.

Это несоответствие между предположением Фурье о периодичности и реальным фактом, что аудиосигналы, как правило, непериодичны, приводит к ошибкам в преобразовании.

Эти ошибки называются «спектральной утечкой» и обычно проявляются как неправильное распределение энергии по спектру мощности сигнала.

На графике ниже показан крупный план спектра мощности акустической гитары, играющей на ноте A4. Спектр был рассчитан с помощью БПФ (быстрое преобразование Фурье), но сигнал не обрабатывался в окне до БПФ.

Обратите внимание на распределение энергии над линией -60 дБ и три отдельных пика примерно на 440 Гц, 880 Гц и 1320 Гц. Это конкретное распределение энергии содержит ошибки "спектральной утечки".

Спектр мощности гитары, играющей ноту A4, окно не применялось

Чтобы несколько смягчить ошибки «спектральной утечки», вы можете предварительно умножить сигнал на оконную функцию, разработанную специально для этой цели, например, оконную функцию Ханна.

На графике ниже показана оконная функция Ханна во временной области. Обратите внимание, как хвосты функции плавно переходят к нулю, в то время как центральная часть функции плавно стремится к значению 1.

Оконная функция Ханна

Теперь применим окно Ханна к аудиоданным гитары, а затем полученный сигнал с помощью БПФ.

На графике ниже показан крупный план спектра мощности того же сигнала (акустическая гитара, играющая ноту A4), но на этот раз сигнал был предварительно умножен оконной функцией Ханна перед БПФ.

Обратите внимание, как значительно изменилось распределение энергии над линией -60 дБ, и как три отдельных пика изменили форму и высоту. Это конкретное распределение спектральной энергии содержит меньше ошибок "спектральной утечки".

Спектр мощности гитары, играющей ноту A4, применено окно Ханна

Нота А4 акустической гитары, используемая для этого анализа, была отобрана с частотой 44,1 кГц с помощью высококачественного микрофона в студийных условиях, она практически не содержит фонового шума, никаких других инструментов или голосов, а также постобработки.

Использованная литература:

Здесь были выполнены данные реального аудиосигнала, оконная функция Ханна, графики, БПФ и спектральный анализ:

быстрое преобразование Фурье, спектральный анализ, оконная функция Ханна, аудиоданные

person Babson    schedule 01.03.2013

Обратите внимание, что окно непрямоугольной формы имеет как преимущества, так и недостатки. Результат окна во временной области эквивалентен свертке преобразования окна со спектром сигнала. Типичное окно, такое как окно фон Ханна, уменьшит «утечку» из любого непериодического спектрального содержимого, что приведет к менее шумному спектру; но, в свою очередь, свертка «размывает» любые точно или близкие к периодическим спектральные пики в нескольких соседних ячейках. например все спектральные пики станут более округлыми, что может снизить точность оценки частоты. Если вы знаете, априори, что нет непериодического содержимого (например, данных из какой-либо системы дискретизации с синхронизацией вращения), непрямоугольное окно может фактически ухудшить вид БПФ.

Непрямоугольное окно - это также процесс с потерями информации. Значительный объем спектральной информации около краев окна будет отброшен при условии арифметики конечной точности. Таким образом, непрямоугольные окна лучше всего использовать при обработке перекрывающихся окон и / или когда можно предположить, что интересующий спектр либо неподвижен по всей ширине окна, либо центрирован в окне.

person hotpaw2    schedule 08.09.2011
comment
Безусловно, лучший ответ. Когда вы сказали «Обработка перекрывающихся окон», вы имели в виду что-то вроде этого? dsp.stackexchange.com/a/19317/37360 Я пытаюсь воссоздать исходные данные и синтезировать новые данные как если бы он был продолжен сверх того, что я могу предоставить (с точностью), и поэтому оконные функции в целом очень непривлекательны. Я пытался вызвать в воображении такие идеи, как вычисление какого-то STFT (я думаю), а затем усреднение данных FFT по каждому вычислению или что-то в этом роде, чтобы помочь с краями. Есть предположения? - person Andrew; 10.09.2018

Если вы не применяете какую-либо оконную функцию, вы фактически применяете прямоугольную оконную функцию. У разных оконных функций разные характеристики, это зависит от того, что именно вы хотите.

person cyco130    schedule 07.09.2011
comment
Не могли бы вы подробнее рассказать об этом? Если вы не применяете какую-либо оконную функцию, вы фактически применяете прямоугольную оконную функцию. - person privetDruzia; 23.10.2016
comment
Применение преобразования конечной длины к более длинному сигналу обрезает данные до и после этого окна конечной длины. Это то же самое, что применить прямоугольное окно. Это прямоугольное окно во временной области приводит к свертке Sinc в частотной области, что некоторые люди называют утечкой. - person hotpaw2; 11.05.2017