Je teste l'AGC WebRTC, mais je dois faire quelque chose de mal, car le signal passe sans modification.
Voici comment je crée et initialise le CAG:
agcConfig.compressionGaindB = 9;
agcConfig.limiterEnable = 1;
agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */
WebRtcAgc_Create(&agc);
WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000);
WebRtcAgc_set_config(agc, agcConfig);
Et ensuite, pour chaque exemple de bloc de 10 ms, je fais ce qui suit:
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
Où micLevelIn
est défini sur 0.
Quelqu'un peut-il me dire ce que je fais mal?
Je m'attendais à ce qu'une tonalité sinusoïdale complète soit atténuée au niveau DBFS cible; et une tonalité sinusoïdale de bas niveau (c'est-à-dire -30dBFS) serait amplifiée pour correspondre au niveau DBFS cible. Mais ce n'est pas ce que je vois.
Voici la séquence d'opérations à utiliser pour Webrtc_AGC:
WebRtcAgc_Create
WebRtcAgc_Init
WebRtcAgc_set_config
capture_level = 0
kAgcModeAdaptiveDigital
, appelez VirtualMic: WebRtcAgc_VirtualMic
capture_level
: WebRtcAgc_Process
WebRtcAgc_Process
et le définir à capture_level
audio buffers
WebRtcAgc_Free
Vérifiez webrtc/modules/audio_processing/gain_control_impl.cc pour référence.
Essaye ça:
agcConfig.compressionGaindB = 9; agcConfig.limiterEnable = 1; agcConfig.targetLevelDbfs = 9;/* 9dB en dessous de la pleine échelle */ WebRtcAgc_Create (& agc); WebRtcAgc_Init (& agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000); WebRtcAmal & agcConfig);