Reduzindo o ruído do microfone usando módulos pipewire

Reduzindo o ruído do microfone usando módulos pipewire

Com o pulseaudio, foi fácil carregar um módulo para redução de ruído do microfone. Este link explica isso claramente: https://askubuntu.com/questions/18958/realtime-noise-removal-with-pulseaudio

Quero adicionar rnnoise como um plugin do pipewire para cancelar o ruído do microfone para todos os usuários.

Procuro uma solução minimalista e gostaria de evitar aplicações. Como este: https://github.com/noisetorch/NoiseTorch?tab=readme-ov-file

Responder1

Instalarsupressão de ruído para voz. Em abril de 2024, não havia pacote Ubuntu, consulteesta questão em abertopara obter instruções de instalação. No entanto, ele é empacotado para Arch, Alpine, Gentoo e openSUSE. Veja seu README para configurações que você pode ajustar.

Responder2

Encontrei uma maneira de carregar rnnoisecomo um pipewireplugin para todos os usuários.

Passo 1:
Nesta páginavocê pode baixar os rnnoisedrivers compilados para Linux X86. Esta não é a última versão do rnnoise. Se você quiser a versão mais recente, acho que terá que realizar a compilação sozinho a partir dorepositório oficial do github.

Passo 2:
No arquivo baixado, você encontrará as bibliotecas Linux necessárias. Sempre use bibliotecas mono. Você provavelmente tem apenas um microfone! Proponho armazená-los em /usr/lib/audio/Então você terá que criar a pasta audio. Ao renomear os arquivos, agora tenho nesta pasta:

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

etapa 3
Crie as 2 pipewirepastas para obter este caminho:

/etc/pipewire/pipewire.conf.d/

Passo 4
Nesta pasta crie o arquivo 99-mic-denoising.conf. Neste arquivo cole este conteúdo:

    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
        }
    }
    }
    ]

Etapa 5
Reinicie o deamon do pipewire:

systemctl restart --user pipewire.service

Agora nas configurações do gnome você pode escolher o microfone com cancelamento de ruído.

Comentários

  1. Então usamos o módulo de cadeia de filtro pipewire. Verifique a documentação, é muito útil.
  2. Cada aplicativo (que usa áudio) foi projetado para usar um padrão (chamado API de plugin de áudio):
    • ladspa: padrão aberto... mas não é o mais novo
    • lv2: padrão aberto...o mais novo
    • vst3: padrão proprietário (você não deve vê-lo em programas de código aberto)
    • vst: padrão proprietário (você não deveria....)

Portanto, a solução que forneci não cobre aplicativos que usam o plugin de áudio lv2 (não me importo com padrões proprietários). Qualquer ajuda para o nível 2 é bem vinda.

informação relacionada