RealTime в Asterisk: архитектура и конфигурация

RealTime в Asterisk: архитектура и конфигурация с 5 октября по 9 октября

Количество
свободных мест

8 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 6 апреля по 10 апреля

Количество
свободных мест

7 Записаться

Курс по Zabbix

Zabbix: мониторинг Asterisk и VoIP с 7 сентября по 11 сентября

Количество
свободных мест

8 Записаться
Asterisk: анатомия звука
20
Доклад
Олег Штейнлихт
Asterisk: анатомия звука

Понимание того, как работает звук «под капотом» — это база для любого, кто занимается телефонией. Мы каждый день используем Asterisk, настраиваем транки и записываем разговоры, но редко задумываемся, какой путь проходит голос от микрофона до жесткого диска. Эта цепочка превращений полна нюансов, и если в одном звене что-то идет не так, мы получаем «робота», задержки или эхо.

От вибрации воздуха к электричеству

Все начинается с физики. Звук — это обычные колебания молекул воздуха. Они соударяются, передают энергию и создают волну. Чтобы эта волна попала в нашу систему, нужно устройство, которое её поймает — микрофон. Внутри микрофона есть мембрана. Когда звуковая волна давит на неё, мембрана колеблется, и эта механическая энергия превращается в электрический аналоговый сигнал.

На этом этапе мы получаем непрерывную волну напряжения. Если представить это на графике, это будет плавная линия, которая в точности повторяет человеческий голос. Наши деды работали именно с таким сигналом в старых аналоговых АТС. Но для современной IP-телефонии этот сигнал нужно оцифровать, превратить в набор нулей и единиц, чтобы его можно было передать по сети. И тут начинаются интересные вещи.

Цифровая решетка: Дискретизация и квантование

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

Первый этап — это дискретизация. Мы берем значения амплитуды сигнала через равные промежутки времени. Тут вступает в дело теорема Котельникова. Она говорит: чтобы звук потом можно было восстановить без искажений, мы должны брать отсчеты в два раза чаще, чем максимальная частота звука.

  • В обычной телефонии голос ограничен полосой 300–3400 Гц.
  • Поэтому стандартом стала частота 8000 Гц (8 кГц).
  • Если мы хотим HD-качество, берем 16 кГц или даже 48 кГц, тогда звук становится чище и естественнее.

Второй этап — квантование. Каждому полученному отсчету нужно присвоить числовое значение. Это как сетка на графике: чем мельче ячейка, тем точнее мы опишем волну.

  1. Если мы используем 8 бит, у нас всего 256 уровней громкости. Этого мало, и на тихих звуках будет слышно шипение — шум квантования.
  2. Если взять 16 бит, уровней становится уже 65 536. Это дает огромную точность.

Внутри Asterisk почти всегда используется 16-битный формат со знаком (Signed Linear). Это позволяет системе спокойно складывать звуки (например, в конференциях) и обрабатывать их без потери качества. Если же на этом этапе возникают проблемы со слышимостью, часто требуется профессиональный аудит IP-ATC, чтобы понять, где именно теряются данные.

Кодеки: Баланс между качеством и ресурсами

Когда звук оцифрован, его нужно передать. Передавать «сырые» 16-битные данные — это слишком жирно для сети, канал быстро забьется. Поэтому мы используем кодеки.

Кодек G.711 (знакомые всем alaw и ulaw) — это самый простой вариант. Он просто берет 16-битное значение и по хитрой логарифмической кривой сжимает его до 8 бит. Процессору почти не нужно думать, всё происходит мгновенно. Но он «съедает» 64 кбит/с полосы.

Современные кодеки вроде Opus или Speex работают иначе. Они не просто режут звук, а строят математическую модель человеческого голоса. Они «знают», как мы говорим, и передают только важные параметры. Это позволяет сжать поток в разы при сохранении отличного качества. Но за это мы платим нагрузкой на процессор сервера. Когда у вас сотни одновременных звонков в тяжелых кодеках, установка Asterisk должна выполняться на мощном железе, иначе система просто «ляжет» под нагрузкой.

Как звук летит по сети: Протокол RTP

Упакованный кодеком звук нарезается на порции, обычно по 20 миллисекунд. Это золотой стандарт: задержка еще не чувствуется, а служебная информация (заголовки пакетов) не занимает слишком много места. Эти кусочки вставляются в пакеты протокола RTP.

