Question WebRTC AGC (contrôle automatique du gain)


Je teste l'AGC WebRTC, mais je dois faire quelque chose de mal car le signal ne fait que passer sans être modifié.

Voici comment je crée et initialise l'AGC:

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 puis, pour chaque bloc d'échantillons 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.

Est-ce que quelqu'un peut 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 un signal sinusoïdal de faible niveau (c'est-à-dire -30dBFS) serait amplifié pour correspondre au niveau DBFS cible. Mais ce n'est pas ce que je vois.


64
2018-03-28 07:13


origine


Réponses:


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

  1. Créer un AGC: WebRtcAgc_Create
  2. Initialiser AGC: WebRtcAgc_Init
  3. Définir la configuration: WebRtcAgc_set_config
  4. Initialiser capture_level = 0
  5. Pour kAgcModeAdaptiveDigital, invoquez VirtualMic: WebRtcAgc_VirtualMic
  6. Process Buffer avec capture_level: WebRtcAgc_Process
  7. Récupère le niveau de capture sortant de WebRtcAgc_Process et le mettre à capture_level
  8. Répétez 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
2017-07-29 23:57



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);
    WebRtcAgc_set_config (& agc, & agcConfig);


0
2017-07-24 18:29