Основні алгоритми кодування мови, що використовуються в IP-телефонії
Технологія VoIP >> Розділ 3. Передача мови по IP-мережі
[ << 3.2.3. Процесори цифрової обробки сигналів для мовних кодеків ] [ 3.3. Кодеки, стандартизовані ITU-T >> ]
3.2.4 Основні алгоритми кодування мови, що використовуються в IP-телефонії
У першу чергу необхідно зрозуміти, якими критеріями потрібно керуватися при виборі «хорошого» кодекадля використання в IP-телефонії.
Використання смуги пропускання каналу
Швидкість передачі, яку передбачають наявні сьогодні вузькосмугові кодеки, лежить в межах 1.2 - 64 Кбіт / с. Природно, що від цього параметра прямо залежить якість відтворної мови. Існує безліч підходів до проблеми визначення якості. Найбільш широко використовуваний підхід оперує оцінкою MOS (Mean Opinion Score), яка визначається для конкретного кодека як середня оцінка якості великою групою слухачів за п'ятибальною шкалою. Для прослуховування експертам пред'являються різні звукові фрагменти - мова, музика, мова на тлі різного шуму і т.д. Оцінки інтерпретують наступним чином:
- 4-5 - висока якість; аналогічно якості передачі мови в ISDN, або ще вище;
- 3.5-4-якість ТфОП (toll quality); аналогічно якості мови, що передається з допомогою кодека АДІКМ при швидкості 32 Кбіт / с. Така якість зазвичай забезпечується в більшості телефонних розмов. Мобільні мережі забезпечують якість трохи нижче toll quality;
- 3-3.5-якість мови, як і раніше, задовільно, однак його погіршення явно помітно на слух;
- 2.5-3 - мова розбірлива, проте вимагає концентрації уваги для розуміння. Така якість зазвичай забезпечується в системах зв'язку спеціального застосування (наприклад, у збройних силах).
У рамках існуючих технологій якість ТфОП (toll quality) неможливо забезпечити при швидкостях менше 5 Кбіт / с.
Придушення періодів мовчання (VAD, CNG, DTX)
При діалозі один його учасник говорить, в середньому, лише 35 відсотків часу. Таким чином, якщо застосувати алгоритми, які дозволяють зменшити обсяг інформації, переданої в періоди мовчання, то можна значно звузити необхідну смугу пропускання. У двосторонньому розмові такі заходи дозволяють досягти скорочення обсягу переданої інформації до 50%, а в децентралізованих багатоадресних конференціях (за рахунок більшої кількості носіїв) - і більше. Немає ніякого сенсу організовувати багатоадресні конференції з числом учасників більше 5-6, не пригнічуючи періоди мовчання. Технологія придушення таких періодів має три важливі складові.
Потрібно відзначити, що визначення кордонів пауз в мові дуже істотно для ефективної синхронізації передавальної і приймальної сторін: приймач може, незначно змінюючи тривалості пауз, виробляти підстроювання швидкості відтворення для кожного окремого сеансу зв'язку, що виключає необхідність синхронізації тактових генераторів всіх елементів мережі, як це має місце в ТФОП.
Детектор мовної активності (Voice Activity Detector - VAD) необхідний для визначення періодів часу, коли користувач говорить. Детектор VAD повинен володіти малим часом реакції, щоб не допускати втрат початкових слів і не упускати даремні фрагменти мовчання в кінці речень; в той же час детектор VAD не повинен спрацьовувати від впливу фонового шуму.
Детектор VAD оцінює енергію вхідного сигналу і, якщо вона перевищує певний поріг, активізує передачу. Якби детектор відкидав всю інформацію до моменту, поки енергія сигналу не стала вище за поріг, то відбувалося б відрізання початкової частини періоду активності. Тому реалізації VAD вимагають збереження в пам'яті декількох мілісекунд інформації, щоб мати можливість запустити передачу до початку періоду активності. Це збільшує, в деякій мірі, затримку проходження сигналу, однак її можна мінімізувати або звести до нуля в кодерах, що працюють з блоками відліків.
Підтримка переривчастої передачі (Discontinuous Transmission-DTX) дозволяє кодеку припинити передачу пакетів в той момент, коли VAD виявив період мовчання. Деякі найбільш досконалі кодери не припиняють передачу повністю, а переходять в режим передачі набагато меншого обсягу інформації (інтенсивність, спектральні характеристики), потрібної для того, щоб декодер на віддаленому кінці міг відновити фоновий шум.
Генератор комфортного шуму (Comfort Noise Generator - CNG) служить для генерації фонового шуму. У момент, коли в мові активного учасника бесіди починається період мовчання, термінали слухають можуть просто відключити відтворення звуку. Однак це було б нерозумно. Якщо в трубці виникає «гробова тиша», тобто фоновий шум (шум вулиці і т.д.), який було чути під час розмови, раптово зникає, то хто слухає здається, що з'єднання з якихось причин порушилося, і він зазвичай починає запитувати, чи чує його співрозмовник.
Генератор CNG дозволяє уникнути таких неприємних ефектів. Найпростіші кодеки просто припиняють передачу в період мовчання, і декодер генерує жодного галасу з рівнем, рівним мінімальному рівню, зазначеному в період мовної активності. Більш досконалі кодеки (G.723.1 Annex A, G. 729 Annex В) мають можливість надавати віддаленого декодеру інформацію для відновлення шуму з параметрами, близькими до фактично спостерігався.
Розмір кадру
Більшість вузькосмугових кодеків обробляє мовну інформацію блоками, званими кадрами (frames), і їм необхідно здійснювати попередній аналіз відліків, що слідують безпосередньо за відліками в блоці, який вони в даний момент кодують.
Розмір кадру важливий, тому що мінімальна теоретично досяжна затримка передачі інформації (алгоритмічна затримка) визначається сумою цього параметра і довжини буфера попереднього аналізу. У дійсності процесори цифрової обробки сигналів, які виконують алгоритм кодування, мають кінцеву продуктивність, так що реальна затримка сигналу більше теоретичної.
Можна, здавалося б, укласти, що кодеки з меншим розміром кадру краще в сенсі такого важливого критерію як мінімізація затримки. Якщо, проте, врахувати, що відбувається при передачі інформації по мережі, то ми побачимо, що до кадру, сформованому кодеком, додається безліч додаткової інформації - заголовки IP (20 байтів), UDP (8 байтів), RTP (12 байтів). Для кодека з тривалістю кадру 30 мс посилка таких кадрів по мережі привела б до передачі надлишкової інформації зі швидкістю 10.6 кбіт / с, що перевищує швидкість передачі мовної інформації у більшості вузькосмугових кодеків.
Тому зазвичай використовується пересилання декількох кадрів в пакеті, при цьому їх кількість обмежена максимально допустимої затримкою. У більшості випадків в одному пакеті передається до 60 мс мовної інформації. Чим менша тривалість кадру, тим більше кадрів доводиться упаковувати в один пакет, тобто затримка визначається зовсім не довжиною кадру, а практично прийнятним обсягом корисного навантаження в пакеті.
Крім того, кодеки з більшою довжиною кадру більш ефективні, оскільки тут діє загальний принцип: чим довше спостерігається явище (мовний сигнал), тим краще воно може бути змодельоване.
Чутливість до втрат кадрів
Втрати пакетів є невід'ємним атрибутом IP-мереж. Так як пакети містять кадри, сформовані кодеком, то це викликає втрати кадрів. Але втрати пакетів і втрати кадрів не обов'язково безпосередньо пов'язані між собою, так як існують підходи (такі як застосування кодів з виправленням помилок-forward error correction), що дозволяють зменшити число втрачених кадрів при даному числі втрачених пакетів. Вимагається для цього додаткова службова інформація розподіляється між кількома пакетами, так що при втраті деякого числа пакетів кадри можуть бути відновлені.
Проте позитивний ефект від введення надмірності для боротьби з втратами пакетів не настільки легко можна досягти, оскільки втрати в IP-мережах відбуваються пачками, тобто значно більш імовірно те, що буде втрачено відразу декілька пакетів підряд, ніж те, що втрачені пакети розподіляться в послідовності переданих пакетів по одному. Так що якщо застосовувати прості схеми введення надмірності (наприклад, повторюючи кожен кадр у двох послідовно передаються пакетах), то в реальних умовах вони, хоча і збільшать обсяг надлишкової інформації, але, швидше за все, виявляться марними.
Крім того, введення надмірності негативно позначається на затримці відтворення сигналу. Наприклад, якщо ми повторюємо один і той же кадр в чотирьох пакетах поспіль, щоб забезпечити можливість відновлення інформації при втраті трьох поспіль переданих пакетів, то декодер змушений підтримувати буфер з чотирьох пакетів, що вносить значну додаткову затримку відтворення.
Вплив втрат кадрів на якість відтворної мовлення залежить від використовуваного кодека. Якщо втрачено кадр, що складається з N мовних відліків кодека G.711, то на приймальному кінці буде відзначений пропуск звукового фрагмента тривалістю М * 125 мкс. Якщо використовується більш досконалий вузькосмуговий кодек, то втрата одного кадру може позначитися на відтворенні кількох наступних, так як декодеру буде потрібно час для того, щоб досягти синхронізації з кодером - втрата кадру тривалістю 20 мс може призводити до чутному ефекту протягом 150 мс і більше.
Кодери типу G.723.1 розроблені так, що вони функціонують без істотного погіршення якості в умовах некорельованих втрат до 3% кадрів, однак при перевищенні цього порога якість погіршується катастрофічно.
[ << 3.2.3. Процесори цифрової обробки сигналів для мовних кодеків ] [ 3.3. Кодеки, стандартизовані ITU-T >> ]
--Козінцев Олексій 36 гр. 03:58, 20 листопада 2010 (EET)