一种多路音频混音算法的实现与应用
2017-08-30安徽四创电子股份有限公司
安徽四创电子股份有限公司 胡 斌
一种多路音频混音算法的实现与应用
安徽四创电子股份有限公司 胡 斌
在音频混音技术中,混音算法决定了其混音路数及输出的混音质量,而现有的大多数混音算法混音效果不理想,混音路数过少,音频质量差。该文介绍并设计实现了一种基于分段量化规则的音频混音方法,提高了混音路数及输出的混音质量,降低了噪音,具有良好的听觉舒适感。该方法的应用,对于支持音频交互工作、改善用户体验具有重要意义。
音频交互;混音路数;混音质量;用户体验
0 引言
语音互动的重要性要求远远高于多媒体通信中的其他元素,如视频或其他数据。因为视频或其他数据在相对较长的时延内的抖动都是可以被用户接受的,而音频部分如果时间稍长,就会产生很明显的断续感,以致用户根本无法分辨语音所承载的语义从而严重影响沟通。多路音频交互的核心问题就是混音,而提供资源使用率相对低且音频交互质量更高的混音方法,以提升用户的实际体验效果,已成为本领域技术人员需要解决的技术难题。
1 混音基本原理
对于多路音频混音系统来说,需要将各处的音频数据在时域进行混合。
当各信号的抽样率一致时,混音可以实现为将各信号的采样数据线性叠加,然后将混音后语音流发送到播放设备驱动缓冲区进行播放。由于混音后的音频数据是每路输入音频的线性叠加,因此可以用data[j,i]表示第j个连续音频流亦即声源j的第i个线性样本值(声强)[6],则混音后的音频流的第i线性样本值应为:
该计算式是所有混音算法的基础。由于参与混音的音频流的数目是随着音频路数动态变化的,这就需要考虑混音后所得音频流的线性样本myData[i]的取值范围问题。由于数字音频信号存在量化上限和下限的问题,叠加运算可能会导致结果溢出。由此可以看出混音算法的难点在于如何处理好混音后采样值溢出问题。
2 常见混音方法分析
2.1 加和并箝位方法
当混合后音频强度超出缓冲区数据类型范围时,以最大值来代替,该算法会造成语音波形的人为削峰,在破坏音频信号的同时产生噪声。
2.2 平均化时域线性叠加的方法
就是将采样数据线性叠加后取平均值,该算法的实质是将各路音频的音量减小,随着音频路数的增加或减少,会导致音量忽大忽小甚至声音断续,影响声音效果[3]。
此法最为简单,但是混音效果很不好,存在混音后各路的音频衰减太多,音量偏小,不利于实时的沟通。
2.3 自对齐权重混音算法
自对齐法则是考虑参与混音的音频通道自身特性,以它们自身的比例作为权重,从而决定他们在合成后的输出所占比重,其特点是相对平滑的使关键通道音频更加清晰易分辨,能量小的通道混音后声音变小难分辨[5]。
3 改进的混音算法
上述几个算法各有特点,但都有明显的缺陷,随着混音路数的变化,则会导致各音频流的音量因权重的变化受到不同程度的缩放,从而造成混音后音量大小变化不定。而解决这个问题的关键,就是找到一个与音频路数无关的权重。本文提出的改进混音算法从这一关键问题着手,尝试解决上述缺陷。
(1)算法的基本思想
G.711规范中采用分段量化规则是基于在音频信号中低强度信号比高强度信号出现的几率更高的事实,本文改进算法同样基于这一事实,其基本思想与其类似,采用分段收缩规则,对线性叠加后的采样数值进行收缩来保证不出现溢出,低强度信号采用较大的权重以确保信号的可识别性的同时获得一定收缩比例,而高强度信号采用较小的权重以确保得到相应的收缩比例,同时保证一定的可识别性[5]。
其次,确定各区间的收缩因子。引入基本收缩因子k(k>1),且遵循如下规定:
根据上述讨论,为式(1)加上权重,得出式(3):
(2)算法实现与优化
在本算法的实际应用中,首先考虑基本收缩因子k的取值问题。为了运算方便,k一般取2的整数次幂。根据算法的特点,k值太小会对较大的收缩波形造成整体失真,太大则会导致高强度信号严重失真。所有取k=8或16较好,以下叙述中以k=8为例。同时根据G.7xx系列规范,取Q=16[5]。
表1
由混音算法的计算式可知,只要计算出之后,根据表1所示,就可以求得混音结果。
4 模拟实验与分析
4.1 模拟过程
改进算法的模拟流程图如图1所示:
图1 改进算法模拟流程图
在测试中,使用Cooledit软件录入音频信号时,选取的采样频率为16000Hz,采样精度为16bit,编码格式为PCM,选取单声道,录音时长为1分钟。
将采集好的音频数据利用FileInputStream函数将其读入byte数组,选择需要的算法并使用Java语言编程实现然后进行混音处理,再将结果用FileOutputStream函数输出,最后保存成pcm格式,并进行试听并观察波形。
4.2 结果分析
因为自对齐算法明显优于强/弱对齐算法,所以只选取加和并箝位、平均算法、自对齐算法以及本文叙述的改进算法。
图2 第1路音频输入
图3 第2路音频输入
图4 第3路音频输入
图5 第4路音频输入
图6 加和并箝位算法处理后的结果
图7 平均混音算法后的处理结果
图8 自对齐混音算法处理后的结果
图9 改进算法处理后的结果
从上述结果可以看出,加和算法输出波形比较符合原有波形,但每次振幅溢出后,波形会收缩,然后慢慢扩大;平均算法虽然未改变原有波形,但输出的波形都收缩了4倍,即音量降低了四分之一;自对齐算法输出波形失真较大,所有波形尖峰明显被削弱甚至消失;改进算法结果偏离最少,主要是因为该算法采用非均匀收缩法,增加了高强度信号的收缩比例。
从主观听觉感受来看,加和算法听觉效果较好,但对声音强度较低的那路音频无法识别;平均算法声音很小,而且随着混音路数增加,声音越来越小,而且有明显噪音;自对齐算法输出语音不太自然,而且有明显噪音;改进算法处理的结果不影响声音辨认,低强度语音信号也能轻易识别,即时混音路数增加到12路,输出的音频一样自然流畅,几乎无可觉察噪音。
5 结束语
改进的混音方法通过对线性叠加后的混音数据进行溢出判断,当溢出时,对当前帧增益因子做一定的调整和计算,然后通过对混音后每帧数据进行对比分析,根据对比前后帧的相关参数来不断调整增益调节因子,并当混音出现溢出的时候自动将当前帧做饱和处理,能够避免混音后产生的溢出的噪音,并保持原始波形基本不变,音量大小基本不会受影响。
综上所述,及对比可知,现有直接叠加混音方法在超过6路的音频输入后,不能保持波形的原始形态,且出现采样过载和溢出等问题,导致声音不能完全再现其原始的效果。改进的混音方法在超过6路音频输入后,可以保持波形的原始形态,明显改善了多路混音后存在的采样叠加溢出的问题,使沟通更加顺畅。
[1]Venkat R P,Harrick M V,and Srinivas R.Communication architectures and algorithms for media mixing in multimedia conferences.IEEE/ACM Trans.on Networking,1993,1(1):20-30.
[2]张雄伟,等.现代语言处理技术及应用[M].机械工业出版社,2003.
[3]徐保民,王秀领.一个改进的混音算法[J].电子与信息学报,2007,25(12): 1709-1713.
[4]涂卫平,等.视频会议中多点处理器的研究[J].武汉大学学报,2002:98-106.
[5]王文林,廖建新,等.多媒体会议中新型快速实时混音算法[J].电子与信息学报,2007(29):3.
[6]Hawwa S.Audio mixing for centralized conferences in a SIP environment.ICME’02 Proceedings,2002(2):269-272.
The implementation and application of a multi-channel audio mixing algorithm
HU bin
(Anhui Sun Create Electronics Co.,Ltd,AnHui 230037)
In the audio mixing technology,audio mixing algorithm determines the number and output mix voice quality,but most of the existing mixing algorithm mixing effect is not ideal,mixing road is too small,poor audio quality.This paper introduces the design and implementation of an audio mixing method based on piecewise quantization rules,improve the quality and output mix channel mix,reduce the noise,has good hearing comfort.The application of the method is of great signi fi cance to support the work of audio interaction and improve the user experience.
Audio interaction;Mix channel;Mix quality;User experience
胡斌(1972-),男,安徽合肥人,现供职于安徽四创电子股份有限公司。