Jak działają kodeki mowy – od ludzkiego głosu do kilobitów na sekundę

Kodeki mowy są niewidzialnym fundamentem współczesnej komunikacji. Bez nich nie działałaby telefonia komórkowa, VoIP, komunikatory internetowe, wideokonferencje – czyli wszystko, czego używamy każdego dnia, często nie zastanawiając się, jak to w ogóle możliwe, że kilka tysięcy bitów na sekundę potrafi przenieść pełną ludzką wypowiedź.

W przeciwieństwie do kodeków muzycznych, które starają się wiernie odtworzyć dowolny, złożony sygnał akustyczny, kodeki mowy mają przewagę: obsługują tylko jeden instrument – ludzki głos. To sprawia, że mogą zredukować ilość danych znacznie bardziej niż np. MP3, i to bez utraty zrozumiałości.

Poniżej znajdziesz przystępne wyjaśnienie tego, jak działa kodowanie mowy – od fizjologii głosu, przez modele źródło–filtr, aż po zaawansowane algorytmy takie jak LPC, CELP, VQ czy BWE.


Dlaczego mowa jest „łatwiejsza” niż muzyka

Ludzki głos pochodzi z jednego źródła: z układu oddechowego, krtani i rezonatorów jamy ustnej i nosowej. Jego struktura jest przewidywalna, a zakres częstotliwości stosunkowo wąski (najważniejsze pasmo: 300–3400 Hz).

Muzyka natomiast może składać się z dowolnych instrumentów, dowolnych przebiegów i dowolnych struktur harmonicznych. Dlatego kodeki muzyczne muszą kodować kształt fali – stąd nazwa waveform codecs. To kosztuje dużo bitów.

Kodeki mowy robią coś odwrotnego: nie kodują fali, lecz opisują sposób jej powstawania.


Model źródło–filtr: fundament wszystkich nowoczesnych kodeków

Najważniejsza idea jest prosta:

  • Źródłem dźwięku jest pobudzenie – okresowe impulsy (głoski dźwięczne) lub szum (głoski bezdźwięczne).
  • Pobudzenie przechodzi przez filtr – kształtowany przez układ artykulacyjny (język, usta, nos).
  • Filtr tworzy rezonanse zwane formantami.

Jeśli znamy:

  1. typ pobudzenia,
  2. jego parametry (np. wysokość tonu),
  3. parametry filtra (opisującego kształt widma),

to możemy syntetyzować mowę tak podobną do oryginału, że da się ją zrozumieć, choć nie jest wierną kopią sygnału.

Na tym opiera się LPC – linear predictive coding.


LPC: przewidywanie próbek zamiast ich kodowania

LPC zakłada, że każdą próbkę mowy można przewidzieć na podstawie poprzednich. Oblicza więc współczynniki filtra, które opisują „kształt” widma mowy. Do odbiornika nie trafia fala dźwiękowa, tylko zestaw parametrów opisujących filtr + informacja, jak intensywne ma być pobudzenie.

To redukuje dane dramatycznie, kosztem pewnej sztuczności brzmienia. Dlatego LPC często stanowi tylko fundament bardziej zaawansowanych kodeków.


CELP: złoty standard kodowania mowy

CELP (Code-Excited Linear Prediction) to rodzina kodeków, która zdominowała telefonię i VoIP.

Działa w następujący sposób:

  1. Analiza przez syntezę (analysis-by-synthesis)
    Koder naśladuje działanie dekodera, generuje wiele możliwych wersji dźwięku i porównuje je z oryginałem, wybierając tę, która daje najmniejszy błąd.
  2. Dwa słowniki pobudzeń (codebooki)
    • adaptacyjny – zawiera dane oparte na poprzednich elementach sygnału (idealny do dźwięków okresowych, czyli głosu ludzkiego),
    • stały – zawiera przebiegi opisujące szum (idealne do głosek bezdźwięcznych).
  3. Zamiast wysyłać przebieg – wysyła indeks
    Wystarczy zakodować numer wybranego elementu słownika + kilka parametrów.
  4. Kształtowanie szumu (noise shaping)
    Błąd kwantyzacji przenoszony jest tam, gdzie ucho jest na niego mniej wrażliwe.

CELP potrafi zejść do 4–8 kb/s i wciąż brzmieć zrozumiale i naturalnie.


Vector Quantization: kodowanie całych grup parametrów

Zamiast zapisywać każdy współczynnik osobno, kodek koduje je w pakietach – jako wektory. To umożliwia dalszą redukcję bitów. VQ stosuje się najczęściej do kodowania częstotliwości liniowych (LSF), które opisują filtr LPC.


Modele hybrydowe, wielowarstwowe i tryby pracy

Współczesne kodeki mowy potrafią:

  • przełączać się między różnymi trybami (multi-mode),
  • kodować warstwowo (scalable),
    dzięki czemu można mieć rdzeń o niskiej przepływności + warstwy polepszające brzmienie,
  • dopasowywać się do warunków sieciowych.

Dzięki temu możliwa jest rozmowa nawet przy niskiej jakości łącza.


BWE – sztuczne poszerzanie pasma

Bandwidth Extension (BWE) umożliwia odtworzenie szerokiego pasma (np. 7 lub 14 kHz) z wąskopasmowego sygnału (3,4 kHz).

Jak?

  • Estymuje brakujące harmoniczne,
  • Syntetyzuje pobudzenie o wyższym paśmie,
  • Przewiduje kształt widma na podstawie informacji z pasma podstawowego.

Dzięki temu telefony mogą brzmieć „HD Voice”, nawet gdy sieć nie obsługuje pełnego pasma w klasycznej formie.


Echo, szum i detekcja mowy: funkcje dodatkowe

Dobre kodeki mowy integrują:

  • AEC – Acoustic Echo Cancellation
    eliminują echo z głośnomówiących zestawów,
  • Noise Reduction
    tłumią szum tła na podstawie jego profilu,
  • VAD – Voice Activity Detection
    wykrywają, czy użytkownik mówi, czy milczy,
  • DTX – Discontinuous Transmission
    wysyłają pakiety tylko wtedy, gdy jest mowa; w ciszy generowany jest jedynie comfort noise.

To znacznie redukuje zużycie pasma i poprawia jakość rozmów.


Dlaczego kodeki mowy są tak trudne do zaprojektowania

Mimo przewidywalności mowy, projekt kodeka musi spełnić sprzeczne wymagania:

  • niski bit rate,
  • niską złożoność obliczeniową,
  • minimalne opóźnienie,
  • odporność na błędy transmisji,
  • naturalne brzmienie,
  • uniwersalność dla głosów męskich, żeńskich i dziecięcych,
  • działanie w hałasie i przy słabym mikrofonie.

Dlatego współczesne kodeki są tworem łączącym informatykę, sygnały cyfrowe, psychoakustykę i… fizjologię człowieka.


Podsumowanie

Choć większość z nas traktuje rozmowę telefoniczną jako coś oczywistego, faktycznie w tle działa niezwykle zaawansowana technologia. Kodeki mowy nie kopiują dźwięku — rekonstruują go na podstawie modelu powstawania mowy, co pozwala zminimalizować ilość przesyłanych danych bez utraty zrozumiałości. Od prostych rozwiązań predykcyjnych, przez LPC, aż po zaawansowane CELP i techniki poszerzania pasma, każdy etap tej ewolucji był krokiem w stronę lepszej, bardziej naturalnej komunikacji.

Dodaj komentarz