Explain in detail behind webrtc’s high sound quality and low delay – AGC

Time:2021-8-2

Introduction:This paper will comprehensively analyze the basic framework of webrtc AGC with examples, and explore its basic principle, mode differences, existing problems and optimization direction.

Earlier, we introduced the in webrtc audio 3aAcoustic echo cancellation (AEC)In this chapter, we will talk about another “a”–   Automatic gain control (AGC). This paper will comprehensively analyze the basic framework of webrtc AGC with examples, and explore its basic principle, mode differences, existing problems and optimization direction.

Author Luo Shen

Reviser | Taiyi

preface

Automatic gain control (AGC)It is the audio algorithm module that I think has the longest link and most affects the sound quality and subjective listening feeling. On the one hand, AGC must act on the transmitting end to deal with the various acquisition devices at the mobile end and PC end. On the other hand, AGC is often used as a voltage limiter on the receiving end to balance the mixed signal and prevent explosion. The most direct embodiment of the diversity of equipment is the difference of audio acquisition. Generally, the volume is too large, resulting in a burst. The acquisition volume is too small, and the opposite end sounds very difficult.

In the real scene of audio and video calls, different participants have different speaking volumes. Participating users need to frequently adjust the playing volume to meet the needs of listening feeling. Users wearing headphones bear the “critical blow” of high volume to their ears at any time. Therefore, the equalization of the transmitter volume is particularly important in the above scenarios. Excellent automatic gain control algorithm can unify the audio volume and greatly alleviate the volume differences caused by factors such as device acquisition differences, speaker volume and distance.

Location of AGC in webrtc

Before talking about AGC audio stream processing framework, let’s take a look at the position of AGC in audio and video real-time communication. As shown in Figure 1, the same device shows the process from acquisition to encoding as the sending end audio data, and from decoding to playing as the receiving end audio data. AGC adjusts the streaming volume as an equalizer and pressure limiter at the transmitting end, and only as a pressure limiter at the receiving end to prevent audio data burst after mixing. Theoretically, after AGC at the streaming end is robust enough, it is sufficient for AGC at the streaming end only as a pressure limiter. Some manufacturers will do AGC again in order to further reduce the volume difference of different voices after mixing.Explain in detail behind webrtc's high sound quality and low delay - AGCFigure 1 block diagram of uplink and downlink processing of audio signal in webrtc

Core parameters of AGC

First, let’s talk about the amplitude value of sample pointsSampleAnd decibeldBTake the 16bit quantized audio sampling point as an example:dB = 20 * log10(Sample / 32768.0), consistent with the ordinate scale on the right side of adobe audit.

Amplitude value: the minimum value of 16bit sampling is 0, and the absolute value of the maximum value is 32768(The amplitude value is shown in the figure belowRight column ordinate)。Explain in detail behind webrtc's high sound quality and low delay - AGC

DB means: the maximum value is 0 dB(The decibel value is shown in the figure belowRight column ordinate)Generally, the volume reaches – 3dB, and 3 is often set as the AGC target volume.Explain in detail behind webrtc's high sound quality and low delay - AGC

The core parameters are:

typedef struct {
  int16_ t targetLevelDbfs;    //  Target volume
  int16_ t compressionGaindB;  //  Gain capability
  uint8_ t limiterEnable;      //  Pressure limiter switch
} AliyunAgcConfig;

Target volume – targetleveldbfs: indicates the target value of the volume equalization result. If set to 1, the target value of the output volume is – 1dB;

Gain capability – compressiongaindb: indicates the maximum gain capability of audio. If it is set to 12dB, the maximum gain can be increased by 12dB;

Pressure limiter switch – limiterenable: it is generally used with targetleveldbfs. Compressiongaindb is to adjust the gain range of small volume, and limiter is to limit the part exceeding targetleveldbfs to avoid data explosion.

Core mode of AGC

In addition to the above three core parameters, webrtc AGC provides the following three modes for different access devices:

enum {
  kAgcModeUnchanged,
  Kagcmodeadaptive analog, // adaptive simulation mode
  Kagcmodeadaptive digital, // adaptive digital gain mode
  Kagcmodefixeddigital // fixed digital gain mode
};

Below, we will illustrate these three modes from the aspects of basic functions, applicable scenarios, signal flow diagram and existing problems.

Fixed digital gain – fixeddigital

The most basic gain mode of fixed digital gain mode is also the core of AGC, and the other two modes are extended on this basis. It mainly amplifies the signal with fixed gain, and the maximum gain does not exceed the set gain capacitycompressionGaindB, combinedlimiterWhen using, the upper limit does not exceed the set target volumetargetLevelDbfs

