AMBE-вокодер на сервере: цифровой звук DMR без донгла
Когда говорят «в DMR голос цифровой», за этим стоит конкретный кодек — AMBE+2. Понимание, как он работает и почему его сложно «подружить» с телефоном, объясняет половину архитектурных решений в любой современной сети. Разберём без воды.
Что такое вокодер и почему AMBE+2
Вокодер — это кодек речи: он сжимает голос в очень узкий поток (у DMR это ~2,45 кбит/с полезных данных плюс защита от ошибок). DMR использует AMBE+2 от компании DVSI. Рация оцифровывает ваш голос в AMBE, гонит по эфиру всего несколько байт на кадр (20 мс), а на приёме другой вокодер разворачивает это обратно в звук. Именно поэтому DMR помехоустойчив и экономен по спектру — сравнение режимов и их вокодеров в разборе DMR/D-STAR/C4FM/NXDN.
Зачем вообще «переводить» звук
Между двумя рациями переводить нечего: обе говорят на AMBE, поток идёт сжатым от начала до конца. Проблема появляется, когда в сеть нужно завести что-то не-DMR:
- приложение на телефоне — микрофон даёт обычный PCM, его надо закодировать в AMBE, чтобы попасть в эфир, и раскодировать AMBE для воспроизведения;
- SIP-телефон / телефонная линия — там G.711 или Opus, тоже нужен перевод;
- запись и голосовые сервисы (озвучка, эхотест) — серверу надо «понимать» звук.
Вот эта операция PCM ⇄ AMBE и называется транскодинг, и делает её вокодер.
Почему раньше нужен был донгл
AMBE+2 — проприетарный и запатентованный (DVSI). Долгое время единственным «честным» способом получить AMBE из произвольного звука был аппаратный AMBE-донгл — USB-стик с фирменным чипом. Один донгл — один-два голосовых потока; на сеть с десятками абонентов это превращается в стойку донглов и кучу проводов. Именно поэтому многие проекты обходят телефон/SIP стороной: «дорого и громоздко».
Программный вокодер на сервере
Существуют программные реализации MBE/AMBE-вокодера (open-source, на основе библиотеки mbelib и родственных) — они кодируют и декодируют AMBE+2 чисто в софте, без чипа. Если поставить такой вокодер на сервер рядом с мастером, происходит важное:
- телефон шлёт PCM → сервер кодирует в AMBE → кадры уходят в эфир как от обычной рации;
- эфир (AMBE) → сервер декодирует → телефон слышит звук;
- никаких донглов: один сервер обслуживает много потоков, масштабируется софтом.
Именно серверный вокодер делает возможными рацию в смартфоне, телефонный мост, запись и озвучку — без аппаратного зоопарка. В DMRhub он используется как штатный компонент, а его исходники мы держим открытыми.