RNNoise: пожертвуй свой шум для обучения нейросети Mozilla

fe1a54e05d5369fd5621f05870961593.jpg
Спектрограмма до шумоподавления, записана человеческая речь на SNR 15 дБ

d0a4d63eeee3128275c569075d0b5a39.jpg
Спектрограмма звука после обработки нейросетью RNNoise

Шумоподавление остаётся актуальной темой научных исследований по крайней мере с 70-х годов прошлого века. Несмотря на значительные улучшения в качестве систем, их высокоуровневая архитектура практически не претерпела изменений. Техника спектральной оценки полагается на спектральную оценку шума, которая, в свою очередь, работает при помощи детектора голосовой активности (VAD) или тому подобного алгоритма. Каждый из трёх компонентов требует аккуратной подгонки — и их трудно настраивать. Поэтому достижения Mozilla и Xiph.org в глубинном обучении имеют такое большое значение. Созданная ими гибридная система RNNoise уже сейчас демонстрирует неплохой результат в шумоподавлении (см. исходный код и демо).

Создавая RNNoise, разработчики стремились получить маленький и быстрый алгоритм, который будет эффективно работать в реальном времени даже на Raspberry Pi. И им это удалось, причём RNNoise показывает более качественный результат, чем самые крутые и навороченные современные фильтры.
59d39df95fe17047268763.png
Высокоуровневая структура большинства алгоритмов шумоподавления

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

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

59d3a5d17a36a936798306.png
Блок-схема обработки сигнала

Такой гибридный подход отличается от end-to-end сетей, где нейросеть берёт на себя абсолютно всю или почти всю обработку звука. Безусловно, подобные системы доказали свою эффективность, но разработчики RNNoise считают их слишком сложными и ресурсоёмкими. Например, в RNN-сеть для шумоподавления от Google (2012 год) напрямую оценивает величины частот. Для обработки звука на 8 кГц она задействует 6144 блоков в скрытых слоях и около 10 млн весовых показателей. Масштабирование на речь 48 кГц с фреймами по 20 мс создаёт слишком сложную систему с более чем 400 выходными сигналами (от 0 до 20 кГц). её точно не потянет Raspberry Pi. Задачей Mozilla было сделать простую и быструю модель, поэтому они применили гибридный подход. Кроме того, они вообще отказались от прямой работы с сэмплами и со спектром, а вместо этого разделили спектр на 22 диапазона — и анализировали именно их, а не 480 (сложных) спектральных значения, которые пришлось бы анализировать в противном случае. Эти 22 диапазона соответствуют человеческому восприятию звука на слух, в соответствии с психоакустической шкалой барков. Подобное распределение используется в кодеке Opus, и здесь Mozilla позаимствовала базовую модель, лишь немного скорректировав её.

94ef1f5978e4087fa35432955362ac77.png

Такой подход доказал свою эффективность. Программа потребляет лишь скромную долю вычислительных ресурсов процессора ARM Cortex-A53, работающего на 1,2 ГГц (Raspberry Pi 3).

Сравнительные тесты показали, что применение нейросети значительно улучшает качество шумоподавления. На диаграммах показано подавление шума от фоновых разговоров (слева), автомобилей (в центре) и уличного шума (справа) в сравнении с библиотекой SpeexDSP на основе MMSE.

59d3ab8aa9033803771828.png

Сейчас разработчики обращаются ко всем пользователям с просьбой пожертвовать свой шум в научных целях, то есть для обучения нейросети. Записать шум можно прямо в онлайне. Просят сделать это в любом окружении, где возможен разговор голосом, то есть буквально в любом месте: это может быть ваш автомобиль, офис, улица или какое угодно место, где вы можете общаться по телефону или через компьютер. На странице записи шума просто нажмите кнопку «Record» и помолчите 1 минуту. Для обучения нейросети нужно ещё указать, в каком конкретно окружении вы записывали тишину (шум).

Научная статья (pdf) с описанием RNNoise пока не подана для публикации в научный журнал.

© Geektimes