In the fixed digital gain mode, it only depends on the core functionWebRtcAgc\_ProcessDigitalEqualize the input signal volume. Since there is no feedback mechanism, the signal processing process is also extremely simple. After setting the parameters, the signal will go through the following process:

Explain in detail behind webrtc's high sound quality and low delay - AGC

Fixed digital gain mode is the core mode, which mainly includes the following two aspectsIt is worthy of our in-depth study:

Voice detection module   WebRtcAgc\_ Basic idea of processvad

In the scene of real-time communication, the near end signal collected by the microphone will contain the component of the far end signal, which will be passed first in the processWebRtcAgc\_ProcessVadFunction to analyze the far end signal. When detecting the actual near end signal envelope, it is necessary to eliminate the interference term of the far end signal to avoid affecting the statistics of parameters such as the near end signal envelope due to the residual echo signal. The most traditional VAD will distinguish speech segments from non speech segments based on energy, zero crossing rate and noise threshold. Webrtc AGC provides a new idea for roughly distinguishing speech segments:

  1. calculationshort-termMean and variance describe the instantaneous change of speech envelope, which can accurately reflect the envelope of speech, as shown in Figure 2Left red curve
// update short-term estimate of mean energy level (Q10)
tmp32 = state->meanShortTerm * 15 + dB;
state->meanShortTerm = (int16_t)(tmp32 >> 4);
// update short-term estimate of variance in energy level (Q8)
tmp32 = (dB * dB) >> 12;
tmp32 += state->varianceShortTerm * 15;
state->varianceShortTerm = tmp32 / 16;
// update short-term estimate of standard deviation in energy level (Q10)
tmp32 = state->meanShortTerm * state->meanShortTerm;
tmp32 = (state->varianceShortTerm << 12) - tmp32;
state->stdShortTerm = (int16_t)WebRtcSpl_Sqrt(tmp32);

2. CalculationLong timeThe mean and variance describe the overall slow change trend of the signal, outline the “center of gravity line” of the signal, and are relatively smooth, which is conducive to using the threshold value as the detection condition, as shown in Figure 2  Left blue curve

// update long-term estimate of mean energy level (Q10)
tmp32 = state->meanLongTerm * state->counter + dB;
state->meanLongTerm = WebRtcSpl_DivW32W16ResW16(tmp32, WebRtcSpl_AddSatW16(state->counter, 1));
// update long-term estimate of variance in energy level (Q8)
tmp32 += state->varianceLongTerm * state->counter;
state->varianceLongTerm = WebRtcSpl_DivW32W16(tmp32, WebRtcSpl_AddSatW16(state->counter, 1));

3. CalculationStandard score, describe the deviation between the short-term mean and the “center of gravity line”, and the part above the center can be considered as a great possibility of speech activity;

tmp32 = tmp16 * (int16_t)(dB - state->meanLongTerm);
tmp32 = WebRtcSpl_DivW32W16(tmp32, state->stdLongTerm);
state->logRatio = (int16_t)(tmp32 >> 6);

Explain in detail behind webrtc's high sound quality and low delay - AGC

Explain in detail behind webrtc's high sound quality and low delay - AGCFigure 2 left:Long and short-term mean and variance Right:Input and VaD detection threshold

WebRtcAgc\_ ProcessDigital   How to gain audio data

The three core parameters are developed around the fixed digital gain mode. What we need to find out is the core function in webrtc AGC-WebRtcAgc\_ProcessDigitalHow to gain audio data.

1. Calculate the gain table according to the specified targetleveldbfs and compressiongaindbgainTable

/*Calculate the gain table gaintable according to the set target gain and gain capability*/
if (WebRtcAgc_CalculateGainTable(&(stt->digitalAgc.gainTable[0]), stt->compressionGaindB, stt->targetLevelDbfs, stt->limiterEnable, stt->analogTarget) == -1) {
    return -1;
 }

In this step, the gain table gaintable can be understood as the quantization of signal energy value (square of amplitude). We first fix targetleveldbfs and set compressiongaindb to 3dB ~ 15dB respectively. The corresponding gain table curve is as follows. It can be seen that the larger the gain capacity setting is, the higher the curve is, as shown in the following figure.

Explain in detail behind webrtc's high sound quality and low delay - AGC

