Спектральный шумоподавитель своими руками

Добавил пользователь Morpheus
Обновлено: 18.09.2024

Всем привет! Меня зовут Оля Яковенко, я разработчик в MTS AI, занимаюсь задачами по автоматической обработке сигналов. В частности, на данный момент я исследую различные подходы шумоподавления для последующего распознавания речи, и сегодня я хотела бы поделиться с вами обзором и некоторыми находками на эту тему.

Шумоподавление – это процесс выделение полезного сигнала из смеси полезного сигнала и шума. Допустим, у нас есть речь человека, записанная на оживлённой улице, в таких условиях одновременно с речью могут появляться другие звуки:

шум дорожного движения (шум шин, звуковые сигналы);

фоновая речь людей (речь прохожих, реклама, обращения торговцев);

ремонт/стройка в городе (грохот плит, сверление).

Задача шумоподавления в этом случае – выделение целевой речи человека, например, репортёра на улице, среди шума. Ниже представлены спектрограммы одной аудиозаписи, по ней можно понять, какую операцию нам нужно проводить автоматически.


Наша команда в МТС ИИ, которая называется ASR End2End, экспериментирует с различными видами шумоподавления как предобработки сигнала для последующего распознавания речи. Мы обсудим далее, что такое применение шумоподавления несколько отличается от шумоподавления для улучшения звучания аудио для человеческого уха.

Шум в звуковом сигнале определяется как беспорядочные колебания звуковых волн. Формально взаимодействие полезного сигнала и шума обычно описывается в литературе следующей формулой:

– смесь полезного сигнала и шума, т.е. сигнал из реальных условий записи.

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

Шумоподавление в нашей жизни

Методы шумоподавления используются при очистке аудио от лишних звуковых событий для последующего повторного воспроизведения. При монтаже фильмов, музыки, подкастов и прочих медиа зачастую требуется избавляться от лишних звуковых событий. При таких задачах может также потребоваться общее улучшение качества записи. Это включает в себя не только удаление шума, но и модифицирование сигнала, которое может улучшить восприятие записанной речи. Подобные инструменты обычно доступны в редакторах аудио и программах-микшерах для создания треков. Например, в одном из самых известных аудиоредакторов Audacity используется подход, который называется “шумовые ворота” (noise gate), вернее, их конкретная спектральная разновидность, используемая после быстрого преобразования Фурье (FFT). Помимо этого, в Audacity есть оконные механизмы по сглаживанию сигнала и удалению его небольших артефактов. Инструменты в Audacity по шумоподавлению особенно хорошо подходят для восстановления микрокассетных записей [1].


Популярной и сложной задачей является шумоподавление на лету – шумоподавление и воспроизведение одновременно с записью речи. Преследуемая цель – это маскировка звуков, которые не имеют отношения к произносимой человеком информации и мешают ее восприятию. Чаще всего такое шумоподавление используется для аудиоконференций в Skype, Zoom, Discord и пр. Шумоподавление на лету как правило использует те же принципы “шумовых ворот”, но помимо этого применяются методы машинного обучения для очистки сигнала на лету. Например, компания Microsoft по результатам соревнования DNS-Challenge [2] адаптировала наилучшие решения под свои разработки Skype и Teams. Эти решения основаны на рекуррентных нейронных сетях с LSTM блоками и на свёрточных нейронных сетях [3, 4]. В результате новейшие версии Skype и Teams способны в режиме реального времени транслировать чистый голос при наличии агрессивных шумов: дрели, вентилятора или ветра.


Классификация шумов

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


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

Категории шума приведены для того, чтобы разграничить шумы по сложности их подавления. Сложность задачи шумоподавления кроется в непредсказуемости шумов, которые могут возникнуть в звуковом сигнале. Мы можем с относительной лёгкостью убрать шум из сигнала, если нам заранее известно, какой вид шума находится в этом сигнале и где. Кроме того, нам достаточно легко избавляться от стационарного шума, потому что мы легко можем определить порог громкости в спектре, так как белый шум будет равномерно распределён по всему сигналу, и во фрагментах тишины мы будем чётко наблюдать амплитуды шума. Можно построить следующую пирамиду сложности задач:


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


Давайте теперь подробно разберем, как традиционные, так и продвинутые методы шумоподавления в аудио.

Традиционные методы шумоподавления

О самых простых традиционных методах шумоподавления я уже рассказала, они используются в условиях, когда мы программно не знаем, какой характер шума и речи. Такое отсутствие информации также наблюдается, когда мы хотим избавляться от шума на лету. При таком шумоподавлении используются обычные или спектральные пороги – заглушаются любые отзвуки, если они не превышают определённого порога по громкости.

