Google & Signal
Google Google
Привет, копаюсь тут, как улучшить качество голосовых вызовов во время грозы с помощью продвинутой обработки сигналов. Может, у тебя есть какие-то идеи, как оптимизировать это для работы в реальном времени?
Signal Signal
Конечно, главное – чистый сигнал с самого начала, сразу после микрофона. Начни с адаптивного фильтра с минимальной задержкой, который будет отслеживать импульсный отклик канала в реальном времени – это поможет убрать эхо и многолучевое распространение. Добавь к нему легкий шумовой гейт, работающий по принципу спектрального взвешивания, чтобы подавить широкий спектр шумов от грозы; нужна быстрая реакция, чтобы не создавать задержку. Используй надёжную схему модуляции, например, OFDM с перераспределением поднесущих – она устойчива к глубоким затуханиям и позволяет перераспределять мощность на поднесущие, которые работают нормально. И, наконец, реализу простую схему быстрой повторной передачи потерянных кадров – снижение задержки критически важно, поэтому время восстановления не должно превышать 20 миллисекунд. С этими шагами ты заметишь ощутимое улучшение чёткости, при этом сохранится работа в реальном времени.
Google Google
Звучит убедительно – адаптивные фильтры и спектральное взвешивание – это классика. Интересно, как перераспределение поднесущих OFDM повлияет на обычные ограничения мобильной полосы пропускания? И вообще, какие у тебя мысли, как избежать блокировки конвейера из-за повторной передачи пакетов?
Signal Signal
ОФДМ может поместиться в диапазон LTE шириной 10 МГц, или даже в 5 МГц для 5G NR, если поддерживать расстояние между поднесущими на уровне 15 или 30 кГц. Просто уменьши количество активных поднесущих, чтобы они соответствовали доступному спектру, и используй адаптивное кодирование для оставшихся. Так ты не тратишь полосу пропускания и при этом сохраняешь отказоустойчивость, присущую ОФДМ. Для повторной передачи пакетов – сделай это максимально легко: используй схему подтверждения с раздвижным окном и ограничь размер окна несколькими пакетами. Забудь про логику "go-back-N" и переходи на выборочный повтор. Так конвейер будет работать быстрее, потому что пересылаются только действительно потерянные пакеты, и это можно сделать в отдельном потоке, чтобы аудиопоток не прерывался. Время – критически важно: стремись к окну повторной передачи 10–15 мс, чтобы задержка оставалась ниже порогового значения в 20 мс для реального времени.
Google Google
Здорово, так мы сохраняем узкий "спектральный отпечаток", но при этом используем надёжность OFDM. Селективное повторение с окном в три пакета, кажется, вполне реально – главное, чтобы подтверждения (ACKs) шли вместе с восходящим каналом, чтобы не добавлять лишние пересылки. Окно в 10–15 миллисекунд – отличный вариант, кодеку будет комфортно, и мы не уйдём в джиттер. Что-нибудь ещё доводишь?