You may be curious about the gain tablegainTableWhy is the length of only 32? 32 actually represents 32 bits of an int data (the energy value range of short data is [0, 32768 ^ 2], which can be represented by unsigned int data). From high to low, the highest bit of 1 has the largest order of magnitude, which is called integer part – intpart, and the decimal part composed of subsequent digits is called fracpart. Therefore, any number between [0, 32768] corresponds to a gain value in the digital gain table. Next, let’s talk about how to look up the table and apply the gain value to complete volume equalization.

/**Some key source codes*/
/**Extract integer and decimal parts*/
intPart = (uint16_t)(absInLevel >> 14);          // extract the integral part
fracPart = (uint16_t)(absInLevel & 0x00003FFF);  // extract the fractional part
......
/**Generate a digital gain table based on the integer and decimal parts*/
gainTable[i] = (1 << intPart) + WEBRTC_SPL_SHIFT_W32(fracPart, intPart - 14);

two   According to the input signal envelope in the gain tablegainTableFind the gain value in and apply the gain to the input signal;

Based on the auditory curve of human ear, the application gain in AGC is segmented. 160 sample points in a frame will be divided into 10 segments with 16 sample points in each segment. Therefore, the segmented gain array gains will be introduced. The following code describes the relationship between the digital gain table and the gain array, which directly reflects the process of looking up the table. Its idea is similar to that when calculating the gain table, It is also to calculate the integer part and the decimal part first, and then calculate the new gain value through the combination of the gain table, which includes the compensation of the decimal part.

// Translate signal level into gain, using a piecewise linear approximation
    // find number of leading zeros
    zeros = WebRtcSpl_NormU32((uint32_t)cur_level);
    if (cur_level == 0) {
      zeros = 31;
    }
    tmp32 = (cur_level << zeros) & 0x7FFFFFFF;
    frac = (int16_t)(tmp32 >> 19);  // Q12.
    tmp32 = (stt->gainTable[zeros - 1] - stt->gainTable[zeros]) * frac;
    gains[k + 1] = stt->gainTable[zeros] + (tmp32 >> 12);

   The following code obtains the actual gain value after shifting 16 bits to the right according to the segmented gain array gains(The previous calculation of gain table and gain array is based on the energy of sample points. Here, shifting 16 bits to the right can be understood as finding an integer α, Multiply the signal amplitude value sample by α Closest to 32768), directly multiplied by the output signal (where the output signal has been copied from the input signal at the beginning of the function).

/**Gain array gains acts on the output signal to complete volume equalization*/
  for (k = 1; k < 10; k++) {
    delta = (gains[k + 1] - gains[k]) * (1 << (4 - L2));
    gain32 = gains[k] * (1 << 4);
    // iterate over samples
    for (n = 0; n < L; n++) {
      for (i = 0; i < num_bands; ++i) {
        tmp32 = out[i][k * L + n] * (gain32 >> 4);
        out[i][k * L + n] = (int16_t)(tmp32 >> 16);
      }
      gain32 += delta;
    }
  }

We take the curve of compressiongaindb = 12dB as an example. The figure above shows the actual value of the calculated digital gain table gaintable, and the figure below shows the actual gain multiple obtained after shifting 16 bits to the right. It can be seen that when compressiongaindb = 12dB, the maximum gain of the integer part is 3. Theoretically, the gain of 12dB is actually amplified by 4 times. Here, the maximum gain of the integer part can be multiplied by 3 times, and then the remaining 0 ~ 1.0 times can be supplemented by the decimal part, so as to prevent burst. Two simple examples:

Explain in detail behind webrtc's high sound quality and low delay - AGCExplain in detail behind webrtc's high sound quality and low delay - AGC

A.Data envelope cur with amplitude value of 8000\_ Level = 8000 ^ 2 = 0x3d09000, via webrtcspl\_ NormU32 ((uint32\_ t) cur\_ level); It is calculated that there are 6 leading zeros. Looking up the table, it is found that the gain of the integer part is STT – > gaintable [6] = 3, that is, 8000 can be boldly multiplied by 3 times, and then the part with the gain multiple less than 1.0 is determined by fracpart;

B.Data envelope cur with amplitude value of 16000\_ Level = 16000 ^ 2 = 0xf424000, via webrtcspl\_ NormU32 ((uint32\_ t) cur\_ level); It is calculated that there are 4 leading zeros. Looking up the table, it is found that the gain of the integer part is STT – > gaintable [4] = 2. At this time, 16000 * 2 = 32000. The process of equalizing to the target volume is determined by the limiter. The details are not expanded here.

