- PVSM.RU - https://www.pvsm.ru -

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

RNNoise: пожертвуй свой шум для обучения нейросети Mozilla - 1
Спектрограмма до шумоподавления, записана человеческая речь на SNR 15 дБ

RNNoise: пожертвуй свой шум для обучения нейросети Mozilla - 2
Спектрограмма звука после обработки нейросетью RNNoise

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

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

RNNoise: пожертвуй свой шум для обучения нейросети Mozilla - 3
Высокоуровневая структура большинства алгоритмов шумоподавления

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

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

RNNoise: пожертвуй свой шум для обучения нейросети Mozilla - 4
Блок-схема обработки сигнала

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

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

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

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

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

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

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

Автор: Анатолий Ализар

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/iskusstvenny-j-intellekt/264869

Ссылки в тексте:

[1] с 70-х годов прошлого века: http://ieeexplore.ieee.org/document/1163209/

[2] исходный код: https://git.xiph.org/?p=rnnoise.git;a=summary

[3] демо: https://people.xiph.org/~jm/demo/rnnoise/

[4] RNN-сеть для шумоподавления от Google: https://research.google.com/pubs/pub45168.html

[5] шкалой барков: https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D1%80%D0%BA_(%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0_%D0%B7%D0%B2%D1%83%D0%BA%D0%B0)

[6] библиотекой SpeexDSP на основе MMSE: https://www.speex.org/downloads/

[7] Image: https://habrastorage.org/webt/59/d3/ab/59d3ab8aa9033803771828.png

[8] пожертвовать свой шум: https://people.xiph.org/~jm/demo/rnnoise/donate.html

[9] Научная статья (pdf): https://arxiv.org/pdf/1709.08243.pdf

[10] Источник: https://geektimes.ru/post/293675/