Impulse response — Измеряем импульсную характеристику звукового тракта

Pixilang по русски
Post Reply
iHs
Posts: 11
Joined: Sat Jan 13, 2018 11:02 pm

Impulse response — Измеряем импульсную характеристику звукового тракта

Post by iHs » Sat May 26, 2018 11:20 pm

Данная программа демонстрирует возможность измерить импульсную характеристику звукового тракта "аудио выход - усилитель - акустическая система - окружающая среда - микрофон - аудио вход".

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

Как это работает? Очевидно, что звук поступает с выхода на вход не мгновенно. Если взять одиночный импульс (дельта-функцию), излучённый динамиками, то он поступит на вход с некоторой задержкой. Но помимо этого, так как не бывает идеальных акустических систем, которые воспроизводят всю полосу частот от нуля до бесконечности без искажений (даже акустика класса Hi-Fi имеет ограниченную полосу пропускания - от 20 до 20000 Гц), импульс изменяет свою форму - вместо одиночного пика микрофон улавливает несколько разнонаправленных колебаний. С точки зрения математики, записываемый микрофоном сигнал является свёрткой сигнала, подаваемого на динамики, с некоторой функцией, которую нам и нужно найти. Программа генерирует бинарный белый шум (который целиком состоит из пиков +amp и -amp), и для каждого значения t - задержки между выходом и входом (от нуля до некоторого предела) - вычисляется произведение выходного сигнала на входной. Путём усреднения множества таких произведений получается акустическая импульсная характеристика. Чем больше данных взято для усреднения (по умолчанию 256), тем точнее результат и меньше уровень шума.

Для чего измеряют импульсную характеристику?
  1. При оценке акустической картины помещения, т.е. например, для того чтобы узнать, как звучит данная конкретная акустика в данном помещении с точки зрения данного слушателя, к звуковому входу компьютера подключают измерительный микрофон, представляющий собой откалиброванный электретный микрофон (капсюль), устанавливают его на месте слушателя, подают на динамики тестовый сигнал и с помощью специального ПО измеряют корреляцию между выходным и входным сигналами. Записанную импульсную характеристику можно использовать для "исправления" звука динамиков (англ. Digital room correction). Поскольку сигнал с микрофона представляет собой результат свёртки исходящего сигнала с записанной импульсной характеристикой, следует выполнить операцию, подобную деконволюции (обратной свёртке), и в результате будет рассчитан КИХ-фильтр - применяя его к выходному сигналу, мы добьёмся идеального звучания любой акустики :)
  2. Для подавления эха при голосовой связи. Как мы уже знаем, эхо - это не просто копия сигнала, пришедшая с задержкой. Недостаточно измерить одну только величину задержки, чтобы убрать эхо. В приложениях типа Skype в реальном времени производятся вычисления, суть которых примерно та же, что и в представленной программе.