In short, if any number in [0, 32768] wants to gain the specified dB and the result does not exceed 32768, the determined element can be found in the digital gain table gaintable to meet this requirement.

About target gaintargetLevelDbfsandLimiterApplication in webrtcagc\_ Processdigital and related functions are reflected, which will not be described here. You can read the source code and study it in depth.

Let’s use several cases to see the effect and problems of the fixed digital gain mode. First, fix the settingtargetLevelDbfs = 1, compressionGaindB = 12。

  1. The acquisition volume is small, and the improvement is not obvious after equalization;

The volume collected by the equipment is – 24dB. After equalization, the volume is only – 12dB. The overall volume will feel too small;Explain in detail behind webrtc's high sound quality and low delay - AGC

2. The acquisition volume is large and the bottom noise is significantly enhanced;

The volume collected by the equipment is – 9dB. After equalization, the volume reaches – 1dB. The overall volume sounds normal, but the fluctuation between voice frames is reduced, mainly because the noise part without session is greatly improved. In this case, the main problem is that when the acquisition volume itself is relatively large, if the ambient noise is large and the noise reduction ability is not strong, oncecompressionGaindBIf the setting is large, the voice part will be limited totargetLevelDbfsHowever, the bottom noise of the non segment part will be fully improved, and the opposite participants can hear obvious noise.Explain in detail behind webrtc's high sound quality and low delay - AGC

3. The collected sound fluctuates greatly (taking the artificially spliced audio from large to small as an example), and it still cannot be improved after equalization;

Explain in detail behind webrtc's high sound quality and low delay - AGC

Adaptive analog gain – adaptive analog

Before talking about adaptive analog gain, we need to clarify the functions of the PC side that affect the acquisition volume:

1. The PC supports adjusting the collection volume, with the adjustment range of 0 ~ 1.0, and the webrtc client code is internally mapped to 0 ~ 255;

/**Taking MAC as an example, the microphone sensitivity is changed to 0 ~ 255*/
int32_t AudioMixerManagerMac::MicrophoneVolume(uint32_t& volume) const {
  ......
    // vol 0.0 to 1.0 -> convert to 0 - 255
    volume = static_cast<uint32_t>(volFloat32 * 255 + 0.5);
    ......
  return 0;
}

2. Most windows notebook devices have built-in microphone array and provide microphone array enhancement algorithm. At the same time of noise reduction, they also provide an additional gain of 0 ~ 10dB (the gain of Lenovo devices is up to 36dB for different models), as shown in Figure 3;
Explain in detail behind webrtc's high sound quality and low delay - AGCFigure 3 left: analog gain adjustment at MAC end right: gain capability of microphone array at windows end

Because there are too many modules to control the volume, the AGC algorithm on the PC is more sensitive. The default values set by many online customers are unreasonable, which will directly affect the audio and video call experience:

1. Excessive collection volume will lead to significant increase in noise and human voice explosion;

Explain in detail behind webrtc's high sound quality and low delay - AGC

2. Too high acquisition volume will lead to large nonlinear distortion after the broadcast signal is collected into the microphone, which is a great challenge to the echo cancellation algorithm;

Explain in detail behind webrtc's high sound quality and low delay - AGC

3. The acquisition volume is too low and the digital gain ability is limited, resulting in the end-to-end hearing loss;Explain in detail behind webrtc's high sound quality and low delay - AGCExplain in detail behind webrtc's high sound quality and low delay - AGC

Most users do not know that the PC device also has the function of manually adjusting the acquisition gain after detecting the abnormal sound. It is almost impossible to rely on online users (especially many primary school students in educational scenes) to adjust the analog gain value by themselves. It is more feasible to dynamically adjust the analog gain value inside the AGC algorithm, With the digital gain part, the near end signal is balanced to the ideal position. Therefore, webrtc scientists have developed and designed an adaptive analog gain mode to adjust the original acquisition volume through the feedback mechanism. The goal is to cooperate with the digital gain module to find the most appropriate microphone gain value and feed it back to the equipment layer, Make the near end data reach the target gain after digital gain. The audio data flow block diagram is as follows:Explain in detail behind webrtc's high sound quality and low delay - AGCExplain in detail behind webrtc's high sound quality and low delay - AGC

On the basis of fixed digital gain, there are two new additions:

1. After the digital gain, an analog gain update module is added:WebRtcAgc\_ProcessAnalog, based on the current analog gain valueinMicLevel(webrtc maps the scale to 0 ~ 255) and other intermediate parameters to calculate the analog gain value to be adjusted next timeoutMicLevelAnd feed back to the equipment layer.

