Кодеки в VoIP

Кодеки в VoIP

 

Что такое кодек?

Под кодеками, как правило, понимаются различные математические модели, используемые для цифрового кодирования (и сжатия) аналоговой аудио информации. Многие из этих моделей базируются на способности человеческого мозга формировать полное впечатление от неполной информации. Так же как и в оптических иллюзиях, наш мозг воспринимает голосовые алгоритмы сжатия информации с тенденцией интерпретировать то, что мы считаем, что мы должны услышать, а не то, что мы на самом деле слышим. Цель различных алгоритмов кодирования найти баланс между эффективностью полосы пропускания и качеством передачи голоса. На аудио CD, качество звука гораздо важнее, чем экономия пропускной способности, так звук в CD квантуется в режиме 16 бит (2 раза для стерео), с частотой дискретизации 44100 Гц. Учитывая, что компакт-диск был изобретен в конце 1970-х, это было довольно внушительное качество в то время. Для телефонной сети не требуется такой уровень качества (и потребностей для оптимизации полосы пропускания), поэтому телефонные сигналы кодируются с использованием 8 бит, при частоте дискретизации 8000 Гц.
Первоначально с термином “кодек” (от англ. codec - COder/DECoder) называлось устройство, которое преобразует сигнал с аналогового в цифровой или наоборот. Теперь, термин используется в зачении КОмпрессия/ДЕКомпрессия (COmpression/DECompression).

Каждое оборудование, программное решение, телефон, шлюз и т.п. обычно поддерживает несколько различных кодеков, и когда совершается звонок, они “договариваются”, какой кодек они будут использовать.

Кодеки, которые используются в VoIP:

AMR Codec
BroadVoice Codec 16Kbps для узкополосных и 32Kbps для широкополосных
DoD CELP - 4.8 Kbps
GIPS Family - 13.3 Kbps и выше
GSM - 13 Kbps
iLBC - 15Kbps, 13.3 Kbps
ITU G.711 - 64 Kbps, в двух вариантах: A-law и μ-law
ITU G.722 - 48/56/64 Kbps ADPCM 7 кГц пропускной способности
ITU G.722.1 - 24/32 Kbps 7 кГц пропускной способности (основан на кодеке SIREN от Polycom)
ITU G.722.1C - 32 Kbps, усовершенствованый кодек от Polycom, 14 кГц пропускной способности
ITU G.722.2 - от 6.6Kbps до 23.85Kbps. Также известный как AMR-WB. CELP 7 кГц пропускной способности
ITU G.723.1 - 5.3/6.3 Kbps
ITU G.726 - 16/24/32/40 Kbps
ITU G.728 - 16 Kbps
ITU G.729 - 8 Kbps
LPC10 - 2.5 Kbps
Speex - от 2.15 до 44.2 Kbps

AMR

AMR (англ. - Adaptive Multi-Rate) кодек кодирует узкополосные (200-3400Гц) сигналы при переменном битрейте в диапазоне от 4,75 до 12,2 кбит с кчеством, начиная с 7,4 кбит для междугородних звонков. AMR является обязательным стандартным кодеком для 2.5G/3G беспроводных сетей на базе GSM (WDMA, EDGE, GPRS).
Первоначально был разработан для GSM и был стандартизован в 1999 году Европейским институтом телекоммуникационных стандартов ETSI
В 2006 году был включен в спецификации CableLabs PacketCable 2.0.
AMR, работающий на различных битрейтах встроен в каждый GSM и WCDMA телефон, гарантируя то, что контент, генерируемый AMR может воспринимать практически любой мобильный телефон в мире.

BroadVoice

BroadVoice представляет собой семейство кодеков созданных компанией Broadcom и стандартизированых CableLabs, ANSI и другими.
BroadVoice существует в двух вариантах: 16 кб/с версия под названием BroadVoice16 (BV16) для узкополосных телефонных линий с частотой дискретизации 8 кГц, 32 кб/с версия под названием BroadVoice32 (BV32) для широкополосных линий с частотой дискретизации 16 кГц. BV16 это стандартный кодек в следующих стандартах: PacketCable ™ 1.5, PacketCable 2.0, ANSI / SCTE 24-21 2006 года и Рекомендации ITU-Т J.161. BV32 это стандартный кодек в PacketCable 2.0, ANSI / SCTE 24-23 2007 года и Рекомендации ITU-Т J.361. RTP формат для BV16 BV32 и указан в RFC4298.

