Поддубный
Е.А.
Донецкий
национальный технический университет, Украина
Разработка
программного кодека IP-телефонии на базе открытого кодека iLBC
Передача голоса в несжатом виде в сетях VoIP занимает слишком большую пропускную способность сети и,
кроме того, не дает никаких непосредственных преимуществ в сравнении с
телефонными сетями [1]. По этой причине устройства VoIP-телефонии имеют в своем
составе так называемый вокодер или кодер речи. Вокодер осуществляет компрессию
языка перед передачей в сеть ІP и ее декомпрессию на принимающей стороне.
Проблема заключается в том, шо с уменьшением пропускной способности канала
качество передачи голоса ухудшается.
Разность заключается лишь в том, что для одних кодеков это ухудшение
проходит скорее, другие – благодаря алгоритмическим особенностям могут
адаптироваться под условия передачи голоса и улучшать параметры передачи [2].
Вокодер также вносит дополнительную задержку при
выполнении реальных расчетов относительно сжатия голоса – так называемую
задержку компрессии. В этом случае величина задержки зависит от того, какой
сигнальный процессор используется. Как правило, чем ниже скорость передачи, тем
выше сжатие, тем больше задержка на вычисление.
При транспортировке пакетов IP-телефонии в сети передачи
данных на качество голоса значительно влияют также задержка передачи пакетов,
потери пакетов и джиттер задержки. Наиболее критичными для разборчивости речи являются
потери пакетов [3].
Исходя из этого, разработка кодека ІР-телефонии
нуждается в учете этих параметров, а именно повышении стойкости кодека к
задержкам транспортировки за счет уменьшение времени обработки голосовых данных.
Таким образом, в ходе разработки кодека,
приходится выбирать между качеством связи и пропускной способностью канала, а
также учитывать задержку, которую вносит кодек. Поэтому задача проектирования
наиболее качественных кодеков для низкоскоростных каналов с высоким уровнем помех
является довольно актуальной.
Анализ методов представления
сигнала в
существующих кодеках VoIP показал,
что оптимальным методом является методом линейного предсказания. Таким образом в
данной работе для реализации программного кодека ІР-телефонии было принято
решение использовать открытый кодек на базе LPC-модели открытого кодека iLBC.
Для
повышения эффективности кодирования в модифицированном кодеке будем
использовать векторное квантования вместо скалярного. Векторное квантование
снижает итоговую скорость цифрового потока вокодера до 247 бит для каждого
кадра длиной 20 мс, что представляет фиксированную битовую скорость 12,35 кбит/с
(ниже чем для режима с 30 мс кадром прототипа).
Разработанный кодек генерирует пакеты
размером в 31 байт, что меньше чем в базовом iLBC (33 байта для
iLBC_20 и 58 байт для iLBC_30). Необходимая полоса пропускания в канале Ethernet без потерь при использовании IPv4-35,5 кбbт/с, при использовании
IPv6-40,2 кбит/с.
Таким образом, в работе описана
разработка программного кодека iLBC-M,
который за счет использования векторного квантования обеспечит уменьшение
необходимой полосы пропускания для кодированного сигнала, алгоритмической
задержки, повышение стойкости к потерям пакетов и задержкам передачи за счет
повышения скорости обработки информации.
Для оценки результатов
разработанного программного кодека используется открытый код алгоритма PESQ,
как наиболее эффективный объективный метод оценки качества передачи речи.
Программный продукт был разработан с
использованием C# (Си-шарп) – объектно-ориентированного языка
программирования с системой типизации для платформы .NET.
Для понимания функциональности разработанного
продукта необходимо рассмотреть программу на уровне интерфейса пользователя и
внутренних модулей реализации кодирования, декодирование, анализа качества
сигнала, моделей канала и т.д.
Приведем описание интерфейса программы (рисунок 1).
Рисунок 1 – Интерфейс программы
Интерфейс разработан по концепции User-Friendly
Interface.
Интерфейс представлен в виде программного окна,
которое имеет четыре основных функциональных модуля.
Модуль «аудио-проигрыватель»
– предоставляет пользователю возможность прослушивания сигнала на входе кодера
и сигнала на выходе декодера. Для анализа работы кодека используются файлы с
записью голоса со следующими параметрами:
-
формат
файлов *.WAV (аудио без компрессии);
-
формат
звучания – одноканальное аудио (моно);
-
частота
дискретизации – 8000 Гц;
-
битовая
глубина – 16 бит.
Следующий модуль – «входные данные». С помощью
данного модуля можно выбрать файл с записью голоса и кодек для исследования. Для
исследования доступны три голосовых кодека:
-
iLBC-M
(разработанный на базе iLBC кодек);
-
iLBC_20
– базовый iLBC кодек с 20 мс фреймами на выходе;
-
iLBC_30
– базовый iLBC кодек с 30 мс фреймами выходе.
Модуль «визуализация» предоставляет возможность
пользователю исследовать форму сигнала на входе кодера и выходе декодера,
сравнивать амплитуду и форму сигнала во временном пространстве.
Модуль «исследование» состоит из двух частей:
-
блок
исследования прохождения сигнала через канал сети с моделями потерь пакетов,
задержек и уменьшение пропускной способности;
-
блок
базовых параметров обработки сигнала выбранным кодеком.
Таким образом, разработанный интерфейс
программного продукта позволяет легко загрузить необходимые данные и
проанализировать параметры прохождения кодированного сигнала через канал сети с
помощью графиков зависимостей оценки качества работы кодека PESQ от основных
параметров QoS, а также оценить форму сигнала и его звучание на входе и
выходе системы.
Рассмотрим внутреннюю структуру программного
продукта.
Общая
схема взаимодействия внутренних модулей и классов программы представлена на
рисунке 2.
Внутреннюю структуру программы можно разделить
на 5 зависимых модулей (рисунок 2):
-
модуль
интерфейса;
-
модуль
общих классов;
-
модуль
реализации кодека іLBC-M;
-
модуль
реализации базового кодека іLBС;
-
модуль
реализации алгоритма PESQ.
Рисунок 2 – Общая схема взаимодействия
внутренних модулей и классов программы
Таким
образом, на основе разработанного алгоритма кодирования iLBC-M была создана
программу-эмулятор для анализа работы кодека и сравнения характеритстик с
базовым iLBC . Программный кодек
может быть полезен для реализации кодека в сетях IP-телефонии,
программа-эмулятор для проведения исследований в лабораторных условиях.
Литература:
1. Шелухин О.И., Лукьянцев
Н.Ф. «Цифровая обработка и передача речи». М., «Радио и связь», 2000.
2.
Бондарев
В.Н. Цифровая обработка сигналов: методы и средства/ В.Н. Бондарев, Г. Трестер,
В.Н. Чернега.- Харьков: Изд-во Конус, 2001.-398 с.
3.
Рабинер
Л.Р Цифровая обработка речевых сигналов/ Л.Р. Рабинер, Р.В. Шафер.- М.: Радио и
Связь. 1981.-495 с.