В основе других традиционных методов лежит моделирование распределения чистой речи или шума. Делается это с помощью нахождения спектральной плотности мощности (громкости) сигнала. Плотность мощности сигнала – вариант описания распределения значений сигнала в разные моменты времени. Спектральная плотность мощности сигнала, в свою очередь, – функция, которая описывает распределение мощности сигнала в зависимости от частоты, а именно – возможную мощность в различные единицы частоты. В таком случае, имея спектральную плотность мощности шума, можно использовать метод спектрального вычитания (spectral subtraction).


Винеровское оценивание (Wiener filter) используется в качестве одного из традиционных обучаемых способов шумоподавления, отчасти похожий на метод спектрального вычитания. Этот подход основан на оптимальном подборе такого фильтра, который бы минимизировал разницу между чистым сигналом и улучшенным сигналом. Подобно некоторым алгоритмам машинного обучения, при вычислении винеровского фильтра минимизируется метрика Mean Square Error (MSE).

где - спектр чистого сигнала, - спектр зашумлённого сигнала, - спектр шумного сигнала.

Нейросетевые методы шумоподавления

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

В зависимости от способа решении задачи шумоподавления, разграничения спикеров или улучшения сигнала алгоритмы машинного обучения можно разделить на две категории:


До описанных выше нейросетевых подходов использовались нейросетевые методы наложения масок на спектрограмму в сочетании с прямым и обратным преобразованиями Фурье. Однако подходы, которые основаны на маскировании спектрограмм, имеют некоторые недостатки. Например, фаза волны в чистом сигнале может отличаться от фазы волны в зашумлённом сигнале. Поэтому даже при вычислении идеальной маски для спектрограммы, восстановленная из грязного сигнала фаза может вносить какие-то элементы шума и портить итоговое качество шумоподавления.


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

Conv-TasNet

Предшественник этой архитектуры – TasNet [6]. Архитектура TasNet состоит из свёрточных энкодера и декодера с некоторыми особенностями:

выход энкодера ограничен значениями от нуля до бесконечности [0, ∞);

линейный декодер конвертирует выход энкодера в акустическую волну;

подобно многим методам-предшественникам на основе спектрограмм, на последнем этапе система аппроксимирует взвешивающую функцию (в данном случае LSTM) для каждого момента времени.

Conv-TasNet – модификация алгоритма TasNet, которая использует в качестве взвешивающей функции свёрточные слои с расширением (dilation). Это модификация была сделана после того, как свёртки с расширением показали себя эффективным алгоритмом при одновременном анализе и генерации данных переменной длины, в частности, для синтеза в таких решениях, как WaveNet [7].

Подход для разделения аудио/шумоподавления Conv-TasNet состоит из 3-х компонентов:

– смесь в определённый момент времени,

– количество источников, несущих вклад в смесь,

– источники в определённый момент времени.

Задача алгоритма машинного обучения – определить источники s1(t), … , sc(t), зная заранее количество источников C и смесь x(t).


1D блок, который используется в качестве энкодера и декодера, имеет следующую структуру:


Более подробно можно ознакомиться с алгоритмом и результатами экспериментов в исходной статье [8].

DEMUCS

Алгоритм DEMUCS или глубокое извлечение музыкальных источников (Deep Extractor for Music Sources) также используется для задач разделения источников в сигнале и шумоподавления. В отличие от предшественника Conv-TasNet, этот алгоритм напрямую генерирует источники из исходного сигнала, минуя промежуточное предсказание масок.


В качестве бутылочного горлышка в DEMUCS – однонаправленный LSTM слой. Это позволяет эффективно использовать алгоритм для анализа потоковых данных. Кодировщик и декодировщик сформированы из блоков, которые составлены из свёрточных слоёв (1D, 1x1 и 1D Transpose) и функций активации (Gated Linear Unit и Rectified Linear Unit). Они скомпозированы следующим образом:


В качестве функции потерь при шумоподавлении достаточно использовать L1 Loss между предсказанной записью и эталонной, но для улучшения сходимости авторы статьи используют также STFT Loss разного масштаба (STFT с разными параметрами при подсчёте функций потерь), который является суммой двух функций потерь – сходимости (spectral convergence) и амплитуд (magnitude):

HiFi-GAN

