0

Aktywne tłumienie dźwięku

Masz mieszkanie obok ruchliwej drogi? A być może irytują Cię w nocy głośni sąsiedzi lub przechodnie? Oczywiście można użyć stoperów lub słuchawek (najlepiej bluetooth), ale programista nie byłby programistą, gdyby nie spróbował rozwiązać tego problemu programowo.

Jaki jest pomysł?

Na całe szczęście dźwięk jest dość dobrze opisany przez fizykę. Wiemy przykładowo, że dźwięk jest pewną falą akustyczną, a więc możemy wykorzystać zjawiska falowe, aby nim manipulować. Czy istnieje znane zjawisko, które mogło by sprawić, że dźwięk… wyciszy się? Tak! Jest to interferencja fal. Działanie jest proste: generujemy analogiczną falę dźwiękową, ale w odwróconej fazie i jako wynik otrzymujemy ciszę. Taki sposób redukcji (czy wręcz tłumienia) hałasu nazywa się aktywnym tłumieniem hałasu (Active Noise Cancelling).

Tłumienie fal dźwiękowych

Tłumienie fal dźwiękowych

Gdzie jest haczyk?

Skoro zasada jest taka prosta to dlaczego wspomniane rozwiązanie spotyka się w zasadzie wyłącznie w bardzo drogich słuchawkach? Otóż, żeby interferencja fal prowadząca do wytłumienia dźwięku mogła mieć miejsce to musi być spełnione co najmniej parę warunków:

  1. amplituda fal musi być taka sama,
  2. fale muszą być dokładnie odwrócone w fazie (niedopuszczalne jest opóźnienie).

Co więcej: gdy któryś z tych warunków zaczyna być niespełniony to nie dość, że tłumienie nie następuje to może wręcz następować wzmocnienie fal! O ile amplitudę pewnie dałoby się skalibrować doświadczalnie, o tyle z opóźnieniem byłby spory problem. Myślisz, że obecne komputery są niesamowicie szybkie? Otóż nie zawsze.

Opóźnienie dźwięku w sprzęcie komputerowym

Chyba najprostszy schemat aktywnego tłumienia dźwięku za pomocą programu przedstawia się następująco:

 

Schemat działania aktywnego systemu tłumiącego

Schemat działania aktywnego systemu tłumiącego

Niestety każdy z podanych elementów posiada pewne opóźnienie. Z tego co udało mi się dowiedzieć to przetwornik A/C (C/A) zabiera ok. 1-5 ms, karta dźwiękowa kilka ms (w zależności od modelu), program komputerowy co najmniej 1-2 ms (C++ i ASIO), głośnik nawet powyżej 10 ms. Czy zastanawiałeś się kiedyś ile dokładnie czasu potrzebuje głośnik na wygenerowanie dźwięku? Skąd uzyskałem te 10 ms? W internecie można znaleźć wszystko 🙂

Co z tego wynika? W normalny sposób nie ma żadnych szans zastosować takiego rozwiązania w domowym sprzęcie audio, żeby opóźnienie nie przekraczało paru milisekund (takie opóźnienie powinno być jeszcze akceptowalne). Trzeba albo wymyślić całkowicie inne rozwiązanie (może przewidywanie dźwięków za pomocą uczenia maszynowego?), albo…

Rozwiązania sprzętowe

Możemy sporo poprawić nasze szanse jeśli odrzucimy z naszego schematu przetworniki A/C, karty dźwiękowe, a nawet program. Wystarczy zbudować odpowiednie urządzenie elektroniczne i wyposażyć je w szybko reagujący mikrofon oraz głośnik. Przykładowe schematy można znaleźć w internecie (nawet po prostu korzystając z wyszukiwarki). Czy one działają? Czy spisałyby się w określonym tutaj zastosowaniu? Prawdopodobnie niekoniecznie… w większości zostały przewidziane do słuchawek (prawdopodobnie przez małe opóźnienie zamontowanych tam głośników). Być może jednak jakiś Czytelnik zna się wystarczająco na elektronice, aby wprowadzić niezbędne zmiany? 🙂 Chyba jednak mimo wszystko najlepsze będą stare rozwiązania – zatyczki do uszu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *