Mikrofon - tłumienie szumów tła w systemie Linux

13

Moja karta dźwiękowa to Realtek ALC 892. W systemie Windows 7 używam oficjalnych sterowników Realtek, w systemie Linux używam PulseAudio (na Ubuntu 13.10). Zarówno w systemie Windows, jak i Linux, kiedy włączę podbicie mikrofonu + 30db (wymagane, ponieważ mój mikrofon jest cichy), słyszę bardzo denerwujące i głośne szumy tła (potwierdziłem również szum tła za pomocą Audacity na obu systemach).

Jednak sterowniki Windows Realtek mają opcję tłumienia szumów, która działa (po włączeniu Audacity nie pokazuje hałasu w tle, a moje uszy potwierdzają również, że nie ma hałasu w tle).

Obraz przedstawiający opcję tłumienia szumów

Moje pytanie brzmi: jak mogę włączyć tłumienie szumów tła w ALSA / PulseAudio? Czy jest jakiś moduł, który mogę zainstalować, a może istnieje ustawienie, które można włączyć w pliku konfiguracyjnym?

Nie mogę znaleźć rozwiązania tego problemu, a to jedyna rzecz, która uniemożliwia mi całkowite przejście na Linuksa - ponieważ dużo mówię za pomocą mikrofonu, a w systemie Windows oprogramowanie Realtek całkowicie usuwa szum tła, a PulseAudio go nie usuwa, co oznacza, że ​​nagrany głos w systemie Linux jest bardzo zły.

Wiem, że mogłem kupić lepszą kartę dźwiękową i mikrofon, ale jak powiedziałem, sterowniki Windows Realtek usuwają hałas z poziomu oprogramowania w czasie rzeczywistym (tj. Nie hałasują podczas rozmowy na TeamSpeak3 / Steam / jakikolwiek program VoIP), więc mam nadzieję, że jest taka opcja także w systemie Linux.

Jest to również umieszczone na krzyż w Ask Ubuntu, na które z kolei już tutaj odpowiedziano .

użytkownik1873947
źródło
1
Skrzyżowane : askubuntu.com/questions/421671/… Nie ma nic złego w tym IMO, jeśli wyraźnie to zaznaczysz. W przeciwnym razie stworzysz możliwość marnowania czasu na publikowanie zduplikowanych odpowiedzi itp.
goldilocks
2
@goldilocks dodał w obu witrynach informację, że jest ona umieszczona krzyżowo, aby upewnić się, że nie będzie duplikatów odpowiedzi
użytkownik1873947

Odpowiedzi:

5

Zgodnie ze specyfikacją Realtek ,

  • Mikrofonowa eliminacja echa (AEC), tłumienie hałasu (NS) i formowanie wiązki (BF) dla aplikacji głosowych

znajduje się na liście Funkcje oprogramowania . Zajrzałem także do arkusza danych chipsetu ALC892 i tak naprawdę nie jest to funkcja chipsetu. Potwierdzono więc, że ta funkcja jest wyłącznie funkcją oprogramowania obsługiwaną przez sterownik Windows ALC892.

Dlatego też postaram się wprowadzić bardziej ogólne rozwiązanie tłumienia hałasu w systemie Linux, niezwiązane z tym konkretnym sterownikiem:

/programming//q/4875818/684229

Tomas
źródło
Dziękuję za Twoją odpowiedź. Jednak pytanie, które połączyłeś, mówi o eliminacji echa, która różni się od statycznego tłumienia szumu tła (echo pochodzi z głośników, szum statyczny jest generalnie powodowany przez sprzęt).
user1873947,
Najwyraźniej Realtek (i inni) zostali pozwani o naruszenie patentu w związku z wdrożeniem tej funkcji lexology.com/library/… Może warto sprawdzić wspomniane tam patenty.
Fizz
Ponieważ nie jestem przekonany o trwałości tego linku: „Patent USA nr 5,825,898 (patent„ 898); 6,483,923 (patent „923); 6,049,607 (patent” 607); 6,363,345 (patent „345); i 6,377,637 („patent 637)”.
Fizz
3

