web-dev-qa-db-fra.com

WebRTC AGC (Contrôle de gain automatique)

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);

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.

64
user1884325

Voici la séquence d'opérations à utiliser pour Webrtc_AGC:

  1. Créer un AGC: WebRtcAgc_Create
  2. Initialiser AGC: WebRtcAgc_Init
  3. Set Config: WebRtcAgc_set_config
  4. Initialiser capture_level = 0
  5. Pour kAgcModeAdaptiveDigital, appelez VirtualMic: WebRtcAgc_VirtualMic
  6. Process Buffer avec capture_level: WebRtcAgc_Process
  7. Obtenir le niveau de capture de sortie renvoyé de WebRtcAgc_Process et le définir à capture_level
  8. Répétez les étapes 5 à 7 pour le audio buffers
  9. Détruire l'AGC: WebRtcAgc_Free

Vérifiez webrtc/modules/audio_processing/gain_control_impl.cc pour référence. 

2
ssk

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); 
 
0
Muhammad Faizan