// Scale from VoE to ADM level range.
uint32_t new_voe_mic_level = shared_->transmit_mixer()->CaptureLevel();
if (new_voe_mic_level != voe_mic_level) {
    // Return the new volume if AGC has changed the volume.
    new_mic_volume = static_cast<int>((new_voe_mic_level * max_volume +static_cast<int>(kMaxVolumeLevel / 2)) / kMaxVolumeLevel);
    return new_mic_volume;
}

2. The default setting of microphone array of some equipment manufacturers is relatively small. Even if the analog gain is adjusted to full, the acquisition is still very small. At this time, the digital gain compensation part is needed to improve:WebRtcAgc\_AddMic, you can zoom in on the basis of the original acquisition1.0~3.16Times, as shown in Figure 4. So, how to judge whether the magnification is not enough? In the previous step, the final output of the analog gain update module is actuallymicVolAnd maximummaxAnalog(255)The smaller one:

*outMicLevel = WEBRTC_SPL_MIN(stt->micVol, stt->maxAnalog) >> stt->scale;

That is, the actual value micvol calculated according to relevant rules may be greater than the specified maximum value maxanalog, which means that adjusting the analog gain to the maximum can not reach the target volume, webrtcagc\_ Addmic will monitor the occurrence of such events and give additional compensation by looking up the table.

Gain table kgaintableanalog:

static const uint16_t kGainTableAnalog[GAIN_TBL_LEN] = {
    4096, 4251, 4412, 4579,  4752,  4932,  5118,  5312,  5513,  5722, 5938,
    6163, 6396, 6638, 6889,  7150,  7420,  7701,  7992,  8295,  8609, 8934,
    9273, 9623, 9987, 10365, 10758, 11165, 11587, 12025, 12480, 12953};
// apply gain
sample = (in_ mic[j][i] * gain) >> 12; //  After the right shift, the array is quantized to 0 ~ 3.16

Explain in detail behind webrtc's high sound quality and low delay - AGC

Figure 4 gain curve of gain meter

Each time, the input signal is compensated with a fixed step of 1. Gaintableidx = 0 means that the magnification is 1 times, that is, nothing is done.

/* Increment through the table towards the target gain.
 * If micVol drops below maxAnalog, we allow the gain
 * to be dropped immediately. */
if (stt->gainTableIdx < targetGainIdx) {
    stt->gainTableIdx++;
} else if (stt->gainTableIdx > targetGainIdx) {
    stt->gainTableIdx--;
}
gain = kGainTableAnalog[stt->gainTableIdx];
// apply gain
sample = (in_mic[j][i] * gain) >> 12;

Existing problems:

1. Analog value up regulation without voice;Explain in detail behind webrtc's high sound quality and low delay - AGC

2. The adjustment range is too large, resulting in obvious sound fluctuation;Explain in detail behind webrtc's high sound quality and low delay - AGC

3. Frequently adjusting the operating system API will bring unnecessary performance consumption and serious thread blocking;

4. The gain capability of the digital part is limited and cannot complement the analog gain;

5. The burst detection is not very sensitive and the analog gain cannot be adjusted in time;

6. The accuracy of addmic module is not enough, and there is a risk of popping in the compensation process

Adaptive digital gain – adaptive digital

Entertainment, social networking, online education and other fields based on audio and video communication are inseparable from a variety of smart phones and tablet devices. However, these mobile terminals do not have an interface similar to PC terminal to adjust analog gain. The distance between the sound source and the equipment, the sound source volume, the hardware acquisition capability and other factors will affect the acquisition volume. The effect of relying solely on fixed digital gain is very limited. Especially in the multi person meeting, it will be obvious that the volume of different speakers is inconsistent, and the volume rises and falls greatly.

In order to solve this problem, webrtc scientists imitated the ability of analog gain adjustment on PC and added a virtual microphone adjustment module: webrtcagc based on the analog gain framework\_ Virtualmic uses two arrays with a length of 128: gain curve – kgaintablevirtualmic and suppression curve – ksuppressiontablevirtualmic to simulate the analog gain at the PC end (the gain part is a monotonically increasing straight line and the suppression part is a monotonically decreasing concave curve). The former provides 1.0 ~ 3.0 times the gain capability and the latter provides 1.0 ~ 0.1 pressing capability.

Explain in detail behind webrtc's high sound quality and low delay - AGCFig. 5 gain curve and suppression curve