Ссылка на файл:
impulse_response.pixi
файл обновлён 08.06.18, старая версия была скачана 2 раза.
(18.59 KiB) Downloaded 11 times
Как пользоваться программой:
  1. Убедитесь, что в помещении достаточно тихо, микрофон и динамики устройства работают; запустите программу и дождитесь появления графика. Если между шумом на выходе и шумом на входе имеется что-то общее - на графике появится пик, положение которого по оси Х равно задержке между выходным и входным сигналами.
    Буфер обмена02.png
    Буфер обмена02.png (30.55 KiB) Viewed 385 times
    Надпись "Peak at ..." указывает местоположение пика и величину задержки.
  2. Далее надо настроить вид графика так, чтобы увеличить импульс и поместить его ближе к началу окна. Первый слайдер - уровень исходящего сигнала. Второй слайдер - длина измеряемой импульсной характеристики (регулируется как степень двойки). Так как эта длина равна 32768 отсчётам, а задержка сигнала равна 5883, можно уменьшить её в 4 раза. Третий слайдер - размер пакета - задаёт количество данных (массивов выборок in*out), которое берётся для усреднения. Чем больше это значение, тем меньше уровень шума на графике, но медленнее обновляется сам график. Четвёртый слайдер - смещение начала графика. Также смещение можно настроить, двигая график мышью.
    Если пик виден достаточно хорошо (как на скриншоте), то можно один или несколько раз воспользоваться кнопкой "Auto adjust", данная кнопка вдвое уменьшает длину, увеличивает выборку и подгоняет смещение. Если устойчивый пик на графике отсутствует - возможно, у вас очень большая задержка (можно попытаться увеличить второй параметр) или много постороннего шума (можно увеличить третий параметр); может быть, следует переподключить звуковые устройства, перезапустить программу или вернуться к пункту 1.
  3. После настройки параметров нажимаем Запись (Record). По мере сбора данных шума на графике будет становиться всё меньше, а отношение сигнал/шум (справа внизу) увеличиваться. Строго говоря, посторонние звуки (если они не слишком громкие) данному процессу не помешают, так как они не коррелированы с шумом, генерируемым программой, и со временем они просто отфильтруются. Когда количество записанных данных покажется достаточным, нажимаем Stop.
    Пример 1: Windows, запись ведётся со стерео микшера. Величина задержки всё время меняется от 4800 до 7900 сэмплов, так что "отловить" импульс бывает трудно (скрин № 2.2, ниже), возможно это связано с лагами самой ОС. Увеличив интересующий участок, записываем звук в течение примерно 1 минуты (скрин № 2.3). Видим, что основной импульс "размазан" во времени и сопровождается ещё несколькими колебаниями вверх-вниз. Это значит, что даже внутри микшера ПК звук не просто передаётся с выхода на вход, а проходит через какие-то фильтры, влияющие на форму сигнала.
    w1_1.png
    w1_1.png (26.55 KiB) Viewed 385 times
  4. Когда запись завершена, становятся доступными две последние кнопки. Нажав Show FFT, мы получим преобразование Фурье нашей импульсной характеристики - это будет частотная характеристика исследуемого звукового тракта (скрин № 2.4, выше). Идеальная импульсная характеристика - это одиночный импульс, и ей соответствует ровный спектр, но она почти никогда не бывает идеальной - различные звуковые фильтры, отражения звука, эхо и т.д. "размазывают" этот импульс и отражаются на частотной характеристике. Здесь по оси Х отложена частота - от 0 до половины частоты дискретизации (48000 Гц / 2 = 24000 Гц). После 18 кГц имеется провал в высоких частотах, но в остальном спектр почти ровный, и это соответствует тому, что на импульсной характеристике мы всё-таки видим острый пик. Вывод: в представленном случае внутренние звуковые фильтры ПК немного искажают спектр сигнала, подавляя высокие частоты.
  5. При желании можно сохранить записанные данные в файл формата CSV - последняя кнопка.
Last edited by iHs on Wed Jun 27, 2018 9:34 pm, edited 1 time in total.

iHs
Posts: 11
Joined: Sat Jan 13, 2018 11:02 pm

Re: Impulse response — Измеряем импульсную характеристику звукового тракта

Post by iHs » Sun Jun 10, 2018 11:11 pm

Пример №2: Windows. Подключаем микрофон. Видны посторонние шумы (фото №1), но, увеличив размер выборки с 1024 до 4096, мы их отфильтровываем (фото №2). Расстояние между динамиком и микрофоном около 20 см. Подгоняем смещение начала графика (которое постоянно скачет) и записываем звук в течение примерно 1 минуты (фото №3). После основной серии пиков (отрицательный - положительный - отрицательный ...), которые соответствуют прямому распространению звука от динамика до микрофона, спустя 0,8 - 0,9 мс (если умножить на скорость звука, то в пространственном масштабе это 0,28 - 0,3 м) видны широкие, более "размазанные" колебания (они также начинаются с отрицательного пика) - это отражение звука от стола. Отражение от стены не удалось хорошо записать, т.к. амплитуда какого-либо одного отражения довольно мала и она теряется в звуковом хаосе, начинающемся на расстояниях далее 0,5-2 метров от динамика (на таких расстояниях звук отражается буквально от всего и всё это смешивается в одну общую картину реверберации). Видна неравномерность спектра (фото №4), в нижних частотах множество полос подавления и усиления - это говорит о неидеальности акустической системы и характеристик помещения :)
w2_1.png
w2_1.png (27.62 KiB) Viewed 384 times
Пример №3: Android-смартфон со своими динамиком и микрофоном. В отличие от ПК, задержка сигнала оказалась немалой - 21446 сэмплов (446 мс), но стабильной, не "скачет". Находим импульс и записываем его (фото №2 - первая попытка; надо бы увеличить длительность; фото №3 - вторая попытка). Сразу обращаем внимание, что на графике нет узкого пика шириной 1 сэмпл, и колебания довольно гладкие - это значит, в записанном сигнале подавлены высокие частоты. Смотрим спектр (фото №4) и видим: нижние частоты примерно до 500 Гц почти отсутствуют, что типично для динамика телефона, но также срезаны и высокие частоты, особенно после 9-10 кГц (как потом выяснилось, так работает микрофон - он почти не воспринимает высокие частоты выше 10-12 кГц).
Attachments
android_1.png
android_1.png (44.52 KiB) Viewed 384 times

Post Reply