В каждом таком пакете есть три важные штуки:

  • Payload — сам «фарш» из звука.
  • Timestamp — временная метка. Она говорит принимающей стороне, в какой именно момент этот кусочек должен прозвучать.
  • Sequence Number — порядковый номер. Пакеты в интернете могут обгонять друг друга или вообще теряться. По номерам Asterisk понимает, как собрать их обратно в правильную очередь.
  • Если сеть работает плохо, пакеты приходят вразнобой. Для этого в Asterisk есть джиттер-буфер. Это такая «накопительная емкость», которая придерживает первые пакеты, чтобы выдать их в плеер ровно и плавно, даже если сеть «лагает». Но буфер добавляет задержку. Чтобы минимизировать эти проблемы, критически важна правильные проектирование и настройка сети на уровне маршрутизаторов.

Внутренняя кухня Asterisk

Что происходит, когда пакеты попали внутрь Asterisk? Он не просто перекидывает их с одного канала на другой. Если у абонентов разные кодеки (например, один на Opus, другой на G.711), включается транскодинг. Asterisk разжимает Opus до внутреннего формата Signed Linear, а потом сжимает его обратно в G.711.

Транскодинг — это всегда удар по ресурсам. Но есть и другой нюанс: любое преобразование теоретически портит сигнал. В случае с современными кодеками на слух это почти незаметно. Однако есть старая проблема: если перекодировать звук G.711 в G.711 много раз подряд (например, через сто транков), голос в итоге превратится в кашу и пропадет. В Asterisk для этого даже есть специальный «флаг» в настройках, использующий новый алгоритм кодирования, чтобы избежать такой деградации.

Для того чтобы всё это работало синхронно, Asterisk нужен таймер. В старых системах с этим были проблемы, но сейчас используется механизм timerfd от ядра Linux. Он дает очень высокую точность, позволяя системе четко «нарезать» кадры по 20 мс без перекосов.

Запись разговора и работа с IVR

Когда мы включаем запись, Asterisk фактически делает копию аудиопотока, который проходит через него.

  • Моно-запись просто смешивает голоса обоих абонентов. Это дешево по месту на диске, но для аналитики бесполезно.
  • Стерео-запись кладет каждого абонента в свой канал. Это стандарт для серьезных компаний, которым нужно понимать, кто именно кричал или перебивал.

Часто запись сохраняется в формате WAV. Это «сырой» формат, он не нагружает процессор при записи, но занимает много места. Конвертация в MP3 обычно происходит уже после завершения звонка, чтобы не нагружать сервер в процессе разговора. Кстати, если вам нужна качественная запись IVR для приветствия, лучше сразу готовить файлы в том формате, который использует ваша система (обычно это 8кГц, моно), чтобы избежать лишнего транскодинга при каждом проигрывании.

Борьба за качество: Задержки и эхо

Самый страшный враг телефонии — это задержка. Она складывается из кусков:

  1. Время на кодирование (20 мс).
  2. Время на прохождение через роутеры.
  3. Время на обработку в самом Asterisk.
  4. Время в джиттер-буфере.

Если общая задержка превышает 200 мс, люди начинают перебивать друг друга, возникает дискомфорт. Еще одна беда — эхо. Оно возникает, когда звук из динамика телефона собеседника попадает обратно в его микрофон. Вы слышите свой собственный голос с задержкой. Asterisk умеет бороться с этим с помощью модулей эхоподавления, которые буквально «вычитают» ваш голос из входящего потока. Чтобы эти механизмы работали идеально, на сетевом уровне должна быть настроена Приоритезация трафика QoS , иначе управляющие пакеты эхоподавителя могут приходить слишком поздно.

 

Заключение

Анатомия звука — это не только про физику волн, но и про правильную математику и системное администрирование. Понимая, как звук дробится на пакеты, как работают кодеки и почему возникает эхо, вы сможете построить связь, которая не будет раздражать пользователей. Весь путь — от мембраны микрофона до записи на диске — должен быть прозрачным и контролируемым.

Если вы хотите разобраться во всех этих «галках» и настройках транскодинга на практике, лучший вариант — пройти профильные курсы по Asterisk. Это даст понимание того, как управлять медиа-потоками на профессиональном уровне и решать проблемы со звуком еще до того, как на них пожалуется клиент.

Ежегодная конференция по Asterisk 2026!

Билеты уже в продаже!

Остались вопросы?

Я - Игорь Кондрашин, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все