Эти вещи о звуке серии WebRTC

WebRTC состоит из трех модулей: голосовой движок, видео движок и сетевая передача.Голосовой движок является одной из самых ценных технологий в WebRTC, которая реализует сбор, предварительную обработку, кодирование, отправку, получение, декодирование, микширование и аудио. данные аудиоданных Ряд процессов обработки, таких как постобработка и воспроизведение.

Звуковой движок в основном включает в себя: модуль аудиоустройства ADM, фабрику аудиокодера, фабрику аудиодекодера, микшер, предварительную обработку звука APM.

Звуковой рабочий механизм

Если вы хотите систематически понять звуковой движок, вам сначала нужно понять базовый класс реализации и поток аудиоданных, а затем мы кратко проанализируем его.

Диаграмма основных классов звукового движка:

Звуковой движок WebrtcVoiceEngine в основном включает в себя модуль аудиоустройства AudioDeviceModule, аудиомикшер AudioMixer, аудиопроцессор 3A AudioProcessing, класс управления звуком AudioState, фабрику аудиокодеров AudioEncodeFactory, фабрику аудиодекодеров AudioDecodeFactory, голосовой медиаканал, включая отправку и получение, и т. д.

1. Модуль аудиоустройства AudioDeviceModule в основном отвечает за уровень аппаратных устройств, включая сбор и воспроизведение аудиоданных и связанные с ними операции аппаратных устройств.

2. Аудиомикшер AudioMixer в основном отвечает за микширование данных отправки аудио (сбор данных устройства и микширование аудио), микширование данных воспроизведения аудио (многоканальный прием аудио и микширование аудио).

3. AudioProcessing, аудиопроцессор 3A, в основном отвечает за предварительную обработку данных аудиоколлекции, включая эхоподавление AEC, автоматическую регулировку усиления AGC и подавление шума NS. APM делится на два потока: поток на ближнем конце и поток на дальнем конце. Поток на ближнем конце относится к входящим данным от микрофона, поток на дальнем конце относится к полученным данным.

4. Класс управления звуком AudioState включает в себя модуль аудиоустройства ADM, модуль предварительной обработки звука APM, аудиомикшер Mixer и центр передачи данных AudioTransportImpl.

5. Audio Encoder Factory AudioEncodeFactory содержит Opus, iSAC, G711, G722, iLBC, L16 и другие кодеки.

6. Audio Decode Factory AudioDecodeFactory содержит Opus, iSAC, G711, G722, iLBC, L16 и другие кодеки.

Блок-схема аудио рабочего процесса:
 

1. Инициатор собирает звук через микрофон
2. Инициатор отправляет собранный звуковой сигнал в модуль APM для эхоподавления AEC, шумоподавления NS и автоматической обработки регулировки усиления AGC 3. Инициатор отправляет обработанные данные на кодер 4
. Инициатор
отправляет закодированные данные через модуль передачи RtpRtcp и передает их принимающей стороне через сеть Интернет
5. Принимающая сторона получает аудиоданные, передаваемые из сети, и сначала отправляет их в модуль NetEQ для устранения джиттера. Декодирование сокрытия пакетов и другие операции
6. Принимающая сторона отправляет обработанные аудиоданные на устройство звуковой карты для воспроизведения.Модуль

NetEQ является основным модулем голосового движка Webrtc.

В модуле NetEQ он примерно разделен на модуль MCU и модуль DSP. MCU в основном отвечает за расчет и статистику задержки и джиттера, а также генерирует соответствующие команды управления. Модуль DSP отвечает за прием и обработку соответствующих пакетов данных в соответствии с управляющими командами MCU и их передачу на следующую ссылку.

поток аудиоданных

Согласно приведенной выше блок-схеме рабочего процесса аудио, мы продолжим совершенствовать поток аудиоданных. Основное внимание будет уделено важной роли, которую играет центр передачи данных AudioTransportImpl во всем звене.
 

AudioTransportImpl, центр передачи данных, реализует интерфейс обработки данных коллекции RecordDataIsAvailbale и интерфейс обработки данных воспроизведения NeedMorePlayData. RecordDataIsAvailbale отвечает за сбор аудиоданных, обработку и их распределение по всем отправляющим потокам. NeedMorePlayData отвечает за микширование всех полученных потоков, а затем отправляет его в APM в качестве эталонного сигнала для обработки и, наконец, передискретизирует его до частоты дискретизации, запрашиваемой для вывода внутреннего основного процесса RecordDataIsAvailbale

