G.711 - G.711
Modulacja kodu impulsowego (PCM) częstotliwości głosu | |
Status | Obowiązujący |
---|---|
Rok rozpoczęty | 1972 |
Ostatnia wersja | (02/00) luty 2000 |
Organizacja | ITU-T |
Powiązane standardy | G.191 , G.711.0 , G.711.1 , G.729 |
Domena | kompresja dźwięku |
Strona internetowa | https://www.itu.int/rec/T-REC-G.711 |
Formaty zmiennoprzecinkowe |
---|
IEEE 754 |
|
Inne |
G.711 to wąskopasmowy kodek audio oryginalnie zaprojektowany do użytku w telefonii, który zapewnia dźwięk o jakości płatnej przy 64 kbit/s. G.711 przepuszcza sygnały audio w zakresie 300–3400 Hz i próbkuje je z szybkością 8000 próbek na sekundę, z tolerancją 50 części na milion (ppm). Niejednolita (logarytmiczna) kwantyzacja z 8 bitami jest używana do reprezentowania każdej próbki, co daje szybkość transmisji 64 kbit/s. Istnieją dwie nieco różne wersje: μ-law , która jest używana głównie w Ameryce Północnej i Japonii oraz A-law , która jest używana w większości innych krajów poza Ameryką Północną.
G.711 to standard ITU-T (zalecenie) dotyczący kompandowania dźwięku , zatytułowany modulacja kodem impulsowym (PCM) częstotliwości głosu wprowadzony do użytku w 1972 roku. Jest to wymagany standard w wielu technologiach, takich jak H.320 i H .323 normy. Może być również używany do komunikacji faksowej przez sieci IP (zgodnie z definicją w specyfikacji T.38 ).
Opublikowano dwa ulepszenia G.711: G.711.0 wykorzystuje bezstratną kompresję danych w celu zmniejszenia wykorzystania przepustowości, a G.711.1 zwiększa jakość dźwięku poprzez zwiększenie przepustowości.
Cechy
- Częstotliwość próbkowania 8 kHz
- Przepływność 64 kbit/s (częstotliwość próbkowania 8 kHz × 8 bitów na próbkę)
- Typowe opóźnienie algorytmiczne wynosi 0,125 ms, bez opóźnienia wyprzedzenia
- G.711 to koder mowy fali
- G.711 Dodatek I definiuje algorytm ukrywania utraty pakietów (PLC), który pomaga ukryć straty transmisji w sieci pakietowej
- G.711 Załącznik II definiuje algorytm transmisji nieciągłej (DTX), który wykorzystuje wykrywanie aktywności głosowej (VAD) i generowanie komfortowego hałasu (CNG) w celu zmniejszenia wykorzystania przepustowości w okresach ciszy
- Testy PSQM w idealnych warunkach dają średnią ocenę 4,45 dla G.711 μ-law, 4,45 dla G.711 A-law
- Testy PSQM pod obciążeniem sieci dają średnie oceny opinii wynoszące 4,13 dla G.711 μ-law, 4,11 dla G.711 A-law
Rodzaje
G.711 definiuje dwa główne Companding algorytmów, na algorytm μ-prawo i algorytm A-law . Oba są logarytmiczne , ale A-law został specjalnie zaprojektowany, aby był łatwiejszy do przetworzenia przez komputer. Norma definiuje również sekwencję powtarzających się wartości kodu, która określa poziom mocy 0 dB .
Algorytmy μ-law i A-law kodują 14-bitowe i 13-bitowe liniowe próbki PCM ze znakiem (odpowiednio) do logarytmicznych próbek 8-bitowych. W ten sposób koder G.711 utworzy strumień bitów 64 kbit/s dla sygnału próbkowanego z częstotliwością 8 kHz.
G.711 μ-law zapewnia większą rozdzielczość sygnałom o wyższym zakresie, podczas gdy G.711 A-law zapewnia więcej poziomów kwantyzacji przy niższych poziomach sygnału.
Stosowane są terminy PCMU, G711u lub G711MU dla G711 μ-law oraz PCMA lub G711A dla G711 A-law.
Prawo
Kodowanie A-law pobiera zatem 13-bitową liniową próbkę audio ze znakiem jako dane wejściowe i konwertuje ją na wartość 8-bitową w następujący sposób:
Kod wejścia liniowego |
Skompresowany kod XOR 01010101 |
Kod wyjścia liniowego |
---|---|---|
s0000000abcdx | s 000abcd | s0000000abcd1 |
s0000001abcdx | s 001abcd | s0000001abcd1 |
s000001abcdxx | s 010abcd | s000001abcd10 |
s00001abcdxxx | s 011abcd | s00001abcd100 |
s0001abcdxxxx | s 100abcd | s0001abcd1000 |
s001abcdxxxxx | s 101abcd | s001abcd10000 |
s01abcdxxxxxx | s 110abcd | s01abcd100000 |
s1abcdxxxxxxx | s 111abcd | s1abcd1000000 |
Gdzie s
jest bit znaku, s
jest jego odwrotnością (tj. wartości dodatnie są kodowane z MSB = s = 1), a oznaczone bity x
są odrzucane. Zauważ, że pierwsza kolumna tabeli używa innej reprezentacji wartości ujemnych niż trzecia kolumna. Na przykład wejściowa wartość dziesiętna −21 jest reprezentowana binarnie po odwróceniu bitów jako 1000000010100, co odpowiada 00001010 (zgodnie z pierwszym wierszem tabeli). Podczas dekodowania odwzorowuje się z powrotem na 1000000010101, co jest interpretowane jako wartość wyjściowa −21 w postaci dziesiętnej. Wartość wejściowa +52 (0000000110100 binarnie) mapuje na 10011010 (zgodnie z drugim rzędem), który mapuje z powrotem na 0000000110101 (+53 dziesiętnie).
Można to postrzegać jako liczbę zmiennoprzecinkową z 4 bitami mantysy m (odpowiednik 5-bitowej precyzji), 3 bitami wykładnika e i 1 bitem znaku s , sformatowaną tak, jak seeemmmm
dekodowana wartość liniowa y podana wzorem
która jest 13-bitową liczbą całkowitą ze znakiem w zakresie od ±1 do ±(2 12 - 2 6 ). Zauważ, że żaden skompresowany kod nie dekoduje do zera z powodu dodania 0.5 (połowa kroku kwantyzacji).
Ponadto norma określa, że wszystkie wynikowe bity parzyste ( LSB jest parzyste) są odwracane przed przesłaniem oktetu. Ma to na celu zapewnienie wielu przejść 0/1, aby ułatwić proces odzyskiwania zegara w odbiornikach PCM. Tak więc, cichy kanał PCM zakodowany według A-law ma 8-bitowe próbki zakodowane w oktetach 0xD5 zamiast 0x80.
Gdy dane są przesyłane przez E0 ( G.703 ), MSB (znak) jest wysyłany jako pierwszy, a LSB jako ostatni.
ITU-T STL definiuje algorytm dekodowania w następujący sposób (umieszcza zdekodowane wartości w 13 najbardziej znaczących bitach 16-bitowego typu danych wyjściowych).
void alaw_expand(lseg, logbuf, linbuf)
long lseg;
short *linbuf;
short *logbuf;
{
short ix, mant, iexp;
long n;
for (n = 0; n < lseg; n++)
{
ix = logbuf[n] ^ (0x0055); /* re-toggle toggled bits */
ix &= (0x007F); /* remove sign bit */
iexp = ix >> 4; /* extract exponent */
mant = ix & (0x000F); /* now get mantissa */
if (iexp > 0)
mant = mant + 16; /* add leading '1', if exponent > 0 */
mant = (mant << 4) + (0x0008); /* now mantissa left justified and */
/* 1/2 quantization step added */
if (iexp > 1) /* now left shift according exponent */
mant = mant << (iexp - 1);
linbuf[n] = logbuf[n] > 127 /* invert, if negative sample */
? mant
: -mant;
}
}
Patrz również „Podręcznik użytkownika biblioteki narzędzi oprogramowania ITU-T 2009”, który można znaleźć pod adresem.
μ-prawo
Kodowanie μ-law (czasami określane jako ulaw, G.711Mu lub G.711μ) pobiera 14-bitową liniową próbkę audio ze znakiem w reprezentacji uzupełnienia do dwóch jako dane wejściowe, odwraca wszystkie bity po bicie znaku, jeśli wartość jest ujemna, dodaje 33 (binarny 100001) i konwertuje je na wartość 8-bitową w następujący sposób:
Wartość wejściowa liniowa |
Skompresowany kod XOR 11111111 |
Liniowa wartość wyjściowa |
---|---|---|
s0000001abcdx | s000abcd | s0000001abcd1 |
s0000001abcdxx | s001abcd | s0000001abcd10 |
s000001abcdxxx | s010abcd | s000001abcd100 |
s00001abcdxxxx | s011abcd | s00001abcd1000 |
s0001abcdxxxxx | s100abcd | s0001abcd10000 |
s001abcdxxxxxx | s101abcd | s001abcd100000 |
s01abcdxxxxxxx | s110abcd | s01abcd1000000 |
s1abcdxxxxxxxx | s111abcd | s1abcd10000000 |
Gdzie s
jest bit znaku, a zaznaczone bity x
są odrzucane.
Ponadto standard określa, że zakodowane bity są odwracane przed przesłaniem oktetu. Tak więc cichy kanał PCM zakodowany zgodnie z prawem μ ma 8-bitowe próbki przesyłane w oktetach 0xFF zamiast 0x00.
Dodanie 33 jest konieczne, aby wszystkie wartości znalazły się w grupie kompresji i są one odejmowane podczas dekodowania.
Rozbicie zakodowanej wartości sformatowanej jako seeemmmm
4 bity mantysy m , 3 bity wykładnika e i 1 bit znaku s , dekodowana wartość liniowa y jest dana wzorem
która jest 14-bitową liczbą całkowitą ze znakiem w zakresie od ±0 do ±8031.
Zauważ, że 0 jest przesyłane jako 0xFF, a -1 jest przesyłane jako 0x7F, ale po otrzymaniu wynik jest równy 0 w obu przypadkach.
G.711.0
G.711.0, znany również jako G.711 LLC, wykorzystuje bezstratną kompresję danych, aby zmniejszyć wykorzystanie przepustowości nawet o 50 procent. Kompresji bezstratnej G.711 kodu modulacji impulsów standardu została zatwierdzona przez ITU-T we wrześniu 2009 roku.
G.711.1
G.711.1 jest rozszerzeniem G.711, opublikowanym jako zalecenie ITU-T G.711.1 w marcu 2008. Jego formalna nazwa to szerokopasmowe wbudowane rozszerzenie dla modulacji kodu impulsowego G.711 .
G.711.1, umożliwia dodanie ulepszeń wąskopasmowych i/lub szerokopasmowych (16000 próbek/s), każde przy 25% szybkości transmisji (w zestawie) podstawowego strumienia bitów G.711, co prowadzi do szybkości transmisji danych 64, 80 lub 96 kbit /s.
G.711.1 jest kompatybilny z G.711 przy 64 kbit/s, dlatego przewiduje się wydajne wdrożenie w istniejących infrastrukturach Voice over IP ( VoIP ) opartych na G.711 . Koder G.711.1 może kodować sygnały o częstotliwości 16 kHz z szerokością pasma 50–7000 Hz przy 80 i 96 kbit/s, a przy próbkowaniu 8 kHz wyjście może generować sygnały o szerokości pasma od 50 do 4000 Hz, pracując przy 64 i 80 kbit/s.
Koder G.711.1 tworzy osadzony strumień bitów złożony z trzech warstw odpowiadających trzem dostępnym przepływnościom: 64, 80 i 96 kbit/s. Strumień bitów nie zawiera żadnych informacji o tym, które warstwy są zawarte, implementacja wymagałaby sygnalizacji pozapasmowej, na których warstwy są dostępne. Trzy warstwy G.711.1 to: log Companded Pulse Code Modulation (PCM) dolnego pasma, w tym sprzężenie zwrotne szumu, wbudowane rozszerzenie PCM z adaptacyjną alokacją bitów w celu poprawy jakości warstwy bazowej w dolnym paśmie oraz ważone kodowanie kwantyzacji wektorowej wyższe pasmo oparte na zmodyfikowanej dyskretnej transformacji kosinusowej (MDCT).
W 2010 roku planowane są dwa rozszerzenia dla G.711.1: rozszerzenie superwideband (przepustowość do 14000 Hz) oraz bezstratna kompresja strumienia bitów.
Koncesjonowanie
Patenty na G.711, wydane w 1972 roku, wygasły, więc można z niego korzystać bez konieczności posiadania licencji.
Zobacz też
Bibliografia
- ^ a b c „G.711: modulacja kodu impulsowego (PCM) częstotliwości głosu” . www.itu.int . Zarchiwizowane od oryginału dnia 2019-06-17 . Pobrano 11.11.2019 .
- ^ „Kodeki wideo/głosu/mowy” . Grandstream= . Źródło 19 lipca 2020 .
-
^ G.191 : Narzędzia programowe do standaryzacji kodowania mowy i dźwięku . Funkcja
alaw_expand
w plikuSoftware/stl2009/g711/g711.c
. Itu.int. Pobrano 18.09.2013. - ^ G.191 : Biblioteka narzędzi oprogramowania ITU-T 2009 Instrukcja obsługi . Itu.int (23.07.2010). Pobrano 18.09.2013.
- ^ ITU-T (17.07.2009). "ITU-T Newslog - kodek głosowy otrzymuje nową kompresję bezstratną" . Zarchiwizowane od oryginału w dniu 2016-03-03 . Źródło 2010-02-28 .
- ^ ITU-T. "G.711.0: Bezstratna kompresja modulacji kodu impulsowego G.711" . Źródło 2010-02-28 .
- ^ a b Najnowsze osiągnięcia w zakresie kodowania audio/mowy w ITU-T i przyszłych trendach (PDF) , sierpień 2008 , pobrane 28.02.2010
- ^ a b c ITU-T (2008) G.711.1: szerokopasmowe wbudowane rozszerzenie dla modulacji kodu impulsowego G.711 Źródło: 2009-06-19
- ^ Hiwasaki; i in. (2008-08-25), G.711.1: szerokopasmowe rozszerzenie do ITU-T G.711 (PDF) , pobrane 2015-06-13
- ^ Lapierre; i in. (2008-08-25), Kształtowanie szumu we wbudowanym kodeku ITU-T G.711-Interoperable (PDF) , pobrane 2015-06-13
- ^ Nokia Research Center (2009-04-06), standardy kodowania (PDF) , pobrane 2010-03-01
Zewnętrzne linki
- Zalecenie ITU-T G.711
- Narzędzia programowe ITU-T G.191 do kodowania mowy i dźwięku, w tym kod G.711 C
- Kod projektu C# implementacja G.711 z kodem źródłowym
- RFC 3551 — profil RTP dla konferencji audio i wideo z minimalną kontrolą — G.711 — definicja PCMA i PCMU.
- RFC 4856 — Rejestracja typu nośnika audio/PCMA i audio/PCMU
- RFC 5391 — format danych RTP dla zalecenia ITU-T G.711.1 (PCMA-WB i PCMU-WB)