Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #85, ЯНВАРЬ 2006 г.

Прощай, телефонная сеть

Степан Ильин (step@gameland.ru)

Хакер, номер #085, стр. 085-030-4


В основе кодеков лежат сложные алгоритмы, которые занимаются разбиением аналоговых данных на отрывки, их сжатием и упаковкой. Наиболее известным считается алгоритм с непроизносимым названием CS-ACELP (Conjugate Structure Algebraic Code Excited Linear Prediction). Он использует одно очень простое, но чрезвычайно эффективное правило: «Если никто не говорит, значит, данные передавать не нужно». Казалось бы, что в этом такого? А в том, что все сигнальные фрагменты можно условно разделить на несколько типов: вокализированные (голос человека), невокализированные, переходные и паузы. При одной и той же длительности и качестве кодирования разных типов отрывков требуется неодинаковое количество битов (при том, что паузы не нужно кодировать вообще). Соответственно, скорость передачи разных типов отрывков также сильно варьируется. По этой причине было принято решение использовать метод передачи речи с разной скоростью. Необходимая скорость определяется специальным классификатором, который на основе анализа входных данных выбирает нужный метод кодирования. Наиболее простым классификатором является Voice Activity Detector (VAC), который умеет определять два состояния входных данных: голос и паузы. Фрагменты, которые были классифицированы как голос, передаются на большой скорости. Паузы, что следовало ожидать, кодируется с меньшей детализацией и требуют для передачи значительно меньшую скорость.

[вся проблема в задержках]

Для комфортной передачи голоса нужен широкий канал. Но даже очень высокая пропускная способность не поможет тебе насладиться разговором, если задержки с доставкой пакетов до адресата будут достигать хотя бы половины секунды. Вспомни левый пиратский диск со свежим блокбастером, в котором из-за чьих-то кривых рук произошла рассинхронизация видео и звука. Смотреть такое кино невозможно, также нереально будет и разговаривать с задержками. Вот почему так важно снизить их до минимума и гарантировать, что они не возрастут выше определенного потолка. Для этого применяется сразу несколько методов, которые в самых разных ситуациях дополняют друг друга и выдают максимальный результат.

Резервирование части полосы исключительно для VoIP - это самое очевидное и, что очень важно, эффективное решение. В обычных сетях Ethernet существует такое понятие, как качество обслуживания (QoS - Quality of Service). Сервис выделяет часть канала специально для передачи чисто технической информации, чтобы обеспечить благоприятные условия для взаимодействия всех ключевых узлов сети, даже если локалка будет испытывать сверхнагрузки. Технология VoIP применяет похожие принципы, но ориентированные на передачу именно голосовых данных. Разработчики стандарта подсчитали, что IP-пакеты с голосовыми данными рациональнее отправлять большими (относительно пакетов) блоками, так как только в этом случае удастся эффективно использовать выделенную полосу пропускания. Такой подход сильно упрощает процедуру управления очередями и расстановки приоритетов для различного типа пакетов, что является серьезной проблемой для всех IP-сетей. Правда, стоит отметить, что для создания блока, достаточного для отправки, необходимо время. Конечно, это время минимально, но все же оно создает дополнительную задержку.

Назад на стр. 085-030-3  Содержание  Вперед на стр. 085-030-5