BroadVoice был разработан с нуля, чтобы быть оптимизированым для передачи голоса через IP-сети. Основная цель дизайна BroadVoice было сделать кодирования задержек и сложностей кодека как можно меньшими, сохраняя при этом качество выходной речи как можно ближе к исходной.

DoD CELP

В 1991 году американское Министерство обороны стандартизировало 4,8 кбит/с CELP кодек в качестве федерального стандарта 1016. DoD CELP кодек перекодирует речь в 30мс блоки, каждый из которых делится на четыре 7,5 мс суб-блоков. Для каждого фрейма кодер вычисляет ряд 10 коэффициентов фильтра для краткосрочного фильтра синтеза, который используется, чтобы смоделировать вокальный трактат динамика. Возбуждение для этого фильтра определено для каждого подкадра, и дано суммой масштабируемых записей от двух книг шифров. Адаптивная книга шифров используется, чтобы смоделировать долгосрочные периодичности, существующие в речевой речи, и для каждого подкадра индекс и усиление определены для этой книги шифров. Фиксированная книга шифров, содержащая 512 псевдослучайных кодов, также ищется, чтобы найти запись книги шифров, и множитель усиления для этой записи, которые минимизируют ошибку между восстановленным и исходными речевыми выборками. В декодере масштабируемые записи от этих двух книг шифров передают через фильтр синтеза, чтобы произнести восстановленную речь. Наконец эту речь передают через постфильтр, чтобы улучшить его перцепционное качество.

GIPS

GIPS (Global IP Sound) - производитель семейства кодеков VOIP и соответствующего программного обеспечения.

Скорость передачи: 13,3 кб/с и выше.

Утверждается, что кодек может поддерживать качество передачи голоса с 30% потерей пакетов.
Эта технология является лицензированной для использования в Skype.

GIPS это создатели и владельцы iLBC узкополосного кодека, который они предоставляют под ограниченной, но свободной лицензией. Он поддерживается по умолчанию в Asterisk и является стандартом IETF.

Широкополосные GIPS кодеки (частота дискретизации равна 16кГц) являются платными. К ним относятся:
iSAC (internet Speech Audio Codec): кодек с переменным битрейтом высокой производительности, предназначенным для низкоскоростных соединений включая dialup. Это кодек, который наиболее близко соответствует тому, который используется клиентом Skype.
iPCM-wb (internet Pulse Code Modulation wide-band): для более высокоскоростных соединений.

GSM

GSM (англ. - Global System for Mobile communications - является системным стандартом сотовой телефонной связи, популярной вне США.

Исходный 'Full Rate' GSM речевой кодек называют RPE-LTP (англ. - Regular Pulse Excitation Long-Term Prediction). Этот кодек использует информацию от предыдущих сэмплов (эта информация не изменяется очень быстро), чтобы “предсказать” текущий сэмпл. Речевой сигнал разделен на блоки по 20 мс. Потом эти сэмплы передаются к разговорному кодеку, у которого битрейт 13 Кбит/с, чтобы получить блоки 260 битов.

Более новые системы GSM используют несколько более новых кодеков однако они сильно обремененные патентами:
EFR (Enhanced Full Rate) использует патент ACELP
HR (Half Rate) использует патент CELP-VSELP

GSM является родным кодеком для почти всех Asterisk / Trixbox установок. Этот кодек не требует лицензирования и он дает выдающуюся производительность. Качество звука, как правило, считается хуже, чем при использовании G.729A кодека, но большая часть этих мнений сводятся к личным предпочтениям.
GSM работает на скорости 13 Kbps и не требует лицензирования.

iLBC

iLBC - это VoIP кодек, первоначально созданный компанией Global IP Sound, но стал доступен (в том числе и его исходный код) в рамках ограниченной, но свободной лицензией, в том числе разрешается его изменение.

iLBC является свободным кодеком для предачи голоса подходит для надежной голосовой связи через интернет. Кодек предназначен для узкополсных линий передачи с битрейтом 13,33 кбит/с с поддержкой кодирования длины фрейма в 30 мс и 15,20 кбит/с кодировкой фреймов длиной 20 мс. Основные качества выше, чем G.729A, высокая устойчивость к потере пакетов

iLBC обеспечивает привлекательную смесь низкого уровеня пропускной способности и качества, и это особенно хорошо подходит для поддержания приемлемого качества связи на низкосокростных интернет соединениях. Этот кодек поддерживается Asterisk, но он не так популярен, как ITU кодеки и, таким образом, может быть не совместимым с обычными IP-телефонами и коммерческими системами VoIP. В IETF RFC 3951 и 3952 была включена поддержка iLBC. Так как iLBC использует сложные алгоритмы, чтобы достигнуть высокой степени сжатия, он имеет довольно высокую загрузку процессоров в Asterisk.
Хотя можно использовать iLBC без уплаты лицензионных платежей, обладателя патента на iLBC - Global IP Sound (GIPS) нужно оповещать всякий раз, когда вы используете кодек в коммерческих целях.

ITU G.711

G.711 - это кодек стандарта ITU с высоким битрейтом - 64 кб/с. Это “родной” кодек для современной цифровой телефонной сети.

Кодек стандартизирован в 1988 году. Изобретенный компанией Bell Systems и представлен в начале 70-х, цифровая соединительная линия T1 использовала 8-разрядную несжатую схему кодирования несжатой импульсно-кодовой модуляции (ИКМ) с частотой дискретизации 8000 сэмплов в секунду. Теоретически возможной голсовая пропускная способность была 4000 Гц. Соединительная линия T1 переносит 24 цифровых канала ИКМ, мультиплексированные вместе. Улучшенный европейский стандарт E1 переносит 30 каналов.

Есть две версии кодека: A-law и μ-law. μ-law внутренним T1 стандартом, используемым в Северной Америке и Японии. A-law является внутренним E1 стандартом, используемым в остальной части мира. Разница заключается в способе сэмплирования аналогового сигнала. В обеих схемах, сигнал не сэмплируется линейно, а в логарифмической форме. A-law обеспечивает больший динамический диапазон чем μ-law. В результате получается менее нечеткий звук, так как артифакты, которые возникают при сэмплировании лучше подавляются.

Использование G.711 в VoIP дает лучшее качество передачи голоса, так как используется малое сжатие голоса, и это - тот же самый кодек, используемый сетью PSTN и линиями ISDN и звучание не отличается от того, что в обычном или ISDN телефоне. Также для кодека характерны малые задержки, потому что нет никакой необходимости для сильного сжатия, которое занимает вычислительне мощности. Недостатком является то, что для кодека нужна более высокая пропускная способность, чем для других кодеков - до 84 кб/с, включая TCP/IP. Однако с увеличением пропускной способности у широкополосных провайдеров, это не должно быть проблемой.

ITU G.722

G.722 - это кодек стандарта ITU с высоким битрейтом - 48/56/64 кб/с.
Кодирование речи в этом кодеке идет с более широкой пропускной способностью, что приводит к хорошему качетсву передачи голоса. Широкополосный алгоритм кодирования речевых сигналов CCITT поддерживает скорости передачи 64, 56 и 48 кбит. Кодек может быть интегрирован на одной микросхеме, и ее полная задержка составляет приблизительно 3 мс, достаточно мало, чтобы не вызывать проблемы эха в сетях связи. Кроме того, кодек обеспечивает приемлемую производительность для коэффициента битовых ошибок передачи до 1000. Это гарантирует то, что производительность ухудшается полого даже при плохих условиях передачи.

Высококачественное кодирование широкополосным речевым кодером G.722 обеспечено фиксацией выборки битов информации, где низкие и высокие кодеры ADPCM поддиапазонов используют 6 бит/сэмпл и 2 бит/сэмпл квантизаторы, соответственно. В низком поддиапазоне сигнал напоминает узкополосный речевой сигнал и высокий SNR в более низкой полосе пропускания становится перцепционно более важным чем в более высокой полосе. Динамический диапазон низкого квантизатора сигнала полосы был установлен на уровне 51 дБ, а высокий квантизатор сигнала полосы был установлен на уровне 66 дБ, главным образом для музыкальных сигналов. Чтобы препятствовать появлению нулевого кода в представлении данных на 4 бита, используются только 15 уровней квантизатора. Это также ограничивает представление данных на 5 и 6 битов на 30 и 60 уровнях квантизатора.

ITU G.723.1

G.723.1 - кодек стандарта ITU. Он имеет достаточно низкой битрейт (6.3Kbps или 5.3Kbps) и используется в стандарте H.323
Использование этого кодека в своих продуктах требует лицензирования у Sipro Lab Telecom.
G.723.1 - это официальное название кодера речи для организации мультимедийной связи с передачей данных в 5,3 и 6,3 кбит/с.
G.723.1 может работать при битрейте 6,3 кбит/с (при использовании 24 байтовых фреймов) с помощью MPC-MLQ алгоритма или с битрейтом 5,3 кбит/с (при использовании 20 байтовых кадров), используя алгоритм ACELP. Использование G.723.1 требует лицензии на патенты, которые покрывают алгоритм. Последний патент истекает в 2014 году. Авторизованные права интеллектуальной собственности и лицензиатор для технологии G.723.1 является Sipro Lab Telecom. Членами патентного пула G.723.1 являются AudioCodes, France Telecom, Университет Шербрука, Nippon Telegraph и Nokia.

ITU G.726

G.726 является кодеком ITU стандарта. Этот кодек использует адаптивную дифференциальную импульсно-кодовую модуляцию (ADPCM).

Как и G.711, G.726 имеет свои корни в сети PSTN. Он в основном используется для международных ных линий, чтобы сохранить пропускную способность. G.726 имеет битрейт 32 Kbps, обеспечивая почти то же качество, что и G.711 c битрейтом 64kbps. Также, он является стандартным кодеком в беспроводных телефонах DECT.

G.726 был малопопулярен в 1990-х годах из-за его неспособности передавать модемые и факсимильные сигналы, но из-за его пропускной способности и малой нагрузки на систему в настоящее время возвращается.

Битрейт может вариироватся в районе 16, 24, 32 или 40 Kbps, но 32 Kbps, но является стандартом.

Asterisk в настоящее время поддерживает только стандартные 32kbps.

ITU G.728

G.728 является кодеков ITU стандарта для кодирования голосовой информации при битрейте в 16 Кбит/с.
Используемой для кодировки технологией является LD-CELP. Задержка кодека - только 5 сэмплов (0.625 мс). Стандарт был закончен в 1992 году в форме алгоритма точного код с плавающей запятой. В 1994 году был выпущен кодек, который извлекает биты с фиксированной запятой. G.728 пропускает модемные сигналы до 2400 бит/с. Также проходит сетевая сигнализация.

RealAudio 28_8 является разновидностью этого кодека с битрейтом 15.2 Кб/с.

ITU G.729

G.729 является кодеком ITU стандарта. Имеется две разновидности: A и B.

Этот кодек предоставляет качественную междугородную передачу речи при низком битрейте - 8 Кбит/с. Однако, это, скорее, "дорогостоящий" кодек с точки зрения машинного времени, поэтому некоторые VoIP-телефоны и адаптеры (в частности брендов Linksys / Sipura / Cisco) могут обрабатывать только один G.729 звонок (канал) одновременно.

Использование этого кодека в своих продуктах требует лицензирования. Лицензии могут быть приобретены у компаний-реселлеров G.729 лицензий, таких как:
Digium
Howler Технологии
VoiceAge
Adaptive Digital Technologies

Также есть бесплатная экспериментальная реализация этого кодека для некоммерческих целей.

Учитывая то, как мало пропускной способности использует кодек, G.729A обеспечивает впечатляющую качество звука. Он делает это с помощью CS-ACELP алгоритма сжатия речи. Из-за патента, использование G729A без уплаты лицензионного сбора не возможно, однако он очень популярен и хорошо поддерживается на различными телефонами и системами. Для достижения своей впечатляющей степени сжатия, этот кодек требует столь же внушительное количество мощностей от процессора. Например, на системах Asterisk, использование кодеков с сильным сжатием кодеками может задерживать работу процессора.

LPC10

LPC - англ. Linear Predictive Coding - линейное кодирование с предсказанием.
LPC10 используется для линий связи с узкиой пропускной способностью с битрейтом 2.5 Кбит/с.
Голосовой сигнал чистый, но звучание похоже на голос робота.

Speex

Speex является бесплатным и с открытым исходным кодом, без патентов, аудио формат сжатия речи. Speex предоставляет бесплатную альтернативу дорогим проприетарным кодекам. Более того, Speex, хорошо адаптирован для интернет-приложений и предоставляет полезные функции, которые отсутствуют в большинстве других кодеков. Наконец, Speex является частью проекта GNU и доступен в соответствии с Xiph.org разновидностью BSD лицензии.
Speex является мощным кодек из-за его гибкости. Тем не менее он потребляет больше ресурсов процессора, чем G729, G726 или GSM кодеки, и примерно такую же, как iLBC. В то время как iLBC поставляется с атипичным количеством фреймов - 30 мс и при его работе теряются пакеты, Speex может быть скорректирован под ваши нужды через codecs.conf в системе Asterisk, в отличие от любого другого кодека.

Speex является кодеком с переменным битрейтом (от 2,15 до 22,4 Kbps), это означает, что он способен динамически изменять свой битрейт, чтобы “подстраиватся” под изменяющиеся условия сети. Он предоставляется как в узкополосных и широкополосных версиях, в зависимости от того, требуется качество телефонной линии или лучше.