Microfono: soppressione statica del rumore di fondo su Linux


13

La mia scheda audio è Realtek ALC 892. Su Windows 7 utilizzo i driver ufficiali Realtek, su Linux utilizzo PulseAudio (su Ubuntu 13.10). Su Windows e Linux, quando abilito il potenziamento del microfono + 30 dB (richiesto perché il mio microfono è silenzioso), ottengo rumori di fondo molto fastidiosi (ho anche confermato il rumore di fondo con Audacity su entrambi i sistemi).

Tuttavia, i driver di Windows Realtek hanno l'opzione di soppressione del rumore che funziona (dopo averlo abilitato, Audacity non mostra alcun rumore di fondo e le mie orecchie confermano anche che non c'è rumore di fondo).

Immagine che mostra l'opzione di soppressione del rumore

La mia domanda è: come posso abilitare la soppressione del rumore di fondo in ALSA / PulseAudio? Esiste un modulo che posso installare o forse esiste un'impostazione che può essere abilitata nel file di configurazione?

Non riesco a trovare una soluzione per questo e questa è l'unica cosa che mi impedisce di passare completamente a Linux - mentre parlo molto usando il microfono e su Windows il software Realtek rimuove completamente il rumore di fondo e PulseAudio non lo rimuove, che significa che la voce registrata su Linux è pessima.

So che potrei acquistare una scheda audio e un microfono migliori, ma come ho detto, i driver di Windows Realtek rimuovono il rumore a livello di software in tempo reale (cioè nessun rumore quando si parla su TeamSpeak3 / Steam / qualunque programma voip), quindi spero che ci sia tale opzione anche su Linux.

Questo è anche incrociato su Ask Ubuntu, che a sua volta ha già risposto qui .


1
Crossposted: askubuntu.com/questions/421671/… Non c'è niente di sbagliato in quell'IMO se lo si indica esplicitamente. Altrimenti crei il potenziale per le persone di perdere tempo a pubblicare risposte duplicate, ecc.
Riccioli d'oro

2
@goldilocks aggiunto informazioni su entrambi i siti che si Crosspost per assicurarsi che non ci saranno risposte duplicate
user1873947

Risposte:


5

Secondo la specifica Realtek , il

  • Tecnologia di cancellazione dell'eco acustico del microfono (AEC), soppressione del rumore (NS) e Beam Forming (BF) per applicazioni vocali

è elencato nell'elenco Funzionalità software . Ho anche dato un'occhiata al datasheet del chipset ALC892 e in realtà non è una caratteristica del chipset. Quindi si conferma che questa funzionalità è esclusivamente una funzionalità software, gestita dal driver ALC892 di Windows.

Vorrei quindi mettere lo sforzo su una soluzione più generale della soppressione del rumore su Linux, non legata a questo particolare driver:

/programming//q/4875818/684229


grazie per la risposta. Tuttavia, la domanda che hai collegato dice sulla cancellazione dell'eco, che è diversa dalla riduzione del rumore di fondo statico (l'eco proviene dagli altoparlanti, il rumore statico è generalmente causato dall'hardware).
user1873947

Apparentemente Realtek (e altri) sono stati citati in giudizio per violazione di brevetto per l'implementazione di questa funzione lexology.com/library/… Potrebbe valere la pena di verificare i brevetti ivi menzionati.
Fizz,

Dal momento che non sono convinto della durabilità di quel legame: "brevetti USA n. 5.825.898 (il brevetto '898); 6.483.923 (il brevetto' 923); 6.049.607 (il brevetto '607); 6.363.345 (il brevetto' 345); e 6.377.637 (il 'brevetto 637) ".
Fizz

3

Se questa è una caratteristica del dispositivo e non solo del software fornito (probabilmente è la prima), allora deve essere implementata nel driver del kernel. 1 Mi sembra che normalmente le schede audio Realtek PCI utilizzino effettivamente il driver Intel HDA con una patch per supportare i codec ALC (per chiunque sia interessato:) [src]/sound/pci/hda/patch_realtek.c.

La ricerca nella documentazione del kernel, "soppressione del rumore" o "cancellazione dell'eco" non è menzionata in relazione a questi dispositivi. Cercando la fonte del driver stesso, non è nemmeno esplicitamente menzionato. Penso che se fosse implementato, questo sarebbe quasi sicuramente documentato con un'interfaccia /proco in /syscui il software userspace potrebbe usare, o con opzioni per il modulo driver.

Il problema, ovviamente, è che Realtek, come la maggior parte dei produttori di hardware, considera segreto il loro codice sorgente del driver, rendendo difficile o impossibile per terzi creare driver per, ad esempio, i sistemi che Realtek non supporta completamente, come Linux . Realtek ha una pagina che elenca un driver linux , tuttavia i collegamenti sembrano essere morti. Se hai più fortuna, qualcuno ha le istruzioni per installarlo qui (è un sito orientato a Mint, ma il processo sarà lo stesso per qualsiasi distribuzione). 2

Tuttavia , anche se puoi trovarne una copia da qualche parte, dubito fortemente che il driver implementa le funzionalità che desideri, dal momento che non posso menzionarlo. Molto probabilmente, è più o meno lo stesso di quello che hai già; potrebbe essere leggermente migliore (che la pagina Mint menziona il driver del kernel che scambia gli altoparlanti laterali e posteriori), ma potrebbe anche finire per essere peggio, o completamente non funzionale, poiché i driver out-of-tree non vengono controllati dagli sviluppatori del kernel e può contenere problemi relativi al kernel di cui gli autori non sono a conoscenza (si noti che gli autori della patch hda in-tree hanno @realtek.com.twindirizzi e-mail).

Quindi, a meno che tu non senta qualcosa di diverso, probabilmente sei sfortunato. Potresti cercare soluzioni software per questo, tali funzionalità sono apparentemente implementate da Skype su Linux, quindi evidentemente possono funzionare in tempo reale utilizzando solo il software. Qualcuno ha anche scritto un articolo su di esso, lol. Purtroppo non ho avuto altra fortuna a cercare in giro.

C'è qualche discussione qui sull'uso delle funzionalità di alsamixerper ottenere una riduzione del rumore. Penso che dovrai disabilitare pulseaudio per farlo.


1. Pulseaudio è in realtà uno strumento per lo spazio utente che si basa su ALSA, il sottosistema sonoro del kernel (il che significa che pulseaudio non implementa l'accesso all'hardware, funziona solo con flussi provenienti / diretti dal driver del kernel).

2. Se lo trovi, vuoi la versione 3.0, non la versione 2.6. Quei numeri si riferiscono alla versione del kernel Linux con cui sono compatibili e stai usando un kernel 3.x. Tuttavia, ancora una volta, se il tuo suono è altrimenti a posto, ti consiglio vivamente di non preoccuparti perché è improbabile che faccia qualcosa per te.


Grazie per la risposta approfondita. Tuttavia ho trovato qualcosa chiamato "modulo webrtc-aec" descritto qui: wiki.gentoo.org/wiki/PulseAudio . Tuttavia sembra funzionare solo nelle app che supportano quel modulo, è corretto? Inoltre è anche possibile che questo sia disabilitato in Ubuntu, per caso sai come abilitare questo modulo in PulseAudio? Potrebbe essere la soluzione al mio problema
user1873947

Non mi dispiace. Il modulo pulseaudio sarebbe un esempio di soluzione software. Sembra il tipo di cosa che sarebbe meglio trattare con una domanda separata e specifica;)
goldilocks

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.