Главная » Программирование звука » Компрессия речи человека

0

До сих пор мы говорили о подходах, разработанных для обработки звуков всех типов,  как музыки,  так  и  речи.  Если  вам  необходимо  обработать  только  речь,  то вы можете воспользоваться методами, разработанными специально для этого.

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

Более  изощренные  алгоритмы,  предназначенные  для  сжатия  речевой  информации, состоят из двух частей. Первая это математическая модель голосового тракта  человека.  Она  представляет  собой  последовательность  уравнений,  в  которых используется информация о гортани, горле, языке и губах человека для получения звуков,  подобных  тем,  что  издает  человек.  Вторая  часть   анализирующий  механизм, на основании считанного звука подготавливающий параметры для этой модели. При компрессии разговора используется анализирующее устройство, формирующее последовательность параметров. При декомпрессии записанные параметры передаются в модель голосового тракта и получаются звуки. C помощью подобной технологии иногда удается сжать речь человека в 100 раз и более, сохранив при этом хорошее качество звучания.

Есть один интересный аспект данного метода. Он заключается в том, что при незначительной  модификации  воспроизводящей  звуки  модели  можно  значительно изменить ряд характеристик голоса. Вследствие этого методы компрессии голосовой информации часто служат основой для алгоритмов модификации голоса.

Использование опорных точек

B  сложных  алгоритмах  компрессии  по  мере  обработки  звука  производится накопление  информации  о  нем.  Она  используется  для  подстройки  параметров блоков  компрессии  с  целью  более  качественной  обработки  каждого  последующего  отсчета.  B  ходе  декомпрессии  накопленные  данные  отслеживается  блоком  декомпрессии.  Часто  обновление  внутренней  информации  производится  модулем компрессии после обработки каждого отсчета. До тех пор пока модуль декомпрессии будет производить идентичное обновление после обработки каждого  отсчета, статистика в этих двух модулях будет одинакова.

Эта  внутрисистемная  информация  иногда  может  подчиняться  сложным  законам и создавать тем самым определенную проблему. По ряду причин часто бывает необходимо  начать  процесс  декодирования   звука   с  некоторой  промежуточной точки. Например, при получении  потокового  аудио  по  сети  или по  широковещательному радио у вас может не оказаться ранее переданных данных. Или же произойдет  потеря блока  данных,  что  заставит  вас  перезапустить  модуль  декомпрессии, подав ему на вход следующую порцию корректных данных.

Поскольку   в   блоке   декомпрессии   не   окажется   данных,   которые   должны были  аккумулироваться  в  ходе  обработки  предыдущей  информации,  перезапуск этого   модуля   может   оказаться   невозможным.   Если   начинать   декомпрессию с  начала  блока,  то  никаких  проблем  не  возникнет;  необходимо  только  согласовать стартовые допущения блоков компрессии и декомпрессии. Однако если

начать  декомпрессию  с  промежуточной  точки,  нам  придется  работать  с  данными,

при компрессии которых в полной мере была учтена вся предыстория.

Один из способов, позволяющих обойти эту проблему, заключается в том, чтобы  время  от  времени  помещать  в  блоки  данных  дополнительные  опорные  точки с  информацией,  которая  могла  бы  использоваться  модулем  декомпрессии  для  начала  работы  с  этой  точки.  Иногда  для  этого  требуется  вставка  блока  несжатых данных.  B  кодах,  разработанных  фирмой  Apple  для  системы  Sound  Manager,  например,  в  качестве  опорных  точек  используются  блоки  несжатых  данных.  B  других  случаях  в  качестве  опорной  точки  используется  информация  о  состоянии  содержимого   памяти   модуля   компрессии.   Одной   из   сильных   сторон   модуля компрессии  IMA  ADPCM является  то, что для  записи  большей части  параметров, описывающих его состояния, требуется всего 16 бит.

B  качестве  еще  одного  способа  использования  опорных  точек  можно  предложить  сохранение  «независимых  пакетов»  звуковых  данных.  Обычно  в  такой  пакет  помещаются  параметры  инициализации  модуля  декомпрессии,  а  за  ними  следуют  звуковые  данные.  При  независимой  компрессии  блоков  звуковых  данных вы всегда сможете произвести декомпрессию блока даже в случае отсутствия предыдущего  блока.  Трудности  вызывает  подбор  оптимального  размера  блока.  Поскольку  в  каждом  блоке  содержится  служебная  информация,  выгоднее  использовать  пакеты  большего  объема.  Однако  при  потере  пакета  воспроизведение  звука будет прервано до тех пор, пока не поступит следующий пакет. Аналогично, если вам  необходимо  начать  воспроизведение  с  точки,  расположенной  непосредственно перед концом пакета, то прежде, чем начать воспроизведение звука, вам может понадобиться произвести декомпрессию всего пакета целиком.

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии