Диагностика проблем со звуком на HD-кодеках: G.722, Opus, AMR-WB
- Искажения звука («эффект робота», ускоренный или замедленный темп речи, клиппинг).
- Высокая утилизация процессора на АТС при транскодировании (например, из Opus в G.711alaw).
- Вызовы сбрасываются с ошибкой
488 Not Acceptable Hereиз-за несогласованных параметров SDP (fmtp). - Потеря качества широкополосного звука (HD Voice) при выходе звонка в городские телефонные сети.
1. Анализ транскодирования и затрат CPU в реальном времени
Выполните команду в CLI Asterisk для просмотра матрицы транскодирования:
core show translationЕсли вы видите высокие значения задержек (более 5000–10000 микросекунд) между Opus/AMR и стандартными G.711, транскодирование перегружает процессор сервера.
2. Корректная настройка параметров кодека Opus (codecs.conf)
Создайте или отредактируйте файл /etc/asterisk/codecs.conf для оптимизации энкодера Opus:
[opus]
type=opus
# Максимальная полоса пропускания (wideband / fullband)
max_playback_rate=48000
# Ограничение битрейта для экономии канала (бит/сек)
max_average_bitrate=24000
# Включение переменного битрейта
variable_bitrate=yes
# Адаптация под потери пакетов (Forward Error Correction)
packet_loss_percentage=10
use_inband_fec=yes
use_dtx=no3. Устранение проблем с частотой дискретизации (Resampling)
Широкополосные кодеки используют разные базовые частоты: G.722 — 16 кГц, Opus — 48 кГц, стандартный G.711 — 8 кГц. Для исключения металлических щелчков настройте качественный ресемплер в /etc/asterisk/asterisk.conf:
[options]
internal_timing = yes
transcore_resample = yes
resample_quality = 4 ; (качество от 0 до 8, оптимум для production: 4)4. Согласование SDP параметров (fmtp) для исключения ошибки 488
Убедитесь, что софтфон и сервер используют совместимые payload numbers для динамических кодеков (Opus обычно payload 107 или payload 111):
# В pjsip.conf для эндпоинта:
[endpoint-user]
type=endpoint
disallow=all
allow=g722,opus,alaw,ulaw Частые вопросы (FAQ)
Почему при звонке с Opus на обычный городской номер звук становится тихим и глухим?
Операторы ТфОП (PSTN) поддерживают исключительно узкополосный кодек G.711 (8 kHz). АТС производит даунсэмплинг из 48 kHz в 8 kHz, обрезая верхние частоты выше 3.4 kHz, что субъективно воспринимается как глухой звук.
Что такое Inband FEC в кодеке Opus и как оно спасает от потерь пакетов?
Inband Forward Error Correction (FEC) встраивает сжатую копию предыдущего аудиофрейма в текущий пакет. Если предыдущий пакет потерялся в сети, декодер восстанавливает звук без слышимых артефактов при потерях до 15-20% пакетов.
Поддерживает ли кодек G.722 работу без лицензирования?
Да, кодек G.722 является открытым стандартом ITU-T со свободным использованием и не требует лицензионных отчислений, в отличие от проприетарного G.729 или AMR-WB.
Почему при включении DTX (Discontinuous Transmission) абоненты жалуются на обрывы фраз?
DTX отключает передачу пакетов во время пауз в речи для экономии полосы. Некоторые софтфоны и гарнитуры слишком медленно выходят из режима тишины (VAD threshold), «проглатывая» первые согласные звуки слов.