Remoção de ruído em tempo real com o PulseAudio?

48

É possível fazer remoção de ruído em tempo real com o PulseAudio, então a saída de som que está saindo é mais suave?

    
por Vadi 27.12.2010 / 03:46

5 respostas

47

Módulo Pulseaudio module-echo-cancel

Comecei a ler muito sobre as opções do PulseAudio e "ocultas" para que eu pudesse encontrar uma que fosse semelhante a essa pergunta. O que eu encontrei foi o módulo de cancelamento de ruído, que reduz dramaticamente qualquer ruído estático no microfone e até MUITO do ruído de fundo, basicamente dando a você o benefício de apenas gravar sua própria voz com excelente qualidade (para gravação de áudio). por exemplo). Para fazer isso, siga estas etapas:

  1. sudo nano /etc/pulse/default.pa

  2. Adicione a seguinte linha em qualquer lugar no arquivo, mas eu recomendo quase no final, onde você encontrará um comentário sobre o material Echo Cancellation (~ linha 140):

    load-module module-echo-cancel
    
  3. Recarregue o PulseAudio ( pulseaudio -k ) ou simplesmente reinicie o computador. Você deve ser capaz de selecionar a nova opção Cancelamento de Ruído na Seção de Dispositivo de Entrada:

Você pode encontrar mais informações sobre isso na Página do Módulo Echo Cancel

Definir entrada como padrão

Se desejar definir como padrão o dispositivo de cancelamento de eco, basta transformar a linha acima em :

load-module module-echo-cancel source_name=logitechsource

e, em seguida, na parte inferior do arquivo, adicione

set-default-source logitechsource

Neste caso, eu nomeei a fonte logitechsource , mas você pode nomear o que quiser e simplesmente reiniciar o pulseaudio.

Renomear dispositivo

Por fim, se você não quiser um nome super longo nas configurações de som (quando quiser selecionar um dispositivo de entrada / saída). Minha sugestão é renomear o dispositivo de entrada assim:

load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD

E novamente, reiniciar o pulseaudio. O resultado final é assim:

    
por Luis Alvarado 29.04.2016 / 17:41
11

Essa é uma pergunta antiga, mas eu tive o mesmo problema e depois de pesquisar no Google (onde eu encontrava principalmente pessoas que concordavam que não era possível) e lendo algumas páginas de manual, agora desenvolvi uma solução baseada na idéia do user2330377.

Primeiro, você precisa criar um perfil de ruído para o SoX. Basta usar qualquer programa de gravação de áudio para gravar alguns segundos de ruído e, em seguida, cd no diretório em que você salvou e fazer sox noise.wav -n noiseprof noise.prof .

Então você precisa criar um dispositivo de loopback ALSA:

sudo modprobe snd_aloop

Isso é necessário porque o pulseaudio, ao contrário do Jack, não pode conectar diretamente o software de áudio; Por isso, usaremos o dispositivo de loopback como proxy.

Agora, você precisa iniciar paman e encontrar os nomes de seu microfone (ou outro dispositivo de gravação) e do dispositivo de loopback que acabamos de criar. Uma vez encontrados, você pode executar o seguinte comando para iniciar a gravação de som do seu microfone, passando-o pelo SoX e, em seguida, reproduzindo-o no dispositivo de loopback:

pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec

(Onde é necessário substituir os nomes de dispositivos corretos pelos parâmetros -d - o dispositivo de entrada para a primeira chamada de pacat e a saída do dispositivo de loopback para a segunda).

Lá vai você, quase pronto! Como último passo, inicie a gravação do som com a aplicação da sua escolha, inicie pavucontrol , mude para o separador "Gravação" e defina o dispositivo de áudio utilizado para gravação (apresentado como o botão cinzento à direita) para "Monitor de dispositivo de loop de áudio ". Agora você deve ter uma gravação clara e sem ruído!

    
por cemper93 12.04.2015 / 02:50
3

A investigação mostra que não há nenhuma maneira conhecida de fazer filtragem de redução de ruído em tempo real com qualquer sub-sistema Linux. Alguns sites apontam para o hardware que você pode comprar, o que deve ser muito melhor do que fazer um filtro de software.

Alternativamente, se for para uma gravação, você pode passar o som pelo Audacity e usar o filtro de ruído lá.

    
por Martin Owens -doctormo- 08.01.2011 / 02:24
1

Aqui está, pelo menos, tom, implemente o webrtc-aec no

link

webrtc-aec Sim Usa a biblioteca webrtc.org AudioProcessing para melhorar as chamadas VoIP em aplicativos que a suportam, realizando cancelamento de eco acústico, controle de ganho analógico, supressão de ruído e outros processamentos.

Aqui está um artigo datado de 2013 sobre o assunto (remoção de ruído com pulseaudio e não webrtc-aec especificamente) link

"Apresentamos os primeiros resultados de uma solução multicanal de redução de ruído / eco construída sobre parte superior do PulseAudio e motivou as decisões de design. O trabalho resultou em várias melhorias na estrutura de cancelamento de sinais e processamento de eco PulseAudio, que foram contribuídos durante o ciclo de desenvolvimento da versão 3.0 / 4.0 e devem facilitar futuras soluções de áudio Linux incorporadas. Outros trabalhos incluem a otimização do código para mixagem de fluxo de áudio, métodos de reamostragem mais eficientes e a implementação de um AEC eficiente no pipeline de processamento multicanal. "

    
por user2330377 22.06.2013 / 17:52
0

Não há nenhuma informação na página de documentação do módulo sobre cancelamento de ruído. Existe apenas o algoritmo AEC (Acoustic Echo Cancellation) dentro de module-echo-cancel, que possui diversas implementações, como webrtc | speex.

Portanto, você deve comprar microfones de fone de ouvido com recurso de cancelamento de ruído integrado o máximo possível.

Como testei a gravação de voz no Ubuntu, encontrei algumas qualidades particulares:

  • Skype, o Telegram usa entrada bruta do dispositivo padrão (no meu caso, conectores front-in-mic | backward-mic). Se você precisar cancelar um ruído nesses aplicativos, você deve comprar fones de ouvido | microfones somente com o recurso de cancelamento de ruído integrado

  • Se você precisar usar chamadas de voz no navegador, deve ter em mente que os navegadores têm suas próprias implementações de algoritmos de processamento de voz, por exemplo, WebRTC.

  • Também aplicativos web (sites como talky, hangouts, appear.in, etc) podem ter suas próprias implementações de algoritmos de processamento de voz, apesar do fato de que eles podem ser baseados em webrtc análise de retorno

por vskubriev 14.02.2018 / 09:35