The core logic is consistent with the adaptive analog gain.

  1. As with adaptive mode gain mode, it is still usedWebRtcAgc\_ProcessAnalogto updatemicVol
  1. According to micvolWebRtcAgc\_VirtualMicUpdate gain subscript in modulegainIdx, and look up the table to get a new gain;
/*Set the desired volume level*/
  gainIdx = stt->micVol;
  if (gainIdx > 127) {
    gain = kGainTableVirtualMic[gainIdx - 128];
  } else {
    gain = kSuppressionTableVirtualMic[127 - gainIdx];
  }

3. Application gaingain, once saturation is detected, it will gradually decreasegainIdx;

/*Saturation detection update gain*/
if (tmpFlt > 32767) {
    tmpFlt = 32767;
    gainIdx--;
    if (gainIdx >= 127) {
        gain = kGainTableVirtualMic[gainIdx - 127];
    } else {
        gain = kSuppressionTableVirtualMic[127 - gainIdx];
    }
}
if (tmpFlt < -32768) {
    tmpFlt = -32768;
    gainIdx--;
    if (gainIdx >= 127) {
        gain = kGainTableVirtualMic[gainIdx - 127];
    } else {
        gain = kSuppressionTableVirtualMic[127 - gainIdx];
    }
}

4. Data transfer after gainWebRtcAgc\_AddMic, check whether micvol is greater than the maximum valuemaxAnalogDecide whether additional compensation needs to be activated.

The block diagram of audio data flow is as follows:Explain in detail behind webrtc's high sound quality and low delay - AGC

The existing problems are similar to the adaptive mode gain. One problem that needs to be clarified here is that the sensitivity of digital gain adaptive adjustment is not high. When the input volume fluctuates, it is prone to block pull-up or compression. An obvious example is used to illustrate that when encountering a high volume, it is necessary to call the compression curve. If it is followed by a low volume, it will lead to further compression of the low volume, Then the gain will be increased. At this time, if the low volume is followed by the high volume, it will lead to a high volume burst. The limiter needs to participate in the pressure limit, which will distort the sound quality.Explain in detail behind webrtc's high sound quality and low delay - AGC

Explain in detail behind webrtc's high sound quality and low delay - AGC

Summary and optimization direction

For better listening experience, the goal of AGC algorithm is to ignore the differences in equipment acquisition, still balance the audio volume at the streaming end to the ideal position, eliminate low volume, explosion, and solve the core problems such as the fluctuation of different people’s voice volume after multi person mixing.

In view of the problems of various modes mentioned in the above chapters, the following enlightenment is given:

  1. For analog gain adjustment, the problems of frequent adjustment and too large step size must be repaired;
  2. The accuracy of addmic part is not enough. You can predict it in advance. Don’t wait until a burst is detected before callback;
  3. The digital gain and analog gain modules of PC terminal are independent of each other, but the effect should be mutually compensated;
  4. AGC’s balance of volume should not affect MOS, and MOS should not be abandoned because of the pursuit of sensitivity.

In addition, there are many operations in the code. It is easy to persuade you to retreat at first reading. I hope you can grasp the core code, practice more after forming the overall framework, and then absorb and digest.

Finally, let’s look at the optimized effect:

1. After analog gain adjustment, the volume of the collected audio signal fluctuates. After digital partial equalization, the audio envelope remains good and the volume is consistent as a whole.Explain in detail behind webrtc's high sound quality and low delay - AGC

2. Voice and noise in the environment. After AGC, the volume fluctuation of voice part decreases, and the noise part does not increase significantly;Explain in detail behind webrtc's high sound quality and low delay - AGCExplain in detail behind webrtc's high sound quality and low delay - AGC

3. In an extreme case, the small voice part is increased by 35dB at most, and the convergence time is kept within 10s;

Explain in detail behind webrtc's high sound quality and low delay - AGC


“Video cloud technology”, the official account of your most noteworthy audio and video technology, is pushing practical technical articles from Ali cloud every week. Official account back office technology can be added to Ali cloud video cloud technology exchange group, and the author will explore audio and video technology to get more industry latest information.

Copyright notice:The content of this article is spontaneously contributed by Alibaba cloud real name registered users, and the copyright belongs to the original author. Alibaba cloud developer community does not own its copyright or bear corresponding legal liabilities. Please refer to Alibaba cloud developer community user service agreement and Alibaba cloud developer community intellectual property protection guidelines for specific rules. If you find any content suspected of plagiarism in the community, fill in the infringement complaint form to report. Once verified, the community will immediately delete the content suspected of infringement.