Уменьшение шума микрофона с помощью модулей Pipewire

Уменьшение шума микрофона с помощью модулей Pipewire

С помощью pulseaudio было легко загрузить модуль для шумоподавления микрофона. Эта ссылка наглядно объясняет: https://askubuntu.com/questions/18958/удаление-шума-в-реальном-времени-с-пульсовым-диодом

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

Я ищу минималистичное решение и хотел бы избежать приложений. Например, вот это: https://github.com/noisetorch/NoiseTorch?tab=readme-ov-file

решение1

Установитьподавление-шума-для-голоса. По состоянию на апрель 2024 года пакета Ubuntu нет, см.этот открытый вопросдля инструкций по установке. Он упакован для Arch, Alpine, Gentoo и openSUSE. Смотрите его README для настроек, которые вы можете изменить.

решение2

Я нашел способ загрузить rnnoiseплагин pipewireдля всех пользователей.

Шаг 1:
На этой страницевы можете скачать rnnoiseдрайвера, скомпилированные для X86 linux. Это не последняя версия rnnoise. Если вы хотите последнюю версию, я думаю, вам придется выполнить компиляцию самостоятельно изофициальный репозиторий github.

Шаг 2:
В скачанном архиве вы найдете необходимые linux libs. Всегда берите mono libs. У вас, вероятно, только один микрофон! Предлагаю хранить их в /usr/lib/audio/Поэтому вам придется создать папку audio. Поскольку я переименовал файлы, у меня теперь в этой папке:

  • ladspa.so
  • lv2.so
  • vst3.so
  • vst.so

Шаг 3
Создайте 2 pipewireпапки, чтобы получить следующий путь:

/etc/pipewire/pipewire.conf.d/

Шаг 4
В этой папке создайте файл 99-mic-denoising.conf. В этот файл вставьте следующее содержимое:

    context.modules = [
        {name = libpipewire-module-filter-chain
        args = {
            node.description =  "Noise Canceling source"
            media.name =  "Noise Canceling source"
            filter.graph = {
                nodes = [
                    {
                    type = ladspa
                    name = rnnoise
                    plugin = /usr/lib/audio/ladspa.so
                    label = noise_suppressor_mono
                    control = {
                        "VAD Threshold (%)" = 90.0
                        "VAD Grace Period (ms)" = 200
                        "Retroactive VAD Grace (ms)" = 0
                    }
                }
            ]
        }
        capture.props = {
            node.name =  "capture.rnnoise_source"
            node.passive = true
            audio.rate = 48000
        }
        playback.props = {
            node.name =  "rnnoise_source"
            media.class = Audio/Source
            audio.rate = 48000
        }
    }
    }
    ]

Шаг 5
Перезапустите демон pipewire:

systemctl restart --user pipewire.service

Теперь в настройках Gnome можно выбрать микрофон с шумоподавлением.

Комментарии

  1. Мы используем модуль фильтр-цепочки трубопровода. Проверьте документацию, она очень полезна.
  2. Каждое приложение (использующее аудио) было разработано для использования стандарта (так называемого API аудиоплагина):
    • ladspa: открытый стандарт...но он не самый новый
    • lv2: открытый стандарт...самый новый
    • vst3: проприетарный стандарт (вы не должны его видеть в программах с открытым исходным кодом)
    • vst: фирменный стандарт (вам не следует ....)

Поэтому решение, которое я предоставил, не распространяется на приложения, использующие аудиоплагин lv2 (мне плевать на фирменные стандарты). Любая помощь для lv2 приветствуется.

Связанный контент