Jeśli jest to cecha urządzenia, a nie tylko oprogramowania, z którym zostało ono dostarczone (prawdopodobnie jest to poprzednie), należy je zaimplementować w sterowniku jądra. 1 Wydaje mi się, że normalnie karty dźwiękowe PCI Realtek faktycznie używają sterownika Intel HDA z łatką do obsługi kodeków ALC (dla każdego, kto jest zainteresowany [src]/sound/pci/hda/patch_realtek.c:).

Przeszukiwanie dokumentacji źródła jądra, „tłumienie szumów” lub „eliminacja echa” nie jest wspomniane w odniesieniu do tych urządzeń. Przeszukując źródło sterownika, nie jest również wyraźnie wymienione. Myślę, że gdyby zostało zaimplementowane, prawie na pewno byłoby to udokumentowane za pomocą interfejsu /proclub /sysoprogramowania przestrzeni użytkownika, którego można użyć, lub z opcjami modułu sterownika.

Problem polega oczywiście na tym, że Realtek, podobnie jak większość producentów sprzętu, uważa swój kod źródłowy sterownika za tajny, co utrudnia lub uniemożliwia stronom trzecim tworzenie sterowników dla np. Systemów, których Realtek nie obsługuje w pełni, takich jak Linux . Realtek ma stronę zawierającą sterownik linuksa , jednak linki wydają się być martwe. Jeśli masz więcej szczęścia, ktoś ma instrukcje dotyczące instalacji go tutaj (jest to strona zorientowana na mennicę, ale proces będzie taki sam dla każdej dystrybucji). 2)

Jednak nawet jeśli gdzieś można znaleźć kopię, bardzo wątpię, czy sterownik implementuje pożądane funkcje, ponieważ nie ma o tym wzmianki. Najprawdopodobniej jest to mniej więcej to samo, co już masz; może to być nieco lepsze (strona Mint wspomina, że ​​sterownik jądra zamienia głośniki boczne i tylne), ale może również okazać się gorszy lub całkowicie niefunkcjonalny, ponieważ sterowniki spoza drzewa nie są sprawdzane przez programistów jądra i mogą zawierać problemy związane z jądrem, którego autorzy nie są świadomi (zauważ, że autorzy łatki hda w drzewie mają @realtek.com.twadresy e-mail).

Więc jeśli nie usłyszysz czegoś innego, prawdopodobnie nie masz szczęścia. Możesz rozejrzeć się za rozwiązaniami programowymi, takie funkcje są najwyraźniej zaimplementowane przez Skype na Linuksie, więc najwyraźniej mogą działać w czasie rzeczywistym przy użyciu samego oprogramowania. Ktoś też napisał na ten temat artykuł , lol. Niestety nie miałem szczęścia, szukając w okolicy.

Trwa tutaj dyskusja na temat wykorzystania funkcji alsamixerdo osiągnięcia pewnej redukcji szumów. Myślę, że musisz to zrobić, aby wyłączyć pulseaudio.


1. Pulseaudio jest tak naprawdę narzędziem przestrzeni użytkownika zbudowanym na bazie ALSA, podsystemu dźwiękowego jądra (co oznacza: pulseaudio nie implementuje dostępu sprzętowego, po prostu działa ze strumieniami przychodzącymi / kierującymi do sterownika jądra).

2. Jeśli go znajdziesz, potrzebujesz wersji 3.0, a nie wersji 2.6. Liczby te odnoszą się do wersji jądra Linux, z którą są kompatybilne i używasz jądra 3.x. Jednak znowu, jeśli twój dźwięk jest w porządku, zdecydowanie odradzam to, ponieważ jest mało prawdopodobne, aby coś dla ciebie zrobić.

Złotowłosa
źródło
Dziękuję za szczegółową odpowiedź. Znalazłem jednak coś o nazwie „moduł webrtc-aec” opisany tutaj: wiki.gentoo.org/wiki/PulseAudio . Wygląda jednak na to, że działa tylko w aplikacjach obsługujących ten moduł. Możliwe jest również, że jest to wyłączone w Ubuntu, czy przypadkiem wiesz, jak włączyć ten moduł w PulseAudio? Może to być rozwiązanie mojego problemu
użytkownik1873947
Nie przepraszam Moduł pulseaudio byłby przykładem rozwiązania programowego. Wydaje się, że to coś, co najlepiej byłoby potraktować osobnym, konkretnym pytaniem;)
goldilocks