Micrófono - supresión de ruido de fondo estático en Linux


13

Mi tarjeta de sonido es Realtek ALC 892. En Windows 7 uso controladores oficiales de Realtek, en Linux uso PulseAudio (en Ubuntu 13.10). Tanto en Windows como en Linux, cuando habilito el refuerzo de micrófono + 30db (requerido porque mi micrófono está silencioso), obtengo un ruido de fondo muy molesto y fuerte (también confirmó el ruido de fondo con Audacity en ambos sistemas).

Sin embargo, los controladores de Windows Realtek tienen la opción de supresión de ruido que funciona (después de habilitarla, Audacity no muestra ruido de fondo y mis oídos también confirman que no hay ruido de fondo).

Imagen que muestra la opción de supresión de ruido

Mi pregunta es ¿cómo puedo habilitar la supresión de ruido de fondo en ALSA / PulseAudio? ¿Hay algún módulo que pueda instalar o tal vez haya una configuración que se pueda habilitar en el archivo de configuración?

No puedo encontrar una solución para esto y esto es lo único que me impide cambiar completamente a Linux: cuando hablo mucho con el micrófono y en Windows, el software Realtek elimina el ruido de fondo por completo y PulseAudio no lo elimina, lo que significa que la voz grabada en Linux es muy mala.

Sé que podría comprar una mejor tarjeta de sonido y micrófono, pero como dije, los controladores de Windows Realtek eliminan el ruido a nivel de software en tiempo real (es decir, no hay ruido cuando se habla en TeamSpeak3 / Steam / cualquier programa de VoIP), así que espero que exista esa opción en Linux también.

Esto también se ha cruzado en Ask Ubuntu, que a su vez ya se respondió aquí .


1
Crossposted : askubuntu.com/questions/421671/… No hay nada de malo en esa IMO si la indica explícitamente. De lo contrario, se crea el potencial para que las personas pierdan su tiempo publicando respuestas duplicadas, etc.
goldilocks

2
@goldilocks agregó información en ambos sitios que está cruzada para asegurarse de que no habrá respuestas duplicadas
user1873947

Respuestas:


5

De acuerdo con la especificación Realtek , el

  • Tecnología de cancelación de eco acústico de micrófono (AEC), supresión de ruido (NS) y formación de haz (BF) para aplicaciones de voz

aparece en la lista de Características del software . También busqué en la hoja de datos del conjunto de chips ALC892 y en realidad no es una característica del conjunto de chips. Por lo tanto, se confirma que esta funcionalidad es únicamente una función de software, manejada por su controlador Windows ALC892.

Por lo tanto, pondría el esfuerzo en una solución más general de la supresión de ruido en Linux, no vinculada a este controlador en particular:

/programming//q/4875818/684229


gracias por la respuesta. Sin embargo, la pregunta que vinculó dice acerca de la cancelación de eco, que es diferente de la reducción de ruido de fondo estático (el eco proviene de los altavoces, el ruido estático generalmente es causado por el hardware).
user1873947

Aparentemente, Realtek (y otros) fueron demandados por infracción de patente por su implementación de esta característica lexology.com/library/… Podría valer la pena revisar las patentes mencionadas allí.
Fizz

Como no estoy convencido de la durabilidad de ese enlace: "Patentes de los Estados Unidos Nos. 5,825,898 (la patente '898); 6,483,923 (la patente' 923); 6,049,607 (la patente '607); 6,363,345 (la patente' 345); y 6.377.637 (la patente '637) ".
Fizz

3

Si esta es una característica del dispositivo y no solo el software con el que vino (probablemente sea el primero), entonces debe implementarse en el controlador del kernel. 1 Me parece que, normalmente, las tarjetas de sonido Realtek PCI realmente utilizan el controlador Intel HDA con un parche para admitir los códecs ALC (para cualquier persona interesada:) [src]/sound/pci/hda/patch_realtek.c.

Al buscar en la documentación de origen del núcleo, no se menciona "supresión de ruido" o "cancelación de eco" en relación con estos dispositivos. Al buscar la fuente del controlador, tampoco se menciona explícitamente. Creo que si se aplicara, esto es casi seguro que se documentó con una interfaz en /proco /sysque podría utilizar el software de espacio de usuario, o con opciones para el módulo del controlador.

El problema, por supuesto, es que Realtek, como la mayoría de los fabricantes de hardware, considera que el código fuente de su controlador es secreto, lo que dificulta o imposibilita que terceros creen controladores para, por ejemplo, sistemas que Realtek no admite por completo, como Linux. . Realtek tiene una página que enumera un controlador de Linux , sin embargo, los enlaces parecen estar muertos. Si tienes mejor suerte, alguien tiene instrucciones para instalarlo aquí (es un sitio orientado a Mint, pero el proceso será el mismo para cualquier distribución). 2

Sin embargo , incluso si puede encontrar una copia en algún lugar, dudo mucho que el controlador implemente las funciones que desea, ya que no puedo mencionar esto. Lo más probable es que sea más o menos lo mismo que ya tienes; puede ser un poco mejor (esa página de Mint menciona que el controlador del kernel intercambia los altavoces laterales y traseros), pero también puede terminar siendo peor, o completamente no funcional, ya que los controladores fuera del árbol no son examinados por los desarrolladores del kernel y puede contener problemas en relación con el núcleo del que los autores desconocen (tenga en cuenta que los autores del parche hda en el árbol tienen @realtek.com.twdirecciones de correo electrónico).

Entonces, a menos que escuche algo diferente, probablemente no tenga suerte. Puede buscar soluciones de software para esto, tales funciones aparentemente son implementadas por Skype en Linux, por lo que evidentemente pueden funcionar en tiempo real usando solo software. Alguien también ha escrito un artículo sobre eso, jajaja. Desafortunadamente, no tuve más suerte buscando por ahí.

Aquí se discute el uso de las funciones de alsamixerpara lograr una reducción de ruido. Yo creo que tendrá que desactivar PulseAudio para hacer eso.


1. Pulseaudio es en realidad una herramienta de espacio de usuario que está construida sobre ALSA, el subsistema de sonido del kernel (es decir: pulseaudio no implementa el acceso al hardware, solo funciona con transmisiones que provienen / van al controlador del kernel).

2. Si lo encuentra, quiere la versión 3.0, no la versión 2.6. Esos números se refieren a la versión del núcleo de Linux con el que son compatibles y está utilizando un núcleo 3.x. Sin embargo, una vez más, si su sonido es por lo demás bien, yo fuertemente recomiendo no molestar con esto, ya que es poco probable que hacer algo por ti.


Gracias por la respuesta en profundidad. Sin embargo, encontré algo llamado "módulo webrtc-aec" descrito aquí: wiki.gentoo.org/wiki/PulseAudio . Sin embargo, parece que solo funciona en aplicaciones que admiten ese módulo, ¿es correcto? También es posible que esto esté deshabilitado en Ubuntu, ¿por casualidad sabes cómo habilitar este módulo en PulseAudio? Puede ser la solución a mi problema
user1873947

No lo siento. El módulo pulseaudio sería un ejemplo de una solución de software. Parece el tipo de cosa que se trataría mejor con una pregunta específica y separada;)
Ricitos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.