rnnoise

Библиотека для подавления шума в аудиосигналах в реальном времени. Она использует гибридный подход, сочетающий рекуррентные нейронные сети (RNN) с традиционными методами цифровой обработки сигналов (DSP). Благодаря высокой эффективности и малой вычислительной сложности, RNNoise способна работать даже на встраиваемых устройствах, и широко применяется в системах голосовой связи, включая WebRTC.

Особенности

  • гибридная архитектура, объединяющая рекуррентные нейросети (GRU) для оценки шума и традиционные DSP-алгоритмы для фильтрации;
  • работа в реальном времени с задержкой всего 10 миллисекунд на кадр;
  • обработка полночастотного (full-band) аудио с частотой дискретизации 48 кГц;
  • поддержка моно-сигнала с разрядностью 16 бит;
  • возможность использования предобученных моделей, а также обучения собственных моделей на пользовательских данных.

Основные компоненты

RNNoise предоставляет API на языке C для интеграции в приложения, а также включает примеры использования и утилиты командной строки. Все основные операции сосредоточены вокруг состояния обработчика, которое инкапсулирует нейросетевые веса, DSP-параметры и буферы для покадровой обработки (подробнее с документацией можно ознакомиться здесь).

Инициализация и управление состоянием

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

Основные функции:

  • rnnoise_create() — создаёт новое состояние и загружает встроенную модель шумоподавления. При необходимости можно передать путь к внешнему файлу с моделью (если библиотека скомпилирована с поддержкой этой возможности). Возвращает указатель на состояние или NULL в случае ошибки.
  • rnnoise_destroy() — освобождает всю память, связанную с состоянием, включая внутренние буферы и веса нейросети.
  • rnnoise_get_frame_size() — возвращает фиксированный размер кадра в сэмплах (480 сэмплов, что соответствует 10 мс при частоте 48 кГц). Это значение необходимо для выделения входных и выходных буферов правильного размера.

Обработка аудиокадров

Основная функциональность библиотеки реализована в функциях обработки одного кадра аудиоданных. Входной и выходной сигналы представляют собой массивы 16-битных целых чисел со знаком.

Ключевая функция:

  • rnnoise_process_frame() — обработка одного кадра аудиоданных. Принимает указатель на состояние, указатель на входной буфер (зашумлённая речь) и указатель на выходной буфер (очищенная речь). Входные данные заменяются обработанными Функция автоматически вычисляет вероятность наличия голоса (Voice Activity Detection, VAD), которая может быть использована для дополнительной логики в приложении.

Работа с моделями

По умолчанию библиотека поставляется со встроенной моделью, обученной на 6.4 ГБ зашумлённых речевых данных. Однако архитектура позволяет подменять модель без перекомпиляции:

  • Встроенная модель — оптимальна для большинства случаев общего назначения, хорошо справляется со стационарными шумами (вентиляторы, кондиционеры) и нестационарными помехами (клавиатура, музыка на заднем плане).
  • Пользовательские модели — могут быть обучены с помощью предоставленных скриптов на Python (в отдельном репозитории rnnoise-training). Это позволяет адаптировать шумоподавление под конкретные условия, например, для подавления шума в автомобиле или производственном цехе. Модель экспортируется в бинарный файл, который загружается при создании состояния.
  • Формат модели — веса хранятся в компактном виде с пониженной точностью (16‑битные числа с фиксированной точкой), что обеспечивает малый размер и быстрые вычисления на процессорах без FPU.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "rnnoise/0.2@aurora",
    )    

Процесс локальной сборки описан в документации.

rnnoise

Recurrent neural network for audio noise reduction.
Лицензия
BSD-3-Clause
Версия
Автор
Angelica Volkova <angelica.volkova@fruct.org>
Скачать
armv7
108.41 Kb
MD5: 22a536cb4341a98403040cb3c741c21b
Updated: 03.09.2025, 20:34:50
armv8
110.28 Kb
MD5: 0f1bc616da7f6726c2b6cee2f8777c32
Updated: 03.09.2025, 20:34:43
x86_64
115.21 Kb
MD5: a4e492af01d9ed514f5ae82bfae646cc
Updated: 03.09.2025, 20:34:51
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.