WebRTC состоит из трех модулей: голосовой движок, видео движок и сетевая передача.Голосовой движок - одна из самых ценных технологий в WebRTC, которая реализует сбор, предварительную обработку, кодирование, отправку, получение, декодирование, микширование, серию потоков обработки. таких как постобработка и воспроизведение.
Как работает звук
Диаграмма основных классов звукового движка:
1. Модуль аудиоустройства AudioDeviceModule в основном отвечает за уровень аппаратного устройства, включая сбор и воспроизведение аудиоданных и соответствующие операции аппаратного устройства.
3. Процессор Audio 3A AudioProcessing в основном отвечает за предварительную обработку данных аудио, включая эхоподавление AEC, автоматическую регулировку усиления AGC и подавление шума NS. APM делится на два потока: один поток на ближнем конце и один поток на дальнем конце. Поток на ближнем конце относится к входящим данным с микрофона, поток на дальнем конце относится к принятым данным.
5. Фабрика кодировщиков аудио AudioEncodeFactory содержит такие кодеки, как Opus, iSAC, G711, G722, iLBC, L16 и т. д.
Аудио рабочий процесс:
2. Инициатор отправляет собранный звуковой сигнал в модуль APM для эхоподавления AEC, шумоподавления NS и обработки автоматической регулировки усиления AGC.
4. Инициатор отправляет закодированные данные через модуль передачи RtpRtcp, и передает их получателю через Интернет.
6. Принимающая сторона отправляет обработанные аудиоданные на устройство звуковой карты для воспроизведения.
Модуль NetEQ является основным модулем речевого движка Webrtc.
поток аудиоданных
В соответствии с описанным выше рабочим процессом аудио, мы продолжим совершенствовать поток данных аудио. Основное внимание будет уделено важной роли, которую играет центр передачи данных AudioTransportImpl во всем звене.
Основной внутренний процесс RecordDataIsAvailbale:
- Аудиоданные, собранные аппаратным обеспечением, напрямую передискретизируются с частотой дискретизации отправки.
- 3A обработка аудиоданных после передискретизации с помощью предварительной обработки аудио.
- VAD-обработка
- Цифровое усиление регулирует объем сбора данных
- Внешний обратный вызов аудиоданных для внешней предварительной обработки
- Все аудиоданные, которые должны быть отправлены отправителем микширования, включая собранные данные и данные сопровождающего звука
- Рассчитать энергетическую ценность аудиоданных
- Распространить его на все отправляющие потоки
- Смешайте аудиоданные из всех полученных потоков
- При определенных условиях шумовая инжекция выполняется для стороны сбора данных в качестве опорного сигнала.
- Микширование локального звука
- Цифровое усиление регулирует громкость воспроизведения
- Внешний обратный вызов аудиоданных для внешней предварительной обработки
- Рассчитать энергетическую ценность аудиоданных
- Передискретизируйте звук до частоты дискретизации запрошенного вывода.
- Отправлять аудиоданные в APM в качестве эталонного сигнала для обработки
Данные, воспроизводимые и собираемые AudioDeviceModule, всегда принимаются или отправляются через AudioDeviceBuffer с 10 мс аудиоданных. Для платформ, которые не поддерживают сбор и воспроизведение аудиоданных длительностью 10 мс, FineAudioBuffer также будет вставлен в модули AudioDeviceModule и AudioDeviceBuffer платформы для преобразования формата аудиоданных платформы в аудиокадры длительностью 10 мс, которые может обрабатывать WebRTC. В AudioDeviceBuffer количество точек дискретизации и частота дискретизации, соответствующие аудиоданным с текущего аппаратного устройства, будут регулярно подсчитываться в течение 10 секунд, что можно использовать для определения рабочего состояния текущего аппаратного обеспечения.
Изменения, связанные со звуком
- Аудиопрофиль реализован, поддерживает 2 сценария VoIP и MUSIC и реализует комплексную техническую стратегию частоты дискретизации, скорости кодирования, режима кодирования и количества каналов. В iOS реализовано разделение потоков сбора и воспроизведения, поддерживается двухканальное воспроизведение.
- Совместимость схемы доставки и адаптации параметров аудио 3А.
- Адаптация сцены гарнитуры, адаптация гарнитуры Bluetooth и обычной гарнитуры, а также адаптация динамического переключения 3A.
- Алгоритм введения шума Noise_Injection в качестве опорного сигнала играет особенно очевидную роль в подавлении эха в сценариях с наушниками.
- Поддержка локального аудиофайла и сетевого аудиофайла http&https.
- Реализация Audio Nack улучшает способность защиты аудио от потери пакетов и в настоящее время выполняет внутриполосную FEC.
- Оптимизация обработки звука для одиночного и двойного разговора.
- Исследования IOS по встроенной АРУ:
(2) Усиление аппаратного микрофона разных моделей разное, iPhone 7 Plus > iPhone 8 > iPhone X, поэтому при отключении программной и аппаратной АРУ уровень звука на дальнем конце будет разным.
(4) На большинстве моделей iOS входная громкость будет уменьшена во внешнем режиме «после повторного подключения наушников». Текущее решение состоит в том, чтобы добавить preGain, чтобы вернуть входную громкость в нормальное состояние после повторного подключения наушников.