:

  1. Аудиоданные, собранные аппаратным обеспечением, напрямую преобразуются в частоту дискретизации отправки.
  2. 3А обработка аудиоданных с передискретизацией выполняется с помощью предварительной обработки звука.
  3. VAD-обработка
  4. Цифровое усиление для регулировки объема сбора данных
  5. Внешний обратный вызов аудиоданных для внешней предварительной обработки
  6. Все аудиоданные, которые необходимо отправить отправителю микширования, включая собранные данные и аудиоданные.
  7. Расчет значений энергии аудиоданных
  8. Распространить его на все отправляющие потоки

Основной процесс внутри NeedMorePlayData:

  1. Смешивает аудиоданные всех полученных потоков

1.1 Рассчитайте частоту дискретизации выходного сигнала CalculateOutputFrequency()
1.2 Соберите аудиоданные из источника GetAudioFromSources(), выберите три канала без приглушения и с наибольшей энергией для микширования
1.3 Выполните операцию микширования FrameCombiner::Combine()

При определенных условиях выполните введение шума , Используется на стороне захвата в качестве опорного сигнала

  1. Смешайте местное аудио
  2. Цифровое усиление для регулировки громкости воспроизведения
  3. Внешний обратный вызов аудиоданных для внешней предварительной обработки
  4. Расчет значений энергии аудиоданных
  5. Передискретизируйте звук до запрошенной частоты дискретизации на выходе.
  6. Отправлять аудиоданные в APM в качестве эталонного сигнала для обработки

Исходя из потока данных на рисунке выше, почему нам нужны FineAudioBuffer и AudioDeviceBuffer? Поскольку аудиоконвейер WebRTC поддерживает обработку только 10-миллисекундных данных, разные платформы операционных систем предоставляют аудиоданные с разной продолжительностью сбора и воспроизведения, а разные частоты дискретизации также предоставляют данные с разной продолжительностью.

Например, на iOS частота дискретизации 16K обеспечит 128 кадров аудиоданных по 8 мс, частота дискретизации 8K обеспечит 128 кадров аудиоданных по 16 мс, частота дискретизации 48K обеспечит 512 кадров аудиоданных по 10,67 мс.

Реализация аудиопрофиля поддерживает два сценария VoIP и Music и реализует комплексную техническую стратегию частоты дискретизации, битрейта кодирования, режима кодирования и количества каналов. iOS реализует разделение потоков сбора и воспроизведения и поддерживает двухканальное воспроизведение.

  1. Выдается схема адаптации для совместимости параметров аудио 3А.
  2. Адаптация сцены гарнитуры, адаптация гарнитуры Bluetooth и обычной гарнитуры, адаптация динамического переключения 3A.
  3. Алгоритм введения шума Noise_Injection в качестве опорного сигнала играет особенно очевидную роль в подавлении эха сцены с наушниками.
  4. Поддержка локальных аудиофайлов и сетевых аудиофайлов http&https.
  5. Реализация Audio Nack, улучшающая возможности защиты от потери пакетов аудио, в настоящее время находится в процессе внутриполосного FEC.
  6. Обработка звука была оптимизирована для одиночного и двойного разговора.
  7. Исследование iOS по встроенной АРУ:

(1) Встроенная АРУ эффективна для речи и музыки, но не влияет на шум и окружающий шум.
(2) Усиление аппаратного обеспечения микрофона разных моделей отличается, iPhone 7 Plus > iPhone 8 > iPhone X, поэтому, когда программная и аппаратная AGC отключены, уровень звука, слышимый на дальнем конце, будет разным. .
(3) В дополнение к переключаемой АРУ, предоставляемой iOS, есть также АРУ, которая будет работать все время для точной настройки уровня сигнала; предположим, что работающая АРУ — это аналоговая АРУ, поставляемая с iOS, которая может быть связано с аппаратным обеспечением и не имеет API.Может переключаться, а переключаемая АРУ — это цифровая АРУ.
(4) На большинстве моделей iOS громкость входного сигнала будет уменьшаться в режиме динамика «после повторного подключения наушников». Текущее решение состоит в том, чтобы добавить preGain, чтобы вернуть входную громкость в нормальное состояние после повторного подключения наушников.

Устранение неполадок со звуком

Позвольте мне поделиться с вами некоторыми наиболее распространенными аудио явлениями и их причинами:

Эти вещи об аудио в оригинальной  серии WebRTC - Nuggets

 

★ Визитная карточка в конце статьи позволяет бесплатно получать учебные материалы по разработке аудио и видео, в том числе (FFmpeg, webRTC, rtmp, hls, rtsp, ffplay, srs), а также дорожные карты для обучения аудио и видео и т. д.

см. ниже!

 

Supongo que te gusta

Origin blog.csdn.net/yinshipin007/article/details/132209247
Recomendado
Clasificación