Czy możliwe jest usuwanie szumów w czasie rzeczywistym za pomocą PulseAudio, aby wydobywający się dźwięk był płynniejszy?
sound
pulseaudio
noise
Vadim Peretokin
źródło
źródło
Odpowiedzi:
Moduł Pulseaudio
module-echo-cancel
Zacząłem dużo czytać o PulseAudio i dostępnych „ukrytych” opcjach, więc mogłem znaleźć taką, która byłaby podobna do tego pytania. Znalazłem moduł eliminacji szumów, który radykalnie obniża wszelkie szumy statyczne na mikrofonie, a nawet DUŻO szumów tła, co w zasadzie daje korzyść z nagrywania tylko własnego głosu z doskonałą jakością (do nagrywania dźwięku na przykład). Aby to zrobić, wykonaj następujące kroki:
sudo nano /etc/pulse/default.pa
Dodaj następujący wiersz w dowolnym miejscu pliku, ale polecam prawie na końcu, gdzie znajdziesz komentarz na temat anulowania echa (~ linia 140):
Załaduj ponownie PulseAudio (
pulseaudio -k
) lub po prostu uruchom ponownie komputer. Powinieneś być w stanie wybrać nową opcję redukcji szumów w sekcji Urządzenia wejściowe:Więcej informacji na ten temat można znaleźć na stronie modułu Echo Cancel
Ustaw wejście jako domyślne
Jeśli chcesz ustawić jako domyślne urządzenie do anulowania echa, po prostu zmień powyższą linię na:
a następnie na dole pliku dodaj
W tym przypadku nazwałem źródło
logitechsource
, ale możesz je nazwać, jak chcesz i po prostu zrestartować pulseaudio.Zmień nazwę urządzenia
Na koniec, jeśli nie chcesz bardzo długiej nazwy w ustawieniach dźwięku (gdy chcesz wybrać urządzenie wejścia / wyjścia). Moja propozycja polega na zmianie nazwy urządzenia wejściowego w następujący sposób:
I znowu restart pulseaudio. Wynik końcowy wygląda następująco:
źródło
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
zgodnie z gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224To stare pytanie, ale miałem ten sam problem i po pewnym Googlingu (gdzie głównie znalazłem ludzi, którzy zgodzili się, że to niemożliwe) i przeczytaniu niektórych stron podręcznika, opracowałem rozwiązanie oparte na pomyśle user2330377.
Najpierw musisz utworzyć profil hałasu dla SoX. Wystarczy użyć dowolnego programu do nagrywania dźwięku, aby zarejestrować kilka sekund hałasu, a następnie
cd
do katalogu, w którym został zapisany i zrobićsox noise.wav -n noiseprof noise.prof
.Następnie musisz utworzyć urządzenie zwrotne ALSA:
Jest to wymagane, ponieważ pulseaudio, w przeciwieństwie do Jacka, nie może bezpośrednio połączyć oprogramowania audio razem; będziemy zatem używać urządzenia sprzężenia zwrotnego jako serwera proxy.
Teraz musisz zacząć
paman
i znaleźć nazwy zarówno mikrofonu (lub innego urządzenia nagrywającego), jak i właśnie utworzonego urządzenia loopback. Po ich znalezieniu możesz wykonać następujące polecenie, aby rozpocząć nagrywanie dźwięku z mikrofonu, przesyłanie go przez SoX, a następnie odtwarzanie na urządzeniu loopback:(Gdzie trzeba zastąpić poprawne nazwy urządzeń parametrami -d - urządzenie wejściowe dla pierwszego wywołania pacat i wyjście urządzenia loopback dla drugiego.)
Proszę bardzo, prawie gotowe! W ostatnim kroku rozpocznij nagrywanie dźwięku za pomocą wybranej aplikacji, a następnie uruchom
pavucontrol
, przejdź na kartę „Nagrywanie” i ustaw urządzenie audio używane do nagrywania (wyświetlane jako szary przycisk po prawej stronie) na „Monitor Loopback Audio” Urządzenie". Powinieneś teraz mieć wyraźne i wolne od szumów nagranie!źródło
Badanie pokazuje, że nie ma znanego sposobu filtrowania szumów w czasie rzeczywistym z jakimkolwiek podsystemem Linux. Niektóre strony internetowe wskazują na sprzęt, który można kupić, co powinno zrobić tę sprawę znacznie lepiej niż filtr oprogramowania.
Alternatywnie, jeśli jest to nagranie, możesz przekazać dźwięk przez Audacity i użyć tam filtra szumu.
źródło
module-echo-cancel
, który ma kilka implementacji, takich jak webrtc | speex.Oto leas tone way, zaimplementuj webrtc-aec w
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Tak Wykorzystuje bibliotekę AudioProcessing webrtc.org do ulepszania połączeń VoIP w aplikacjach, które ją obsługują, wykonując eliminację echa akustycznego, kontrolę wzmocnienia analogowego, tłumienie szumów i inne przetwarzanie.
Oto artykuł z 2013 r. Na ten temat (usuwanie hałasu za pomocą pulseaudio, a nie webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf
„Zaprezentowaliśmy pierwsze wyniki wielokanałowego rozwiązania redukcji szumów / echa zbudowanego na PulseAudio i motywowaliśmy do podjęcia decyzji projektowych. Prace doprowadziły do szeregu ulepszeń w strukturze eliminacji echa i przetwarzania sygnału PulseAudio, które zostały wniósł wkład w cykl programowania wersji 3.0 / 4.0 i powinien ułatwić przyszłe wbudowane rozwiązania audio dla Linuksa. Dalsze prace obejmują optymalizację kodu do miksowania strumienia audio, bardziej efektywne metody ponownego próbkowania oraz wdrożenie wydajnego AEC w wielokanałowym potoku przetwarzania. ”
źródło
Na stronie dokumentacji modułu nie ma żadnych informacji o eliminacji hałasu. Wewnątrz modułu-echo-anulowania znajduje się tylko algorytm AEC (Acoustic Echo Cancellation), który ma kilka implementacji, takich jak webrtc | speex.
Dlatego powinieneś kupić mikrofony | z wbudowaną funkcją redukcji szumów w jak największym stopniu.
Podczas testowania nagrywania głosu w Ubuntu odkryłem pewne szczególne cechy:
Skype, Telegram wykorzystuje nieprzetworzone dane wejściowe z domyślnego urządzenia (w moim przypadku gniazda front-in-mic | backward-mic). Jeśli musisz anulować hałas w tych aplikacjach, powinieneś kupować słuchawki | z mikrofonami tylko ze zintegrowaną funkcją redukcji szumów
Jeśli potrzebujesz korzystać z połączeń głosowych w przeglądarce, pamiętaj, że przeglądarki mają własne implementacje algorytmów przetwarzania głosu, np. WebRTC.
Także aplikacji internetowych (strony takie jak talkie, Hangouts, appear.in, etc) może mieć swoje własne implementacje algorytmów przetwarzania głosu, mimo że mogą one być oparta na WebRTC hangout analizy
źródło