Сглаживание дрожания в сети с уменьшенной задержкой
Иллюстрации
Показать всеИзобретение относится к способу компенсации дрожания в потоке пакетов. Способ содержит помещение не декодированных кадров, извлеченных из пакетов в потоке пакетов, в буфер дрожания, в то время как кадры из буфера дрожания декодируются и декодированные кадры помещаются в буфер выборок со скоростью, определенной с использованием средней задержки воспроизведения. Средняя задержка воспроизведения является скользящим средним задержки воспроизведения, вычисленной для каждого пакета, когда каждый пакет становится доступным. Задержка воспроизведения для каждого пакета является суммой задержки буфера выборок и задержки буфера дрожания. Когда каждый пакет принимается, средняя задержка воспроизведения регулируется на основании сравнения задержки воспроизведения, ассоциированной с принятым пакетом, с текущей средней задержкой воспроизведения. Технический результат - более точное восстановление аудиосигнала. 2. н. и 17 з.п. ф-лы, 11 ил.
Реферат
Предшествующий уровень техники
Сети связи, используемые вычислительными устройствами, такие как сети с Интернет протоколом (IP), передают данные в пакетах. Пакеты являются комплектами (пачками) данных, организованных специальным образом для передачи. Пакет включает в себя заголовок и основную часть (тело). Основная часть содержит данные, и заголовок содержит некоторую информацию управления, включающую в себя адрес назначения, размер пакета, код проверки ошибок и так далее. Данные от вычислительного устройства вставляются в пакет, и пакет передается к другому вычислительному устройству, которое извлекает и использует эти данные. Например, вычислительное устройство, соединенное с микрофоном, может быть использовано для записи голосового сообщения и, используя пакеты, передавать голосовое сообщение ко второму вычислительному устройству, которое воспроизводит голосовое сообщение через динамик.
Для передачи голосового сообщения, используя пакеты, голосовое сообщение записывается как аналоговый аудиосигнал. Аналогово-цифровой преобразователь (ADC, АЦП) используется для преобразования аудиосигнала в цифровой сигнал. Цифровой сигнал преобразовывается в кодированные двоичные данные посредством кодировщика/декодировщика (кодека). Кодирование двоичных данных обычно использует сжатие данных. Двоичные данные разбиваются на отдельные кадры и помещаются в буфер. Формирователь пакетов извлекает один или больше кадров из буфера и помещает кадры в один или больше пакетов. Пакеты передаются по сети к вычислительному устройству воспроизведения. Считыватель пакета считывает пакеты и извлекает один или более кадров из пакетов и помещает кадры в буфер. Кадры извлекаются из буфера, и закодированные двоичные данные, включенные в кадры, декодируются и преобразовываются в цифровой сигнал посредством кодека. Цифровой сигнал преобразовывается в аналоговый аудиосигнал посредством цифроаналогового преобразователя (DAC, ЦАП). Аудиосигнал управляет динамиком, который восстанавливает первоначальное голосовое сообщение.
Так как сети связи есть совокупность физических устройств, пакетам, которые не потеряны, требуется конечное время для доставки. Срок доставки пакета изменяется в силу различных причин задержки, таких как, но не ограничиваясь ими, физическое расстояние передачи пакетов по линиям передачи, изменения производительности маршрутизаторов сети и коммутаторов, используемых для маршрутизации пакетов и "дрейф сигнала синхронизации", разности тактирования между вычислительными устройствами, которые передают и принимают пакеты. В зависимости от числа и типов причин задержки, с которыми пакет сталкивается, будучи переданным, длительность задержек изменяется во времени. Изменение в задержке пакетов называют "статистической дисперсией" или, менее формально, "дрожанием". Чем больше дрожание в сети, тем сложнее поддерживать постоянную скорость доставки пакета, которая, в свою очередь, делает более сложной точное восстановление аудиосигнала, посланного по сети.
Практически дрожание может быть определено как максимальная задержка пакета минус минимальная задержка пакета на протяжении короткого периода времени, например, несколько миллисекунд. Абсолютное значение разности между максимальной задержкой пакета и минимальной задержкой пакета, то есть дрожание, не столь важно, как наличие буфера, достаточного большого для содержания некоторого количества пакетов, принятых в течение короткого периода времени, то есть краткосрочных. Измерение дрожания дает возможность способам адаптации аудиосигнала точно восстанавливать аудиовыход, который представляет сигнал. Предпочтительно адаптация сигнала предоставляется как долгосрочная, то есть изменения в задержке пакета за относительно длительный период времени, например, около секунды. Если долгосрочная задержка пакета увеличивается, аудиосигнал удлиняется. Если долгосрочная задержка пакета уменьшается, аудиосигнал укорачивается. Есть много способов удлинить и укоротить аудиосигналы. Например, чтобы укоротить аудиосигнал, малые сегменты сигнала, которые содержат немного или не содержат нужной информации, могут быть удалены; чтобы удлинить аудиосигнал, малые сегменты сигнала могут быть скопированы и продублированы.
Компенсация дрожания посредством укорачивания или удлинения сигнала должна быть сделана аккуратно и не в избытке. Если, например, аудиосигнал кодирует голос человека и аудиосигнал укорачивается слишком сильно, прослушиваемая речь может казаться быстрой. Если тот же самый аудиосигнал удлиняется слишком сильно, слышимая воспроизведенная речь может казаться медленной. Таким образом, регулирования, сделанные для компенсации дрожания, должны делаться достаточно медленно и достаточно аккуратно для того, чтобы первоначальная речь воспроизводилась соответственно.
Традиционные способы для определения, когда применить способы компенсации дрожания, такие как укорачивание или удлинение сигнала, часто требуют, чтобы причины дрожания были измерены, определены количественно и записаны как значения. Эти значения затем используются для определения, когда применить способы, которые компенсируют эффекты дрожания.
Сущность изобретения
Этот раздел обеспечивается для ввода выбора понятий в упрощенной форме, которая далее описывается ниже в подробном описании. Этот раздел не предназначается для идентификации ключевых признаков заявленного объекта изобретения и не предназначается для использования в качестве помощи в определении объема заявленного объекта изобретения.
Раскрывается способ компенсации дрожания в потоке пакетов. Способ содержит извлечение не декодированных кадров из пакетов в потоке пакетов и помещение не декодированных кадров в буфер дрожания, в то же время декодируя кадры из буфера дрожания и помещая декодированные кадры в буфер выборок. Не декодированные кадры помещаются в буфер дрожания, и декодированные кадры помещаются в буфер выборок со скоростью, определенной средней задержкой воспроизведения. Средняя задержка воспроизведения - есть средняя рабочая величина задержки воспроизведения, вычисленная для каждого пакета, когда каждый пакет становится доступным. Задержка воспроизведения каждого пакета есть сумма задержки буфера выборок и задержки буфера дрожания.
Когда каждый пакет принимается, средняя задержка воспроизведения адаптируется, чтобы наиболее близко соответствовать задержке воспроизведения, ассоциированной с принятым пакетом, то есть текущей задержкой воспроизведения. Более конкретно, текущая задержка воспроизведения - есть ожидаемая задержка воспроизведения для декодированного кадра или кадров, содержащихся в принятом пакете. Текущая задержка воспроизведения определяется, как только декодированный кадр помещается в буфер дрожания. К этому времени грубое вычисление может быть сделано о том, как долго закодированный кадр будет оставаться в буфере дрожания до того, как закодированный кадр будет декодирован и проигран, то есть воспроизведен.
Средняя задержка воспроизведения сравнивается с текущей задержкой воспроизведения. Если текущая задержка воспроизведения меньше, чем средняя задержка воспроизведения, значение средней задержки воспроизведения уменьшается. Если текущая задержка воспроизведения больше, чем средняя задержка воспроизведения, значение средней задержки воспроизведения увеличивается.
Описание чертежей
Предшествующие аспекты и многие из сопутствующих преимуществ настоящего изобретения без труда будут очевидны, они станут более понятными при ссылке на нижеследующее детальное описание при рассмотрении совместно с сопроводительными чертежами, на которых:
Фиг.1 - блок-схема примерного синхронного декодера данных;
Фиг.2 - блок-схема примерного асинхронного декодера данных;
Фиг.3 - упрощенная иллюстрация примерного буфера дрожания и ассоциированного примерного буфера выборок ниже буфера дрожания;
Фиг.4 - примерная диаграмма задержек пакетов, записанных в течение некоторого времени в буфер дрожания, повторно установленный в разные моменты времени;
Фиг.5A - примерная диаграмма подробного вида задержек пакетов, записанных в течение некоторого времени в буфер дрожания, повторно установленный в разные моменты времени;
Фиг.5B - примерная диаграмма подробного вида задержек воспроизведения, записанных в течение некоторого времени в буфер дрожания, повторно установленный в разные моменты времени;
Фиг.6 - схематическая иллюстрация соотношений между dj, задержкой воспроизведения, ассоциированной с пакетом, и Di, средней задержкой воспроизведения;
Фиг.7 - примерная диаграмма задержек воспроизведения, записанных в течение некоторого времени, и кривой, представляющей среднюю задержку воспроизведения, записанную в течение некоторого времени;
Фиг.8 - последовательность операций примерного способа для компенсации эффектов дрожания для сигналов, передающихся по сети;
Фиг.9 - последовательность операций примерного способа для регулирования средней задержки воспроизведения;
Фиг.10 - последовательность операций примерного способа для регулирования доставки кадров из буфера выборки.
Подробное описание
Пакеты, передающиеся по сети, такой как IP-сеть, которые содержат данные, такие как данные, описывающие аудиосигнал, часто декодируются посредством декодера данных, то есть декодера, когда каждый пакет принимается. Обычно декодирование пакетов приводит к расширению сжатых данных, содержащихся в пакетах. Фиг.1 - блок-схема, иллюстрирующая примерный декодер 100, принимающий пакет 102, декодирующий данные в пакете и выдающий декодированные данные в качестве кадров 104. Декодер 100, показанный на фиг.1, принимает пакет 102 и выдает кадр 104 синхронно. Обычно когда каждый пакет достигает декодера 100, данные в каждом пакете немедленно декодируются, и один или более кадров, содержащих декодированные данные, выдаются. Кадры выдаются с той же скоростью (частотой), с какой декодер 100 принимает и декодирует пакеты.
Пакеты, переданные по сети, часто подвержены влиянию дрожания, то есть изменениям в задержке доставки (выдачи) пакета. Способы препятствия эффектам дрожания на синхронных декодерах, таких как декодер 100, показанный на фиг.1, часто требуют, чтобы источники дрожания были измерены, даже если источники дрожания находятся на удаленных устройствах. Например, задержка передачи, вызванная расстоянием, пройденным пакетом между локальным устройством и удаленным устройством, возможно должна быть измерена, определена количественно и записана. Точно так же изменение производительности маршрутизаторов и коммутаторов сети, через которые проходит пакет, и дрейф синхросигналов удаленных и локальных устройств может также нуждаться в измерении, количественном определении и записи для применения компенсации дрожания к синхронным декодерам.
Асинхронные декодеры, такие как декодер 200, работающий на модели извлечения, показанный на фиг.2, является альтернативой синхронным декодерам, таким как синхронный декодер 100, показанный на фиг.1. Декодер 200, работающий на модели извлечения, является асинхронным декодером, который специально запрашивает данные из конкретного источника. Декодер 200, работающий на модели извлечения, принимает пакет 202, декодирует данные в пакете 202 и выдает кадр 204, содержащий декодированные данные. В отличие от синхронного декодера асинхронный декодер, такой как декодер 200, работающий на модели извлечения, принимает пакет 202 и выдает кадр 204 асинхронно. В то время как декодер 200, работающий на модели извлечения, способен как принимать пакеты, так и выдавать кадры одновременно, скорость, с которой пакеты прибывают, и скорость, с которой кадры выдаются, не должна быть одинаковой. Скорость, с которой пакеты прибывают на декодер 200, работающий на модели извлечения, может изменяться без немедленного изменения скорости, с которой кадры выдаются. Разделение скорости (частоты) ввода пакета и скорости (частоты) вывода кадров достигается посредством доставки кадров, когда кадры запрашиваются, например, аудиоприложением, требующим аудиокадры.
Декодер, работающий на модели извлечения, такой как декодер 200, работающий на модели извлечения, показанный на фиг.2, использует буфер дрожания и буфер выборок для доставки кадров по запросу. Фиг.3 иллюстрирует примерный буфер 300 дрожания и ассоциированный примерный буфер 312 выборок. Буфер дрожания, такой как примерный буфер 300 дрожания, является буфером данных, содержащим множество ячеек хранения. Каждая ячейка во множестве ячеек способна содержать один не декодированный кадр. Обычно в любой заданный момент времени не все ячейки содержат кадры. Например, ячейка 0 304, ячейка 1 306, ячейка 2 308 и ячейка 3 310 могут содержать кадр, и оставшиеся ячейки могут не содержать кадров. Не декодированные кадры в буфере дрожания упорядочиваются в порядке воспроизведения, то есть в порядке, в котором данные кадры должны быть воспроизведены. Таким образом, ячейка 0 304 воспроизводится перед ячейкой 1 306; ячейка 1 306 перед ячейкой 2 308; и ячейка 2 308 перед ячейкой 3 310. Буфер 300 дрожания включает в себя указатель 302, который указывает на ячейку, которая должна быть считана и удалена. Первая ячейка буфера дрожания, такая как ячейка 0 304 в буфере 300 дрожания, называется "заголовок дрожания". На фиг.3-7 заголовок дрожания буфера дрожания обозначается посредством штриховки. Примерный буфер 312 выборок, ассоциированный с буфером 300 дрожания, также иллюстрируется на фиг.3. Буфер 312 выборок содержит декодированные данные 314 кадров, которые сгенерированы посредством считывания, декодирования и удаления кадров из буфера 300 дрожания.
Декодер, работающий на модели извлечения, такой как примерный декодер 200, работающий на модели извлечения, показанный на фиг.2, доставляет кадры по запросу посредством извлечения не декодированных кадров из пакета 202, когда пакет 202 принимается; загружает не декодированные кадры в буфер 300 дрожания в порядке воспроизведения; и, когда один или более кадров запрашивается, выдает кадры 314 из буфера 312 выборки. Когда кадры 314 выдаются, кадры 314 удаляются из буфера 312 выборок. Если нет никаких кадров в буфере 312 выборок, декодер 200, работающий на модели извлечения, считывает и удаляет "следующий" не декодированный кадр из буфера 300 дрожания, декодирует кадр и загружает декодированный кадр в буфер 312 выборок. Указатель 302, таким образом, перемещается к ячейке, которая должна быть считана следующей. Предпочтительно, указатель 302 сохраняется в пределах одной или двух ячеек заголовка 304 дрожания. Каждый входящий пакет помещается в ячейку буфера дрожания в соответствии с порядковым номером пакета. Если имеет место большая степень дрожания, указатель, по которому вставляют пакет, перемещается вперед и назад между первой и второй ячейками. Следовательно, минимальное помещение ячейки в течение короткого периода времени должно редко подходить ближе, чем на одну ячейку от заголовка буфера дрожания. Если есть небольшое дрожание или его нет и пакеты прибывают в порядке порядковых номеров пакетов, последующие пакеты помещаются и используются из начала буфера дрожания, например, в пределах одного кадра заголовка дрожания. Например, типичный буфер дрожания содержит приблизительно одну - пять секунд кадров данных, и типичный кадр содержит приблизительно 20 миллисекунд данных. Когда не декодированные кадры в буфере 300 дрожания удаляются, оставшиеся не декодированные кадры перемещаются к заголовку 304 дрожания посредством перемещения в следующую доступную ячейку.
Множество декодированных кадров в буфере 312 выборок формирует непрерывную выборку воспроизводимых кадров 314. Когда воспроизводимые выборки 314 извлекаются и воспроизводятся из буфера 314 кадров, требуется больше воспроизводимых выборок, которые должны быть вставлены в буфер 312 выборок. Когда новые выборки требуются для буфера 312 выборок, не декодированные кадры извлекаются из заголовка буфера 300 дрожания и кадры декодируются в выборки и вставляются в буфер 312 выборок.
Так как задержка прихода пакетов может изменяться из-за дрожания, скорость, с которой кадры вставляются в буфер дрожания, изменяется по сравнению со скоростью, с которой кадры запрашиваются из буфера 312 выборок. Способ, описанный здесь, компенсирует это несоответствие посредством использования буфера 300 дрожания как окна хронологии. Если, например, буфер 300 дрожания способен хранить достаточно не декодированных кадров для обеспечения одной секунды аудиоданных в буфере выборок, односекундный буфер дрожания может быть рассмотрен как односекундное окно хронологии. Как станет более понятно из следующего описания, способ компенсирует изменение между задержкой пакета и скоростью запросов выборок посредством выравнивания в этом примере односекундного буфера дрожания, чтобы гарантировать, что буфер дрожания "охватывает" одну секунду хронологии, в течение которой доставляются (выдаются) пакеты. Например, односекундное окно хронологии может содержать 50 ячеек, а каждая ячейка способна содержать 20 миллисекунд не декодированных данных кадра. Предпочтительно односекундный буфер дрожания выравнивается во временном измерении так, что точки во времени, в которых данные в не декодированных кадрах должны быть воспроизведены, попадают в пределы временного отрезка, охватываемого посредством буфера дрожания.
Процесс выравнивания буфера дрожания для охвата временного отрезка, в течение которого доставляются пакеты, иллюстрируется в соответствии с примерной схемой задержек пакета, записанных в течение некоторого времени, как показано на фиг.4. Более конкретно, фиг.4 включает в себя кривую 400 задержки пакетов, показывающую задержки пакета, записанные в течение некоторого времени. Буфер дрожания показан в примерных четырех позициях 402a, 402b, 402c и 402d. Буфер дрожания согласуется с кривой задержки пакетов таким образом, что местоположение (позиция) заголовка дрожания буфера дрожания в примерных четырех позициях 402a, 402b, 402c и 402d находится в пределах четырех ячеек кривой 400 задержки пакетов. Например, буфер дрожания в позиции 402b ниже буфера дрожания в позиции 402a, так как кривая 400 задержки пакетов понизилась. Буфер дрожания в позиции 402c выше буфера дрожания в позиции 402b, так как кривая 400 задержки пакетов повысилась. Буфер дрожания в позиции 402d ниже буфера дрожания в позиции 402c, так как кривая задержки пакетов снова понизилась. Фактические задержки пакетов могут изменяться больше или меньше, чем показывает иллюстрированная кривая 400 задержки пакетов. Следовательно, кривая 400 задержки пакетов должна рассматриваться как примерная и не ограничивающая.
Чтобы определить, как настроить буфер дрожания для согласования буфера дрожания с кривой задержки пакетов, вычисляется задержка воспроизведения. В то время как задержка пакета измеряет задержку пакета, приходящего в декодер, задержка воспроизведения оценивает время, которое потребуется для воспроизведения декодированных кадров. Практически значение задержки воспроизведения может быть почти обратным значению ассоциированной задержки пакетов. Почти обратные отношения между задержкой пакетов и задержкой воспроизведения могут быть видны из сравнения фиг.5A и 5B. Фиг.5A - более подробный вид типичной секции кривой задержки пакетов, аналогичной кривой 400 задержки пакетов, показанной на фиг.4. Фиг.5B - подробный вид кривой задержки воспроизведения, ассоциированной с кривой задержки пакетов, показанной на фиг.5A.
На фиг.5А кривая 500 задержки пакетов изображает задержки пакетов в течение короткого окна хронологии. Иллюстрированная кривая 500 задержки пакетов определяет локальные максимумы 504, 508 и локальные минимумы 502, 506 и 510. Локальный максимум 504 лежит между локальными минимумами 502 и 506; и локальный максимум 508 лежит между локальными минимумами 506 и 510. Буфер дрожания показан в трех позициях 520a, 520b и 520c. Позиция 520a находится между локальным минимумом 502 и локальным максимумом 504; позиция 520b находится между локальным максимумом 504 и локальным минимумом 506; и позиция 520c находится между локальным минимумом 506 и локальным максимумом 508. Буфер дрожания расположен таким образом, что заголовок буфера дрожания находится в пределах одной ячейки кривой 500 задержки воспроизведения.
Так как задержка воспроизведения является почти инверсией задержки пакетов, кривая, представляющая задержку воспроизведения, является почти инверсией кривой, представляющей задержку пакетов. Таким образом, примерная кривая 550 задержки воспроизведения, показанная на фиг.5B, является почти инверсией (обратной) кривой 500 задержки пакетов, показанной на фиг.5A. Так как задержка воспроизведения является почти инверсией задержки пакетов, максимумы в кривой задержки пакетов становятся минимумами в ассоциированной кривой задержки воспроизведения, и минимумы в кривой задержки пакетов становятся максимумами в ассоциированной кривой задержки воспроизведения. Например, локальный минимум 502, показанный на фиг.5A, становится локальным максимумом 552, показанным в задержке воспроизведения на фиг.5B. Точно так же локальный максимум 504 становится локальным минимумом 554; локальный минимум 506 становится локальным максимумом 556; локальный максимум 508 становится локальным минимумом 558; и локальный минимум 510 становится локальным максимумом 560.
Так как кривая задержки воспроизведения является почти инверсией кривой задержки пакетов, буфер дрожания также инвертируется таким образом, что заголовок дрожания находится внизу буфера дрожания. Например, на фиг.5A заголовок дрожания находится наверху буфера дрожания, тогда как на фиг.5B заголовок дрожания находится внизу буфера дрожания. Буфер дрожания показан в позициях 570a, 570b и 570c. Аналогично буферу дрожания, согласованному по кривой 500 задержки пакетов, показанной на фиг.5A, буфер дрожания, согласованный по кривой 550 задержки воспроизведения, показан на фиг.5B.
Как отмечено выше, буфер дрожания показан в трех позициях 570a, 570b и 570c. Эти позиции согласуются с позициями 520a, 520b и 520c, соответственно, на фиг.5A. В позиции 570a буфер дрожания перекрывает секцию кривой 550 задержки воспроизведения между локальным максимумом 552 и локальным минимумом 554 в пределах одной ячейки заголовка буфера дрожания. В позиции 570b буфер дрожания перекрывает секцию кривой 550 задержки воспроизведения между локальным минимумом 554 и локальным максимумом 556 в пределах одной ячейки заголовка буфера дрожания. В позиции 570c буфер дрожания перекрывает секцию кривой 550 задержки воспроизведения между локальным максимумом 556 и локальным минимумом 558 в пределах одной ячейки заголовка буфера дрожания.
Регулирование позиции буфера дрожания, так что заголовок дрожания перекрывает, или близок к перекрытию, кривую задержки воспроизведения в пределах одной ячейки заголовка буфера дрожания, приводит к выравниванию средней задержки воспроизведения. Фиг.6 - наглядная иллюстрация отношений между di, задержкой воспроизведения, ассоциированной с пакетом; Di, средней задержкой воспроизведения; буфером 600 дрожания; заголовком буфера 602 дрожания. Предпочтительно заголовок 602 буфера 600 дрожания перекрывает как кривую 610 средней задержки воспроизведения, так и кривую 620 задержки воспроизведения. Расстояние между заголовком 602 дрожания и кривой 610 средней задержки воспроизведения задается расстоянием, представленным посредством Di. Расстояние между заголовком 602 дрожания и кривой 620 задержки воспроизведения, которые включают в себя задержку выборки, задается расстоянием, представленным посредством di.
Способ регулирования позиции буфера 600 дрожания, так что заголовок 602 дрожания перекрывает, или близок к перекрытию, кривую 620 задержки воспроизведения, начинается посредством установки значения минимальной задержки для управления дрожанием, Dmin, которое обычно является нулем, и установки значения максимальной задержки дрожания, Dmax, которое обычно является нулем. Если пакет доступен в буфере 600 дрожания, пакет декодируется и буфер 600 дрожания смещается, чтобы переместить следующий пакет в заголовок дрожания. Декодированный пакет дает новые выборки, которые присоединяются к последней выборке в буфере выборок, например буфер 312 выборок. Если пакет не доступен в буфере 600 дрожания, пропущенный пакет скрывается посредством сокращения и удлинения сигнала, используя синтезированные выборки, и эти синтезированные выборки, используемые для сокращения или удлинения сигнала, присоединяются к последней выборке в буфере 312 выборок.
Значения Dmax и Dmin, установленные в начале способа, используются для определения, сокращать или удлинять сигнал. Если Di больше, чем Dmax, сигнал укорачивают и Di уменьшается на то же самое соответствующее время. Если Di меньше, чем Dmin, сигнал удлиняется, и Di увеличивается на то же самое соответствующее время. Если Di не больше, чем Dmax и Di не меньше, чем Dmin, сигнал не изменяется, и значение Di изменяется. В этот момент возвращается запрошенное число выборок из буфера 312 выборок.
Специалист в данной области техники оценит, что от того, как сигнал укорачивается или удлиняется, зависит, сигнал «голосовой» или «не голосовой». Голосовой сигнал содержит полезную информацию, тогда как не голосовой сигнал содержит тишину, фоновый шум или звуки, такие как "sh" или "ss". Если сигнал не голосовой, сигнал может быть удлинен посредством использования основанных на шуме способов. В таких способах удлинения выборка может быть расширена вплоть до полторы длины кадра. Также возможно удлинить выборку более или менее чем на полторы длины кадра. Следовательно, удлинение выборки на полторы длины кадра должно рассматриваться как примерное и не ограниченное. Например, если длина кадра составляет 20 миллисекунд, кадр может быть удлинен посредством вставки шумовых выборок, пока длина кадра не станет 30 миллисекунд. Если сигнал голосовой, этот сигнал может быть удлинен посредством повторения циклов основного тона или посредством формирования циклов нового основного тона из циклов старого основного тона. Для голосового сигнала увеличенная длина кадра зависит от размера циклов основного тона. Например, если цикл основного тона охватывает пять миллисекунд, длина кадра может быть увеличена с пятимиллисекундным приращением. Таким образом, способы удлинения голосовых сигналов являются сигналозависимыми. Специалист в данной области техники оценит, что для укорочения не голосового сигнала выборки вырезаются и объединяются, используя вырезание окном или удаление выборок. Обычно это возможно для укорочения кадра сигнала до требуемой длины, например половины длины кадра. Для укорочения голосового сигнала циклы основного тона удаляются или объединяются. Таким образом, укороченная длина кадра зависит от того, насколько размер циклов основного тона и способы удлинения голосовых сигналов являются сигналозависимыми.
Как указано выше, если сигнал сокращается, значение Di уменьшается на то же самое соответствующее время; если сигнал удлиняется, значение Di увеличивается на то же самое соответствующее время. Значение Di может быть отрегулировано согласно укорочению и удлинению сигнала, используя длину сигнала. Если сигнал имеет длину Norig, и длина сигнала становится равной Nnew, Di модифицируется следующим образом: Di(new) = Di(old) + (Nnew - Norg)/S, где S - частота выборок (скажем, 16000 выборок в секунду), и результат представляется в секундах. Специалист в данной области техники часто называет кривую средней задержки воспроизведения, такую как кривая 610 средней задержки воспроизведения, как "огибающая". В следующий момент пакет принимается, огибающая обновляется на основании Di(new), а не на Di(old). Другими словами, Di(new) может быть немедленно использовано для перезаписи Di(old).
Предпочтительно величина, на которую средняя задержка воспроизведения Di уменьшается или увеличивается, определяется согласно типу используемого транспортного протокола. Например, протокол управления передачей (TCP) требует более быстрой адаптации и, следовательно, большего количества настроек, чем пользовательский протокол данных (UDP). Для UDP, если di меньше чем Di, Di(new) = 0,998 × Di(old) + 0,002 × di; иначе Di(new) = di. Для TCP, если di меньше чем Di, Di(new)= 0,950 × Di(old) + 0,050 × di, иначе Di(new) = 0,9 × Di(old) + 0,1 × di.
Примерная диаграмма, иллюстрирующая настройку позиции буфера дрожания, таким образом, что заголовок дрожания перекрывает кривую задержки воспроизведения, используя способы, описанные выше, показана на фиг.7. Диаграмма на фиг.7 включает в себя примерную кривую 700 задержки воспроизведения, примерную кривую 710 средней задержки воспроизведения, то есть огибающую 710, и буфер 720 дрожания, показанный на пяти позициях. Кривая 700 задержки воспроизведения - сплошная линия. Огибающая 710 - пунктирная линия. Следует заметить, что огибающая 710 изменяется более медленно в течение некоторого времени, чем кривая 700 задержки воспроизведения. Предпочтительно, в максимально возможной степени заголовок дрожания регулируется таким образом, что заголовок дрожания близок к огибающей 710. Например, буфер 720 дрожания показан в позициях 720A, 720B, 720C, 720D и 720E. В позициях 720A, 720C, 720D и 720E буфер дрожания настраивается таким образом, что заголовок дрожания очень близок к огибающей 710, и вторая ячейка буфера дрожания перекрывает огибающую 710. В позиции 720B буфер дрожания выше огибающей 710, и заголовок дрожания выше огибающей 710. В течение некоторого времени буфер дрожания и заголовок дрожания снижаются и выравниваются с огибающей линией 710.
Примерный способ настройки заголовка дрожания и буфера дрожания для согласования заголовка дрожания с огибающей для компенсации эффектов дрожания в сигналах, переданных по сети, иллюстрируется посредством блок-схемы на фиг.8. Следует заметить, что для большинства устройств при применении примерного способа предпочтительно, чтобы выборки выдавались с постоянной скоростью. Следовательно, предпочтительно, чтобы выборки извлекались из буфера выборки с постоянной скоростью. Чтобы адаптировать изменения в величине задержки пакета и все еще поддерживать выдачу выборок с постоянной скоростью (частотой), выборки в буфере выборок сокращаются, то есть сжимаются, для обеспечения гарантии, что имеется меньше выборок в буфере выборок; или удлиняются для обеспечения гарантии, что имеется больше выборок в буфере выборок. Изменение числа выборок в буфере выборок косвенно управляет тем, насколько быстро буфер дрожания сдвигается. Если имеется больше выборок в буфере выборок, то возникает меньше потребности в сдвиге буфера дрожания, что обеспечивает более длинные задержки пакетов. Если имеется меньше выборок в буфере выборок, то возникает больше потребности в сдвиге буфера дрожания, что обеспечивает более короткие задержки пакетов.
Примерный способ, показанный на фиг.8, начинается на этапе 800. На этапе 800, где пакет принимается, средняя задержка воспроизведения регулируется, используя задержку воспроизведения принятого пакета, как показано на фиг.9. На этапе 802 выборки извлекаются из буфера выборок, и выдача выборки регулируется, используя среднюю задержку воспроизведения, как показано на фиг.10. Следует отметить, что действие на этапе 800 имеет место асинхронно с действием на этапе 802. Следовательно, действия на этапах 800 и 802 могут быть выполнены почти одновременно.
Фиг.9 показывает схему последовательности операций примерного способа для регулирования средней задержки воспроизведения, то есть действия на этапе 800 на фиг.8. Способ начинается на этапе 900 на фиг.9, на котором принимается пакет. На этапе 902 временная отметка и/или порядковый номер принятого пакета сравнивается с пакетом в заголовке дрожания. Временная отметка и/или порядковый номер используются для определения того, где разместить пакет в буфере дрожания. Если временная отметка или порядковый номер указывают на то, что кадр или кадры в пакете должны быть помещены перед кадрами в пакете заголовка дрожания, этот кадр заголовка дрожания перемещается назад, чтобы позволить вставить кадры пакета в заголовок дрожания. Альтернативно временная отметка или порядковый номер могут вместо этого указать на то, что кадр или кадры в пакете должны быть размещены сразу после последней занятой ячейки в буфере дрожания или в других ячейках. Возможно, что есть временные "дыры" в буфере дрожания, то есть некоторые ячейки буфера дрожания заняты, в то время как другие остаются временно незанятыми.
Практически, потребность в перемещении назад кадра заголовка дрожания для обеспечения вставки кадров в пакете в заголовок дрожания обычно происходит, когда используется транспортный протокол TCP, и пакеты задерживаются на больших интервалах. Для других транспортных протоколов, например UDP, такие поздние пакеты могут вместо этого быть отброшены, позволяя кадру заголовка дрожания быть сдвинутым на одну ячейку назад или не сдвинутым вообще.
Продолжая со ссылками на этап 904 на фиг.9, кадры, то есть не декодированные кадры, помещаются в буфер дрожания. На этапе 906 вычисляется di задержки воспроизведения. На этапе 908 сравнение делается между di задержки воспроизведения и Di, средней задержкой воспроизведения. Если di меньше, чем Di, то есть задержка воспроизведения меньше, чем средняя задержка воспроизведения, управление передается на этап 910. Иначе управление передается на этап 912. На этапе 910 Di адаптируется к di медленно, используя способы, описанные выше. На этапе 912 Di адаптируется к di быстро, используя способы, описанные выше. После этапов 910 и 912 способ завершается.
Фиг.10 - схема последовательности операций примерного способа для извлечения выборок и регулирования скорости доставки (выдачи) выборок, используя подсчитанную среднюю задержку воспроизведения, то есть действие, показанное на этапе 802 на фиг.8. Способ начинается на этапе 1000 на фиг.10, на котором запрашивается извлечение выборки, то есть запрашиваются выборки из буфера выборок, такого как буфер 312 выборок. На этапе 1002 проводится проверка, чтобы определить, достаточно ли выборок в буфере выборок. Если есть достаточно выборок в буфере выборок, управление передается на этап 1018, на котором выборки доставляются. Если выборок не достаточно в буфере выборок, управление передается на этап 1004 принятия решений. На этапе 1004 принятия решений проводится проверка для определения первого пакета в буфере дрожания, то есть пакета в заголовке дрожания, который был принят. Если первый пакет в буфере дрожания принимается, управление передается на этап 1006, на котором пакет декодируется, и кадры декодированного пакета помещаются в буфер выборок. Если первый пакет не был принят, управление передается на этап 1008. На этапе 1008 кадры, которые пропущены, так как первый пакет не доступен, скрываются посредством использования синтезированных выборок. Способ продолжается на этапе 1010, на котором выборки, как декодированные так и синтезированные, помещаются в буфер выборок. На этапе 1012 принятия решений Di сравнивается с требуемым диапазоном для средней задержки воспроизведения. Если Di находится в пределах требуемого диапазона, управление передают на этап 1018, на котором выборки выдают (доставляют). Если Di является низким, т.е. ниже минимума требуемого диапазона, управление передают на этап 1014. Если Di является высоким, т.е. выше максимума требуемого диапазона, управление передают на этап 1016. На этапе 1014 сигнал удлиняют, используя способы, описанные выше. На этапе 1016 сигнал укорачивают, используя способы, описанные выше. На этапе 1018 выборки выдаются, и способ завершается.
В то время как примерные варианты осуществления были иллюстрированы и описаны, очевидно, что различные изменения могут быть сделаны в этом отношении без отступления от формы и объема изобретения.
1. Способ компенсации дрожания в потоке пакетов, содержащий этапы:в ответ на прием каждого пакета в потоке пакетов:принимают заданн