Друзья, сегодня мы поговорим о цифровой обработке аудио в скриптах Engee. Рассмотрим демо-проект, в котором описываются типичные этапы технических вычислений при цифровой обработке сигналов (ЦОС). Для этого в нашем скрипте мы использовали функции из библиотеки DSP.jl.

Мы заранее подготовили наглядный пример зашумлённого аудио, в котором можно слышать голосовое сообщение (обратный отсчёт) на фоне свиста и шума толпы.
Задача – выделить полезную составляющую сигнала, которой для нас является голос.
В первую очередь нам интересно послушать наш исходный WAV-файл, и для этого подключаем пакет WAV.jl. Для удобства прослушивания мы написали вспомогательную функцию audioplayer, позволяющую использовать интерактивный инструмент для проигрывания аудио прямо внутри скрипта Engee.

Затем нам важно отобразить аудио-сигнал на временной оси. Мы используем стандартную функцию plot. Впрочем, форма сигнала во временной области не даёт нам понимания, что и как фильтровать.
Мы переходим к спектральному анализу! Отображаем спектральную плотность мощности методом Уэлча (функция DSP.welch_pgram), а также смотрим спектрограмму сигнала, то есть картину изменения спектра сигнала во времени.
Определив частотные диапазоны (полосы) полезного сигнала и шума, мы приступаем к разработке подходящего цифрового фильтра. Используя функции из библиотеки DSP.jl мы получаем коэффициенты фильтра нижних частот, рассчитываем и визуализируем его характеристики (АЧХ, ФЧХ, ИХ).
Наконец, мы применяем разработанный фильтр к аудио-сигналу, смотрим на вид отфильтрованного сигнала в частотной и временной областях, и конечно, прослушиваем результат обработки при помощи нашего аудиопроигрывателя.
Этот и другие примеры из области ЦОС доступны для ознакомления в нашем сообществе, присоединяйтесь и изучайте захватывающий мир обработки сигналов!
До скорой связи!