Принцип сжатия G711
Алгоритм кодирования G.711 представляет собой процесс преобразования аналогового аудиосигнала в цифровую форму с использованием методов компандирования (логарифмической компрессии амплитуды сигнала). Давайте рассмотрим этот процесс шаг за шагом.
Шаг 1: Дискретизация
Сначала аналоговый аудиосигнал подвергается процессу дискретизации с частотой 8000 Гц (то есть каждые 125 мкс). Это означает, что сигнал будет представлен последовательностью отсчетов, взятых через равные промежутки времени.
Шаг 2: Квантование
Каждый отсчет сигнала затем квантуется, то есть преобразуется в целое число, соответствующее уровню сигнала. В случае G.711 используются 256 уровней (8 бит), что соответствует диапазону значений от -127 до +128.
Шаг 3: Компандирование
На этом этапе применяется логарифмическая компрессия амплитуды сигнала. Существует две версии компандирования: A-law и μ-law.
A-law (Европейская версия)
Формула для A-law компандирования выглядит следующим образом:

где x — нормализованный уровень сигнала, y — сжатый уровень сигнала, A — коэффициент компрессии (обычно равен 87,6).
μ-law (Американская версия)
Формула для μ-law компандирования имеет вид:

где x — нормализованный уровень сигнала, y — сжатый уровень сигнала.
Шаг 4: Кодирование
После компандирования полученные значения квантуются и кодируются в двоичный формат. Для этого используется 8-битное представление, где старший бит является знаком числа, а остальные биты — абсолютной величиной.
Пример кодирования
Рассмотрим пример кодирования одного отсчета сигнала с помощью μ-law:
Пусть у нас есть отсчет x = 0,75 Тогда:

Теперь нужно перевести значение y обратно в 8-битное представление. Предположим, что мы используем линейное квантование:

Таким образом, отсчет x = 0,75 будет закодирован как 8-битное число 119.
Заключение
Кодек G.711 является простым и эффективным способом кодирования голосовых сигналов благодаря использованию логарифмической компрессии. Его низкая сложность и минимальные требования к вычислительным ресурсам делают его идеальным выбором для приложений реального времени, таких как телефония и VoIP.