Импульсно-кодовая модуляция (ИКМ) голосовых частот | |
Положение дел | Действующий |
---|---|
Год начался | 1972 г. |
Последняя версия | (02/00) февраль 2000 |
Организация | ITU-T |
Связанные стандарты | G.711.0 , G.711.1 |
Домен | сжатие звука |
Интернет сайт | https://www.itu.int/rec/T-REC-G.711 |
G.711 - это узкополосный аудиокодек, изначально разработанный для использования в телефонии и обеспечивающий качество платного звука со скоростью 64 кбит / с. G.711 передает аудиосигналы в диапазоне 300–3400 Гц и дискретизирует их со скоростью 8000 выборок в секунду с допуском на эту скорость 50 частей на миллион (ppm). Неравномерное (логарифмическое) квантование с 8 битами используется для представления каждой выборки, что приводит к скорости передачи 64 кбит / с. Есть две немного разные версии: μ-закон , который используется в основном в Северной Америке и Японии, и A-law , который используется в большинстве других стран за пределами Северной Америки.
G.711 - это стандарт (Рекомендация) ITU-T для компандирования звука под названием Импульсно-кодовая модуляция (ИКМ) голосовых частот, выпущенный для использования в 1972 году. Это обязательный стандарт во многих технологиях, таких как H.320 и H. .323 стандартов. [1] Его также можно использовать для факсимильной связи по IP-сетям (как определено в спецификации T.38 ).
Были опубликованы два усовершенствования G.711: G.711.0 использует сжатие данных без потерь для уменьшения использования полосы пропускания, а G.711.1 повышает качество звука за счет увеличения полосы пропускания.
Особенности [ править ]
- Частота дискретизации 8 кГц
- Битрейт 64 кбит / с (частота дискретизации 8 кГц × 8 бит на выборку)
- Типичная алгоритмическая задержка составляет 0,125 мс, без упреждающей задержки.
- G.711 - это кодировщик речи с осциллограммой
- В Приложении I к G.711 определен алгоритм маскирования потери пакетов (PLC), помогающий скрыть потери передачи в пакетной сети.
- Приложение II G.711 определяет алгоритм прерывистой передачи (DTX), который использует обнаружение голосовой активности (VAD) и генерацию комфортного шума (CNG) для уменьшения использования полосы пропускания в периоды молчания.
- Тестирование PSQM в идеальных условиях дает средние оценки 4,45 для μ-закона G.711, 4,45 для A-закона G.711 [ необходима ссылка ]
- Тестирование PSQM при напряжении сети дает средние оценки 4,13 для μ-закона G.711, 4,11 для A-закона G.711 [ необходима ссылка ]
Типы [ править ]
G.711 определяет два основных компандирование алгоритмов, в алгоритм μ-закон и алгоритм А-закон . Оба логарифмические , но А-закон был специально разработан, чтобы компьютер упростил обработку. Стандарт также определяет последовательность повторяющихся значений кода, которая определяет уровень мощности 0 дБ .
Алгоритмы μ-закона и A-закона кодируют 14-битные и 13-битные линейные выборки PCM со знаком (соответственно) в логарифмические 8-битные выборки. Таким образом, кодер G.711 будет создавать битовый поток 64 кбит / с для сигнала, дискретизированного с частотой 8 кГц. [1]
Μ-закон G.711 имеет тенденцию давать большее разрешение для сигналов с более высоким диапазоном, в то время как A-закон G.711 обеспечивает более высокие уровни квантования при более низких уровнях сигнала.
Используются термины PCMU, G711u или G711MU для μ-закона G711 и PCMA или G711A для A-закона G711. [2]
A-law [ править ]
Таким образом, кодирование по закону A принимает в качестве входных данных 13-битный линейный аудиосэмпл со знаком и преобразует его в 8-битное значение следующим образом:
Код линейного ввода [примечание 1] | Сжатый код XOR 01010101 | Код линейного вывода [примечание 2] |
---|---|---|
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 | с 110abcd | s01abcd100000 |
s1abcdxxxxxxx | s 111abcd | s1abcd1000000 |
- ^ Это значение получается путем взятия двух дополнительных представлений входного значения и инвертирования всех битов после знакового бита, если значение отрицательное.
- ^ Представление величины со знаком
Где s
знаковый бит, s
является его инверсией (т. Е. Положительные значения кодируются с помощью MSB = s = 1), а отмеченные биты x
отбрасываются. Обратите внимание, что первый столбец таблицы использует другое представление отрицательных значений, чем третий столбец. Так, например, входное десятичное значение -21 после инверсии битов представляется в двоичном виде как 1000000010100, что соответствует 00001010 (согласно первой строке таблицы). При декодировании это отображается обратно на 1000000010101, что интерпретируется как выходное значение -21 в десятичном виде. Входное значение +52 (0000000110100 в двоичном формате) преобразуется в 10011010 (согласно второй строке), которое снова отображается в 0000000110101 (+53 в десятичном формате).
Это можно рассматривать как число с плавающей запятой с 4-мя битами мантиссы m (эквивалентно 5-битной точности), 3-мя битами экспоненты e и 1-м знаковым битом s , отформатированное как seeemmmm
с декодированным линейным значением y, заданным формулой
которое представляет собой 13-битовое целое число со знаком в диапазоне от ± 1 до ± (2 12 - 2 6 ). Обратите внимание, что ни один сжатый код не декодируется до нуля из-за добавления 0,5 (половина шага квантования).
Кроме того, стандарт определяет, что все результирующие четные биты ( LSB четный) инвертируются перед передачей октета. Это должно обеспечить множество переходов 0/1 для облегчения процесса восстановления тактовой частоты в приемниках PCM. Таким образом, канал ИКМ, закодированный по закону A, имеет 8-битные отсчеты, закодированные как 0xD5 вместо 0x80 в октетах.
Когда данные отправляются через E0 ( G.703 ), MSB (знак) отправляется первым, а LSB отправляется последним.
ITU-T STL [3] определяет алгоритм декодирования следующим образом (он помещает декодированные значения в 13 старших битов 16-битного типа выходных данных).
void alaw_expand ( lseg , logbuf , linbuf ) long lseg ; короткий * линбуф ; короткий * logbuf ; { Короткая IX , MANT , iexp ; длинный п ; для ( n = 0 ; n < lseg ; n ++ ) { ix = logbuf [ n ] ^ ( 0x0055 ); / * повторно переключаем переключенные биты * / ix & = ( 0x007F ); / * удалить знаковый бит * / iexp = ix >> 4 ; / * извлечь экспоненту * / mant = ix & ( 0x000F ); / * теперь получаем мантиссу * / if ( iexp > 0 ) mant = mant + 16 ; / * добавляем ведущую '1', если показатель степени> 0 * / мант = ( мант << 4 ) + ( 0x0008 ); / * теперь мантисса выровнена по левому краю и * / / * добавлен 1/2 шага квантования * / if ( iexp > 1 ) / * теперь сдвиг влево согласно экспоненте * / mant = mant << ( iexp - 1 ); linbuf [ n ] = logbuf [ n ] > 127 / * инвертировать, если образец отрицательный * / ? мант : - мант ; } }
См. Также «Руководство пользователя библиотеки программных средств ITU-T 2009», которое можно найти по адресу. [4]
μ-закон [ править ]
Кодирование по μ-закону (иногда называемое ulaw, G.711Mu или G.711μ) принимает на входе 14-битный линейный аудиосэмпл со знаком в дополнительном представлении до двух , инвертирует все биты после знакового бита, если значение отрицательное, добавляет 33 (двоичный 100001) и преобразует его в 8-битное значение следующим образом:
Линейное входное значение [примечание 1] | Сжатый код XOR 11111111 | Линейное выходное значение [примечание 2] |
---|---|---|
s00000001abcdx | s000abcd | s00000001abcd1 |
s0000001abcdxx | s001abcd | s0000001abcd10 |
s000001abcdxxx | s010abcd | s000001abcd100 |
s00001abcdxxxx | s011abcd | s00001abcd1000 |
s0001abcdxxxxx | s100abcd | s0001abcd10000 |
s001abcdxxxxxx | s101abcd | s001abcd100000 |
s01abcdxxxxxxx | s110abcd | s01abcd1000000 |
s1abcdxxxxxxxx | s111abcd | s1abcd10000000 |
- ^ Это значение получается путем взятия двух дополнительных представлений входного значения, инвертирования всех битов после знакового бита, если значение отрицательное, и добавления 33.
- ^ Знаковое представление величины . Окончательный результат получается уменьшением величины этого значения на 33.
Где s
стоит знаковый бит, а отмеченные биты x
отбрасываются.
Кроме того, стандарт определяет, что закодированные биты инвертируются перед передачей октета. Таким образом, канал ИКМ, закодированный по закону μ, имеет 8-битные выборки, переданные в октетах 0xFF вместо 0x00.
Добавление 33 необходимо, чтобы все значения попадали в группу сжатия и вычитались обратно при декодировании.
Разбивая закодированное значение, отформатированное как seeemmmm
4 бита мантиссы m , 3 бита экспоненты e и 1 знаковый бит s , декодированное линейное значение y определяется формулой
которое представляет собой 14-битовое целое число со знаком в диапазоне от ± 0 до ± 8031.
Обратите внимание, что 0 передается как 0xFF, а -1 передается как 0x7F, но при получении результат равен 0 в обоих случаях.
G.711.0 [ править ]
G.711.0, также известный как G.711 LLC, использует сжатие данных без потерь, чтобы уменьшить использование полосы пропускания на целых 50 процентов. [5] Lossless сжатие G.711 импульсно - кодовой модуляции стандарта был одобрен ITU-T в сентябре 2009 г. [6] [7]
G.711.1 [ править ]
G.711.1 является расширением G.711, опубликованным как Рекомендация ITU-T G.711.1 в марте 2008 года. Его формальное название - широкополосное встроенное расширение для импульсной кодовой модуляции G.711 . [7] [8] [9]
G.711.1 позволяет добавлять узкополосные и / или широкополосные (16000 выборок / с) усовершенствования, каждое на 25% скорости передачи (включенного) базового потока G.711, что приводит к скорости передачи данных 64, 80 или 96 кбит. / с.
G.711.1 совместим с G.711 на скорости 64 кбит / с [10], следовательно, предполагается эффективное развертывание в существующих инфраструктурах передачи голоса по IP ( VoIP ) на основе G.711 . Кодер G.711.1 может кодировать сигналы с частотой 16 кГц с полосой пропускания 50–7000 Гц при 80 и 96 кбит / с, а для дискретизации 8 кГц выходной сигнал может генерировать сигналы с полосой пропускания от 50 до 4000 Гц, при работе на 64 и 80 кбит / с. [8]
Кодер G.711.1 создает встроенный поток битов, структурированный на трех уровнях, соответствующих трем доступным скоростям передачи данных: 64, 80 и 96 кбит / с. Битовый поток не содержит никакой информации о том, какие уровни содержатся, реализация потребует внеполосной сигнализации о том, какие уровни доступны. К трем уровням G.711.1 относятся: логарифмически компандированная импульсная кодовая модуляция (ИКМ) нижней полосы, включая шумовую обратную связь, встроенное расширение ИКМ с адаптивным распределением битов для повышения качества базового уровня в нижней полосе и кодирование взвешенного векторного квантования верхний диапазон основан на модифицированном дискретном косинусном преобразовании (MDCT). [8]
В 2010 году запланированы два расширения для G.711.1: сверхширокополосное расширение (ширина полосы до 14000 Гц) и сжатие битового потока без потерь. [11]
Лицензирование [ править ]
Срок действия патентов на G.711, выпущенный в 1972 году, истек, поэтому его можно использовать без лицензии. [1]
См. Также [ править ]
- Список кодеков
- Сравнение форматов кодирования аудио
- Профиль аудио-видео RTP
- Формат файла Au
Ссылки [ править ]
- ^ a b c «G.711: Импульсно-кодовая модуляция (PCM) голосовых частот» . www.itu.int . Архивировано 17 июня 2019 года . Проверено 11 ноября 2019 .
- ^ "Видео / Голос / Речевые кодеки" . Грандстрим = . Проверено 19 июля 2020 .
- ^ G.191: Программные инструменты для стандартизации кодирования речи и звука . Функция
alaw_expand
в файлеSoftware/stl2009/g711/g711.c
. Itu.int. Проверено 18 сентября 2013. - ^ G.191: ITU-T Software Tool Library 2009 Руководство пользователя . Itu.int (23 июля 2010 г.). Проверено 18 сентября 2013.
- ↑ ITU-T (17 июля 2009 г.). "ITU-T Newslog - Голосовой кодек получает новое сжатие без потерь" . Архивировано 03 марта 2016 года . Проверено 28 февраля 2010 .
- ^ ITU-T. «G.711.0: сжатие без потерь модуляции импульсного кода G.711» . Проверено 28 февраля 2010 .
- ^ a b Последние разработки в области кодирования звука / речи в ITU-T и будущие тенденции (PDF) , август 2008 г. , получено 28 февраля 2010 г.
- ^ a b c ITU-T (2008) G.711.1: Широкополосное встроенное расширение для импульсной кодовой модуляции G.711 Проверено 19 июня 2009 г.
- ^ Хивасаки; и другие. (2008-08-25), G.711.1: широкополосное расширение до ITU-T G.711 (PDF) , получено 13 июня 2015 г.
- ^ Лапьер; и другие. (2008-08-25), Формирование шума во встроенном кодеке ITU-T G.711-Interoperable (PDF) , получено 13 июня 2015 г.
- ^ Nokia Research Center (06.04.2009), Стандарты кодирования (PDF) , получено 01.03.2010
Внешние ссылки [ править ]
- Рекомендация МСЭ-Т G.711
- Программные средства ITU-T G.191 для кодирования речи и звука, включая код G.711 C
- Code Project C # реализация G.711 с исходным кодом
- RFC 3551 - Профиль RTP для аудио- и видеоконференций с минимальным контролем - G.711 - Определение PCMA и PCMU.
- RFC 4856 - Регистрация типа носителя аудио / PCMA и аудио / PCMU
- RFC 5391 - Формат полезной нагрузки RTP для Рекомендации ITU-T G.711.1 (PCMA-WB и PCMU-WB)