È possibile eseguire la rimozione del rumore in tempo reale con PulseAudio, quindi l'uscita audio che esce è più uniforme?
È possibile eseguire la rimozione del rumore in tempo reale con PulseAudio, quindi l'uscita audio che esce è più uniforme?
Risposte:
module-echo-cancel
Ho iniziato a leggere molto su PulseAudio e le opzioni "nascoste" che avevo in modo da poter trovare uno simile a questa domanda. Quello che ho trovato era il modulo di cancellazione del rumore, che riduce drasticamente qualsiasi rumore statico sul microfono e MOLTO rumore di sottofondo, dandoti fondamentalmente il vantaggio di registrare solo la tua voce con una qualità eccellente (per la registrazione audio per esempio). Per fare ciò segui questi passaggi:
sudo nano /etc/pulse/default.pa
Aggiungi la seguente riga in qualsiasi punto del file, ma ti consiglio quasi alla fine di trovare un commento sulle cose di cancellazione dell'eco (~ linea 140):
load-module module-echo-cancel
Ricarica PulseAudio ( pulseaudio -k
) o riavvia semplicemente il computer. Dovresti essere in grado di selezionare la nuova opzione di cancellazione del rumore dalla sezione Dispositivo di input:
Puoi trovare maggiori informazioni a riguardo nella pagina del modulo di annullamento dell'eco
Se si desidera impostare come predefinito il dispositivo di cancellazione dell'eco, è sufficiente trasformare la riga sopra in:
load-module module-echo-cancel source_name=logitechsource
e poi in fondo al file aggiungere
set-default-source logitechsource
In questo caso ho chiamato la fonte logitechsource
, ma puoi nominarla come vuoi e semplicemente riavviare pulseaudio.
Infine, se non si desidera un nome super lungo nelle Impostazioni audio (quando si desidera selezionare un dispositivo di input / output). Il mio suggerimento è di rinominare il dispositivo di input in questo modo:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
E ancora, riavviando pulseaudio. Il risultato finale è simile al seguente:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
come da gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
Questa è una vecchia domanda, ma ho avuto lo stesso problema e dopo aver cercato su Google (dove ho trovato principalmente persone che erano d'accordo sul fatto che non fosse possibile) e leggendo alcune pagine man, ho ora sviluppato una soluzione basata sull'idea di user2330377.
Per prima cosa devi creare un profilo di rumore per SoX. Basta usare qualsiasi programma di registrazione audio per registrare qualche secondo di rumore, quindi cd
nella directory in cui l'hai salvato e fai sox noise.wav -n noiseprof noise.prof
.
Quindi è necessario creare un dispositivo di loopback ALSA:
sudo modprobe snd_aloop
Ciò è necessario perché pulseaudio, a differenza di Jack, non è in grado di collegare direttamente il software audio insieme; utilizzeremo quindi il dispositivo di loopback come proxy.
Ora devi avviare paman
e trovare i nomi sia del tuo microfono (o altro dispositivo di registrazione) sia del dispositivo di loopback che abbiamo appena creato. Una volta trovati questi, è possibile eseguire il comando seguente per avviare la registrazione dell'audio dal microfono, eseguirne il piping tramite SoX e quindi riprodurlo sul dispositivo di 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
(Dove è necessario sostituire i nomi di dispositivo corretti per i parametri -d: il dispositivo di input per la prima chiamata pacat e l'output del dispositivo di loopback per il secondo.)
Ecco fatto, quasi fatto! Come ultimo passo, inizia a registrare l'audio con l'applicazione che preferisci, quindi esegui l'avvio pavucontrol
, passa alla scheda "Registrazione" e imposta il dispositivo audio utilizzato per la registrazione (visualizzato come pulsante grigio a destra) su "Monitora audio loopback Dispositivo". Ora dovresti avere una registrazione chiara e senza rumore!
Le indagini dimostrano che non esiste un modo noto di filtrare la riduzione del rumore in tempo reale con nessun sottosistema Linux. Alcuni siti web indicano hardware che puoi acquistare, il che dovrebbe fare molto meglio del filtro software.
In alternativa, se questo è per una registrazione, è possibile passare l'audio attraverso Audacity e utilizzare lì il filtro del rumore.
module-echo-cancel
, che ha diverse implementazioni, come webrtc | Speex.
Ecco a buon ritmo, implementare webrtc-aec in
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Sì Utilizza la libreria webrtc.org AudioProcessing per migliorare notevolmente le chiamate VoIP in applicazioni che la supportano eseguendo la cancellazione dell'eco acustico, il controllo del guadagno analogico, la soppressione del rumore e altre elaborazioni.
Ecco un documento del 2013 sull'argomento (rimozione del rumore con pulseaudio non in particolare webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf
"Abbiamo presentato i primi risultati di una soluzione multicanale di riduzione del rumore / eco basata su PulseAudio e motivato le decisioni di progettazione. Il lavoro ha portato a una serie di miglioramenti nel sistema di cancellazione e elaborazione dell'eco PulseAudio, che sono stati ha contribuito durante il ciclo di sviluppo versione 3.0 / 4.0 e dovrebbe facilitare le future soluzioni audio Linux integrate. Ulteriori lavori comprendono l'ottimizzazione del codice per il missaggio del flusso audio, metodi di ricampionamento più ecologici e l'implementazione di un AEC efficiente nella pipeline di elaborazione multicanale. "
Non ci sono informazioni sulla pagina della documentazione del modulo sulla cancellazione del rumore. C'è solo un algoritmo AEC (Acoustic Echo Cancel) all'interno di module-echo-cancel, che ha diverse implementazioni, come webrtc | Speex.
Pertanto, dovresti acquistare il più possibile auricolari | microfoni con funzionalità integrata di cancellazione del rumore.
Mentre provavo la registrazione vocale in Ubuntu ho trovato alcune qualità particolari:
Skype, Telegram utilizza input non elaborati dal dispositivo predefinito (nel mio caso jack front-in-mic | back-mic). Se è necessario annullare un rumore in queste app, è necessario acquistare cuffie | microfoni solo con la funzione di cancellazione del rumore integrata
Se è necessario utilizzare le chiamate vocali nel browser, è necessario tenere presente che i browser dispongono di implementazioni proprie degli algoritmi di elaborazione vocale, ad esempio WebRTC.
Anche le applicazioni web (siti come talky, hangouts, aspetti.in, ecc.) Possono avere le proprie implementazioni di algoritmi di elaborazione vocale, nonostante possano essere basate sull'analisi dell'hangout di webrtc