Microfone - supressão de ruído de fundo estático no Linux

13

Minha placa de som é o Realtek ALC 892. No Windows 7, uso drivers oficiais da Realtek, no Linux, uso o PulseAudio (no Ubuntu 13.10). No Windows e no Linux, quando ativo o aumento de microfone + 30db (necessário porque meu microfone está silencioso), recebo um ruído de fundo muito irritante e alto (também confirmei o ruído de fundo com o Audacity nos dois sistemas).

No entanto, os drivers do Windows Realtek têm a opção de supressão de ruído que funciona (após ativá-lo, o Audacity não mostra ruído de fundo e meus ouvidos também confirmam que não há ruído de fundo).

Imagem mostrando a opção de supressão de ruído

Minha pergunta é como posso ativar a supressão de ruído de fundo no ALSA / PulseAudio? Existe algum módulo que eu possa instalar ou talvez haja uma configuração que possa ser ativada no arquivo de configuração?

Não consigo encontrar uma solução para isso e isso é a única coisa que me impede de mudar completamente para o Linux - como falo muito usando microfone e no Windows o software Realtek remove completamente o ruído de fundo e o PulseAudio não o remove, o que significa que a voz gravada no Linux é muito ruim.

Sei que poderia comprar melhores placas de som e microfones, mas como eu disse, os drivers do Windows Realtek removem o ruído no nível do software em tempo real (ou seja, não há ruído ao falar no TeamSpeak3 / Steam / qualquer programa de voz), por isso espero que exista essa opção no Linux também.

Isso também é cruzado no Ask Ubuntu, que por sua vez já foi respondido aqui .

user1873947
fonte
1
Crossposted: askubuntu.com/questions/421671/… Não há nada de errado com esse IMO se você o indicar explicitamente. Caso contrário, você criará o potencial de as pessoas desperdiçarem seu tempo postando respostas duplicadas etc.
goldilocks
2
A @goldilocks adicionou informações nos dois sites que são cruzadas para garantir que não haverá respostas duplicadas
user1873947

Respostas:

5

De acordo com a especificação Realtek , o

  • Tecnologia de cancelamento de eco acústico de microfone (AEC), supressão de ruído (NS) e formação de feixe (BF) para aplicações de voz

está listado na lista Recursos de software . Eu também procurei na folha de dados do chipset ALC892 e na verdade não é um recurso do chipset. Portanto, confirma-se que essa funcionalidade é apenas um recurso de software, tratado pelo driver do Windows ALC892.

Portanto, eu colocaria o esforço em uma solução mais geral da supressão de ruído no linux, não vinculada a esse driver em particular:

/programming//q/4875818/684229

Tomas
fonte
obrigado pela resposta. No entanto, a pergunta que você vinculou diz sobre cancelamento de eco, que é diferente da redução de ruído de fundo estático (o eco é dos alto-falantes, o ruído estático geralmente é causado pelo hardware).
user1873947
Aparentemente, a Realtek (e outras) foi processada por violação de patente devido à implementação desse recurso lexology.com/library/… Pode valer a pena conferir as patentes mencionadas lá.
Fizz
Como não estou convencido da durabilidade desse link: "Patentes nos EUA 5.825.898 (patente '898); 6.483.923 (patente' 923); 6.049.607 (patente '607); 6.363.345 (patente' 345); e 6.377.637 (a patente '637) ".
Fizz
3

Se esse é um recurso do dispositivo e não apenas o software que o acompanha (provavelmente o primeiro), ele deve ser implementado no driver do kernel. 1 Parece-me que, normalmente, as placas de som Realtek PCI realmente usam o driver Intel HDA com um patch para dar suporte aos codecs ALC (para quem estiver interessado:[src]/sound/pci/hda/patch_realtek.c :).

A pesquisa na documentação de origem do kernel, "supressão de ruído" ou "cancelamento de eco" não é mencionada em relação a esses dispositivos. Pesquisando a própria fonte do driver, também não é mencionado explicitamente. Acho que, se fosse implementado, isso quase certamente seria documentado com uma interface /procou /sysqual software de espaço do usuário poderia usar, ou com opções para o módulo do driver.

A questão, é claro, é que a Realtek, como a maioria dos fabricantes de hardware, considera secreto o código-fonte do driver, dificultando ou impossibilitando a criação de drivers para terceiros, por exemplo, sistemas que a Realtek não suporta totalmente, como o Linux . A Realtek tem uma página listando um driver Linux , no entanto, os links parecem estar inoperantes. Se você tiver melhor sorte, alguém terá instruções para instalá-lo aqui (esse é um site orientado ao Mint, mas o processo será o mesmo para qualquer distribuição). 2

No entanto , mesmo que você possa encontrar uma cópia em algum lugar, duvido muito que o driver implemente os recursos que você deseja, pois não há menção a isso que eu possa encontrar. Muito provavelmente, é mais ou menos o mesmo que você já tem; pode ser um pouco melhor (a página Mint menciona que o driver do kernel troca os alto-falantes laterais e traseiros), mas também pode acabar sendo pior ou completamente inoperante, pois os drivers fora da árvore não são examinados pelos desenvolvedores do kernel e pode conter problemas em relação ao kernel que os autores desconhecem (observe que os autores do patch hda na árvore têm@realtek.com.tw endereços de email).

Portanto, a menos que ouça algo diferente, você provavelmente está sem sorte. Você pode procurar soluções de software para isso, aparentemente esses recursos são implementados pelo Skype no Linux, para que eles possam funcionar em tempo real usando apenas o software. Alguém também escreveu um papel nele, lol. Infelizmente, não tive mais sorte procurando ao redor.

alguma discussão aqui sobre o uso dos recursos alsamixerpara realizar alguma redução de ruído. Eu acho que você terá que desativar o pulseaudio para fazer isso.


1. O Pulseaudio é, na verdade, uma ferramenta de espaço do usuário criada sobre o ALSA, o subsistema de som do kernel (o que significa: o pulseaudio não implementa o acesso ao hardware, apenas trabalha com fluxos vindos / indo para o driver do kernel).

2. Se você o encontrar, deseja a versão 3.0, não a versão 2.6. Esses números se referem à versão do kernel do linux com a qual são compatíveis e você está usando um kernel 3.x. No entanto, novamente, se o som estiver bom, recomendo fortemente que você não se incomode com isso, pois é improvável que faça algo por você.

Cachinhos Dourados
fonte
Obrigado pela resposta detalhada. No entanto, encontrei algo chamado "módulo webrtc-aec" descrito aqui: wiki.gentoo.org/wiki/PulseAudio . No entanto, parece que só funciona em aplicativos compatíveis com esse módulo, está correto? Também é possível que isso esteja desabilitado no Ubuntu, por acaso você sabe como habilitar este módulo no PulseAudio? Pode ser a solução para o meu problema
user1873947 16/02
Eu não sinto muito. O módulo pulseaudio seria um exemplo de solução de software. Parece que o tipo de coisa que seria melhor tratado com uma pergunta específica e separada;)
goldilocks