Автономная АРУ (автоматическая регулировка усиления) в приложении WebRtc

Я пытаюсь создать автономный AGC, используя библиотеку WebRtc. (Вход - wav файл, выход - wav файл с настроенным усилением). Но в это время у меня есть некоторые проблемы с этим вопросом.

Я пытаюсь использовать функции, объявленные в файле gain_control.h. Когда я использую WebRtcAgc_Process(....), я получаю постоянное усиление, которое применяется ко всему сигналу, но не нелинейное усиление, которое зависит от величины входного сигнала.

Может быть, я должен использовать другие функции для моей цели? Как реализовать AGC через библиотеку WebRTC?


person user1657348    schedule 08.09.2012    source источник


Ответы (2)


Основная цель AGC - предоставить рекомендуемую громкость системного микрофона, которую пользователь должен установить через ОС. Если вы хотите применить чисто цифровое усиление, вы можете настроить его в одном из двух режимов (из modules/audio_processing/include/audio_processing.h, но gain_control.h имеет аналогичные режимы):

// Adaptive mode intended for situations in which an analog volume control
// is unavailable. It operates in a similar fashion to the adaptive analog
// mode, but with scaling instead applied in the digital domain. As with
// the analog mode, it additionally uses a digital compression stage.
kAdaptiveDigital,

// Fixed mode which enables only the digital compression stage also used by
// the two adaptive modes.
//
// It is distinguished from the adaptive modes by considering only a
// short time-window of the input signal. It applies a fixed gain through
// most of the input level range, and compresses (gradually reduces gain
// with increasing level) the input signal at higher levels. This mode is
// preferred on embedded devices where the capture signal level is
// predictable, so that a known gain can be applied.
kFixedDigital

Вы можете установить их с помощью WebRtcAgc_Init(), хотя, если вам не нужно избегать накладных расходов, я бы рекомендовал просто использовать класс AudioProcessing.

person Andrew MacDonald    schedule 03.10.2012

см. http://osxr.org/android/source/external/webrtc/src/modules/audio_processing/agc/interface/gain_control.h#0133

Регулировка усиления выполняется только во время 0135 * активных периодов речи. Длина входной речи может быть либо 10 мс, либо 0136 * 20 мс, а выходная длина такой же.

краткий обзор webrtcage_process

int WebRtcAgc_Process(void* agcInst,
                    const WebRtc_Word16* inNear,
                    const WebRtc_Word16* inNear_H,
                     WebRtc_Word16 samples,
                     WebRtc_Word16* out,
                     WebRtc_Word16* out_H,
                     WebRtc_Word32 inMicLevel,
                     WebRtc_Word32* outMicLevel,
                     WebRtc_Word16 echo,
                     WebRtc_UWord8* saturationWarning);
person Altanai    schedule 03.03.2015