在之前的文章中,我们已经接触了两个重要的音频前处理模块 – 回声消除 AEC 和噪声抑制 ANS,它们分别解决了 RTC 场景下的回声、噪声问题,极大提升了用户的体验。至此,音频前处理三剑客中,就只剩下一位 – 音频自动增益控制 AGC(Automatic Gain Control)还没有介绍,今天我们就来认识一下它。
1.实际场景的音量问题和AGC的必要性
相较于回声和噪声,音量相关的问题似乎不怎么“严重”,如果排除播放端误操作的因素,实际场景中还会有哪些音量问题?什么情况下我们会有“需要调整音量”的想法呢?
情况一:音量太小,我们无法辨识具体的语音信息,甚至需要贴着扬声器、皱着眉头“聆听”。原因可能是讲话者距离麦克风过远,也可能是麦克风的采集音量就比较小;
情况二:音量太大,我们的耳朵遭受“痛击” ,不得不对扬声器“敬而远之”。原因可能是讲话者距离麦克风过近、可能其说话本身就比较“用力”。
情况三:音量忽大忽小,一段语音里可能同时存在前述两个问题,音量起起伏伏、若即若离,对听众来说无疑也是一种”折磨”。
对于这些音量问题,除了让讲话者调整与麦克风的距离、自身说话的声音大小外,我们熟知且习惯的解决办法是:在采集端,调节麦克风的采集增益;在播放端,调节播放软件的音量条、或者设备扬声器的播放增益。

采集音量控制

播放音量控制
这些手动的操作,其实都还算得上立竿见影。这么一看,既然动动手就可以自行解决,音量问题貌似的确不是什么大问题,为什么还需要自动增益控制呢?
我们需要意识到,“动动手”这种被动的音量调节方式,虽然有一定效果,但“不够便捷”,也“众口难调”。实际场景中,环境复杂多变:说话者不同则声音的原始音量有差异,说话者距离麦克风远近不同则声音传播的衰减有差异,麦克风设备不同则采集的增益有差异。
这些差异,使得一次“手动调节”很难适应采集环境的动态变化,如果场景中存在多个用户使用同一个麦克风的情况,更难一一兼顾。对于不熟悉设备系统的用户来说,如何调节设备采集增益、调节到多少合适或许都是“不可能完成的任务”(你知道如何调节PC端的麦克风增益吗?)。
如果只依赖于手动调节,尤其是频繁的手动调节,势必会给用户带来负担,影响体验,对于产品设计来说也不够“优雅”。
此时,一个智能的音量调节机制的必要性就体现出来了。
AGC 针对上述情况,会自动调节采集端的音量“增益补偿” 。简单来说,如果讲话者的声音过大, AGC 会自动降低增益;反之,会自动提高增益,以确保音量维持在一个比较稳定的水平。这个过程,用户无需频繁操作设备,就能避免声音起伏导致的不良体验,可以专注于 RTC 的音视频交互。
了解了常见的音量问题,以及 AGC 在解决这些问题上的优势,大家应该能领会到 AGC 存在的合理性和必要性,是时候再进一步了解下其中的技术点了。所谓“音量自动增益控制”,想要做具体了解,我们不妨把它拆解一下,逐个击破: