Интернет-низкоскоростной кодек (iLBC) для VoIP

Этот пример реализует интернет-Низкоскоростной кодек (iLBC) и иллюстрирует его использование. iLBC разработан для кодирования и декодирования речи для передачи через VoIP (Речь По межсетевому протоколу).

VoIP

Речь по межсетевому протоколу является семейством технологий, которое позволяет сетям IP использоваться для голосовых приложений, таких как телефония и организация телеконференций. Сжатие обычно требуется, чтобы уменьшать требования пропускной способности этих приложений. Для эффективности VoIP часто реализуется с помощью легкого, но ненадежного Пользовательского дейтаграммного протокола (UDP). Пакетное исправление потерь необходимо, чтобы поддержать полученное качество речи по сетям с потерями.

Основной Проект iLBC и Производительность

iLBC разработан для сжатия речи, которая будет передана по Интернету. Таким образом его алгоритмы только предназначены, чтобы покрыть узкий частотный диапазон 90-4000 Гц, и он реализует перцептуальное кодирование, настроенное на нормальную речь. Все входные сигналы к iLBC энкодеру должны быть речевыми сигналами Импульсного модулируемого кода (PCM), выбранными на уровне точно 8 000 Гц с 16-битными выборками в пределах от-32768 к +32767.

iLBC задан для двух различной скорости передачи с пакетом данных, закодированных или после каждых 30 мс или после каждых 20 мс речи. Преимущество кодирования каждых 30 мс состоит в том, что закодированная скорость передачи данных ниже: 13,33 Кбит/с в противоположность 15,20 Кбит/с для кадров на 20 мс. Однако кодирование каждых 30 мс приводит к на 50% большему количеству задержки полученной речи, которая может вызвать нежелательную задержку.

Поскольку все входные параметры к iLBC должны составить 8 000 Гц, 16-битная речь PCM, входной уровень (8 000 Гц) * (16 битов) = 128 Кбит/с. Таким образом iLBC сжимает речь в 10,4% и 11,9% исходной скорости передачи данных для режимов на 15,20 Кбит/с и на 13,33 Кбит/с, соответственно.

В дополнение к кодированию к низким уровням передачи данных iLBC служит основой для того, чтобы легко реализовать системы Пакетного исправления потерь (PLC). Кодек предназначается для речи в реальном времени по Интернету, но Интернет подвергается случайным задержкам маршрутизации информации в режиме реального времени, которая представляет много пакетов, бесполезных к iLBC декодеру. Задание PLC должно интерполировать речь для недостающих пакетов на основе пакетов прежде и сразу после недостающего. Хотя iLBC не задает определенный алгоритм PLC, этот пример реализует простой PLC для рисунка.

iLBC Модель В качестве примера

Модель, показанная ниже чтений в речевом сигнале и, после прохождения iLBC, проигрывает вывод с аудио устройством по умолчанию.

Используя iLBC Модель В качестве примера

Верхний уровень этой модели в качестве примера состоит только из горстки простых блоков. Основная операция должна загрузить речевой сигнал и передать его блоку iLBC Encoder, чтобы преобразовать его в поток iLBC пакетов. Затем, пакеты отправляются через моделируемый канал с потерями, который заставляет случайные пакеты быть установленными во все нули. Наконец, пакеты отправляются в блок iLBC Decoder, который будет преобразован назад в речевой сигнал, который затем проигрывается. Кроме того, существует ручной переключатель, который может быть переключен, когда модель запускается, чтобы сравнить исходный речевой сигнал с декодируемым сигналом.

Двойной щелчок по блоку Configuration в правом верхнем углу модели поднимает диалоговое окно, где возможно изменить уровень передачи данных на один из двух iLBC режимов (13,33 Кбит/с или 15,20 Кбит/с). Скорость передачи декодера должна быть установлена в то же самое как энкодер, или иначе ошибка произойдет. Кроме того, пользователь может задать, использовать ли двойную или одинарную точность для всех внутренних вычислений в энкодере и декодере.

Двойной щелчок по подсистеме Канала С потерями поднимает диалоговое окно, которое позволяет проценту потерянных пакетов быть установленным. Пакетный алгоритм Укрывательства iLBC Декодера Потерь настраивается, чтобы исправить за 0-10%-ю пакетную потерю. Пакетные уровни потерь выше, чем 10% будут легко слышимыми.

iLBC блоки энкодера и декодера реализованы как подсистемы в этой модели. В порядке разместить уровень повторного использования, они также используют библиотеку в качестве примера, которая может быть найдена в dspilbclib. Эта библиотека содержит четыре блока помощника, используемые энкодером и декодером. Не стесняйтесь открывать библиотеку и смотреть под блоками, чтобы видеть, как iLBC был реализован в Simulink®.