在VoIP音视频会议中,需要将多路参会方音频流混合成一路音频流再发送给各参会方,以达到参会方可以听到每个与会人声音的目的,这种技术叫混音。
一、混音基础原理
在实际生活中,我们所处的生活和工作环境就是一个自然的混音场,各种不同的声音(人声、音乐声、机械声等)相互叠加,最终传入我们的耳朵里。不同声音在空气中的振幅叠加是线性的,因此,在混音算法中,最基础的混音原理就是将各路音频流中表征声音的振幅线性叠加起来。
二、混音算法
如果只是将各路音频线性叠加起来,会出现振幅值溢出问题,在叠加以后容易产生溢出、声音不均衡的现象。因此,会有以下改进方案:
-
混合权重
声波的振幅表示声音的能量水平,在多个音频流中,可能有的很大,有的小一些,差距过大,在混音后,用户一般希望多路声音听起来比较均衡。因此,要先调整部分音频流的音量再混合。
-
溢出处理
多路音频流的采样点线性叠加后可能会造成溢出。如每一个采样点由16位表示,表示范围为-32768~32767,如果叠加后的值出现上溢出(即大于32767)时,则采用最大值32767;如果出现下溢出时(即小于-32768),则采用最小值-32768。
三、混音条件
具有相同音频特征的音频流才能线性叠加,相关条件如下:
-
格式相同,一般使用解码后的PCM格式音频来混合
-
采样率相同
-
帧长相同
-
采样位深一样
-
声道数相同
四、应用场景
-
音视频会议中的音频混音
-
直播唱歌或连麦时,主播声音、伴奏声音等多种声音混合