Походы, о которых я рассказала, хорошо генерализируются при решении задач шумоподавления, чтобы вычленять речь и избавляться от неречевых событий в аудио потоке. Но все эти алгоритмы могут создавать артефакты в сигнале, которые могут мешать восприятию человеком, либо портить качество дальнейшей автоматической обработки, например, распознавания речи. Отчасти избавиться от артефактов помогает сглаживание, как я упоминала ранее, но оно часто попутно снижает чёткость всего аудио. В отличие от предшественников, генеративно-состезательная сеть высокой точности (High Fidelity Generative Adversarial Network) хорошо справляется с генерацией аудио подобно студийной записи без артефактов искусственной генерации.


Алгоритм состоит из трёх основных частей:


За генерацию чистого сигнала на основе зашумлённого отвечает блок WaveNet, этот алгоритм изначально успешно использовался для синтеза речи (текст → аудио). При модификации задачи для анализа аудио эта архитектура также показала себя эффективной. Особенность WaveNet-а для шумоподавления в том, что генерация нового сигнала происходит для всей записи целиком, а не для каждого момента времени t_n, как это делается в исходном алгоритме WaveNet. Это позволяет улучшать скорость генерации за счёт параллелизации процессов, которые могут выполняться одновременно.


После генерации WaveNet-ом сигнал проходит через несколько свёрточных слоёв, этот этап называется Postnet. Postnet нужен, чтобы исправлять и уточнять грубое и приближенное предсказание WaveNet-а. Кроме Postnet-а регулирующее действие дополнительно оказывают четыре разных дискриминатора, которые обучены отделять чистые оригинальные записи от сгенерированных. Каждый дискриминатор принимает выход Postnet-а в разном формате:

Сигнал в исходном виде с разной частотой дискретизации:

Всё вместе связывается в следующую архитектуру:


В итоге для обучения используются следующие функции потерь (ФП):

L1 (абсолютная ошибка на сигнале);

ФП на лог-спектрограммах предсказаний и чистого сигнала после преобразования Фурье со следующими параметрами:

размер окна 2048 и шаг 512,

размер окна 512 и шаг 128

Состязательная ФП (adversarial loss) для обучения Postnet-a;

ФП глубинных признаков (deep feature loss) для обучения дискриминаторов.

Более подробно о функциях потерь, об архитектуре, а также об экспериментах советую ознакомиться в исходной статье [10]

В заключение

В последние несколько лет тема нейросетевого шумоподавления становится все популярнее и пока не останавливается на достигнутом. Проводятся соревнования по шумоподавлению, в том числе по шумоподавлению потоковых данных, где отрабатываются очень интересные алгоритмы, кроме тех, о которых я рассказала [11]. Но если хочется с чего-то начать, то сначала предлагаю познакомиться с ними! :)


После установки всех дополнений по музыке, звуку и видео, оставалась одна из не решённых проблем.


Тема будет интересна и полезна всем кто обладает устройством "ЯТУР" или "ИКСКАРЛИНК", "АУДИОЛИНК".



Дело в том, что у этих устройств, помимо USB входа, есть ещё так называемый AUX вход через который можно подключать любые посторонние источники звука к штатному СД. Будь то айфон, айпод, мп3 плеер, телефон и тд .И можно слушать музыку, как через впаянный аудио вход в штатной магнитоле.Качество на уровне, но есть одно "НО".
Стоит подключить любое из этих устройств в прикуриватель авто или просто к бортовой сети авто, как сразу появляется фон и помехи, которые слышны при высоком уровне громкости в динамиках и особенно при включённом зажигании и заведённом автомобиле.При езде с каждым нажатием педали газа отчётливо прослушивается свист от генератора в колонках и это никак не может не раздражать. То же самое бывает при установке доп усилителя и нештатной акустики.

При установке усилителя часто появляются помехи из-за паразитных контуров. Несколько точек заземления на корпус с разным сопротивлением вызывают блуждающие токи, которые служат причиной появления шума. Для решения этих проблем служит линейный шумоподавитель NF 100.

Да если громкость не более половины, то всего этого почти не слышно, но меня это не устроило. А стоит вынуть питание любого постороннего девайса (источника звука) из прикуривателя и он начинает работать на встроенном аккумуляторе, а в салоне в акустике наступает полная тишина без шумов и помех, абсолютно чистый звук.
Боролся я с ним всеми вышеописанными методами и уже почти отчаялся, интернет и поиски помощников на драйве к сожалению тоже не дали результата. И вот наткнулся на просторах на :
АКУСТИЧЕСКИЙ ЛИНЕЙНЫЙ ФИЛЬТР



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








Все материалы добавляются пользователями. При копировании необходимо указывать ссылку на источник.

Читайте также: