Компресія мовлення людини

До цих пір ми говорили про підходи, розроблених для обробки звуків всіх типів, як музики, так і мови Якщо вам необхідно обробити тільки мова, то ви можете скористатися методами, розробленими спеціально для цього

Найпростіший метод кодування мови називаєтьсякодуванням пауз Справа в тому, що в розмові людини присутній багато пауз Частина їх короткі паузи між словами і фразами, інше більш довгі паузи між пропозиціями чи репліками різних людей Часто, виділяючи ці паузи і замінюючи їх компактними кодами, в яких вказується тривалість паузи, за рахунок стиснення вдається заощадити до 50% початкового обєму мовної інформації

Більш витончені алгоритми, призначені для стиснення мовної інформації, складаються з двох частин Перша це математична модель голосового тракту людини Вона являє собою послідовність рівнянь, в яких використовується інформація про гортані, горлі, мовою і губах людини для отримання звуків, подібних тим, що видає людина Друга частина аналізує механізм, на підставі ліченого звуку подготавливающий параметри для цієї моделі При компресії розмови використовується анализирующее пристрій, що формує послідовність параметрів При декомпресії записані параметри передаються в модель голосового тракту і виходять звуки C допомогою подібної технології іноді вдається стиснути мова людини в 100 разів і більше, зберігши при цьому хорошу якість звучання

Є один цікавий аспект даного методу Він полягає в тому, що при незначній модифікації відтворюючої звуки моделі можна значно змінити ряд характеристик голосу Внаслідок цього методи компресії голосової інформації часто служать основою для алгоритмів модифікації голосу

Використання опорних точок

B складних алгоритмах компресії по мірі обробки звуку проводиться накопичення інформації про нього Вона використовується для підстроювання параметрів блоків компресії з метою більш якісної обробки кожного наступного відліку B ході декомпресії накопичені дані відстежується блоком декомпресії Часто оновлення внутрішньої інформації проводиться модулем компресії після обробки кожного відліку До тих пір поки модуль декомпресії вироблятиме ідентичне оновлення після обробки кожного відліку, статистика в цих двох модулях буде однакова

Ця внутрісистемна інформація іноді може підкорятися складним законам і створювати тим самим певну проблему По ряду причин часто буває необхідно почати процес декодування звуку з деякою проміжної точки Наприклад, при отриманні потокового аудіо по мережі або по широковещательному радіо у вас може не виявитися раніше переданих даних Або ж відбудеться втрата блоку даних, що змусить вас перезапустити модуль декомпресії, подавши йому на вхід наступну порцію коректних даних

Оскільки в блоці декомпресії не опиниться даних, які повинні були акумулюватися в ході обробки попередньої інформації, перезапуск цього модуля може виявитися неможливим Якщо починати декомпресію з початку блоку, то ніяких проблем не виникне необхідно тільки узгодити стартові допущення блоків компресії і декомпресії Однак якщо

почати декомпресію з проміжною точки, нам доведеться працювати з даними,

при компресії яких повною мірою була врахована вся передісторія

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

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

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*