改进的视频会议系统混音算法及实现

2011-05-22 02:26邹力子
通信技术 2011年2期
关键词:混音声卡视频会议

邹力子, 刘 林

(西南交通大学 信息科学与技术学院,四川 成都 610031)

0 引言

随着互联网技术的快步发展,在互联网上传播的数据类型逐渐增多。视频会议系统应运而生。人类的沟通和交流,主要采用听和说两种方式,语音的传输成为衡量视频会议系统性能最重要的一项指标。因此,对视频会议系统中的混音算法进行研究具有重要意义。

终端对语音信号的处理必须解决的问题是多路的语音数据怎样在本地进行混合以及播放。它会受到自身同步,延时,与视频同步等多方面影响。在实际的应用中,语音经混合后对声卡缓冲区的溢出是其最大的问题。

这里介绍一种混音结构,及新型改进的混音算法。在混音的质量、效率、溢出率、时延及扩展性方面和现有的混音算法进行了比较。实验结果表明,该算法结合了人类语音的特性,根据不同场景的需求,在抑制混音溢出的同时,提高混音的质量,降低时延,具有很好的实用潜力。

1 混音算法分析

声音是由物体振动所产生的一种压力波。响度、音调和音色是声音的三个主要特征。在自然界中,人耳听见的语音则是来自四面八方声音的叠加。对于视频会议系统来说,需要将来自各处的语音数据在时域进行混合。语音信号的抽样及量化都放在了声卡芯片上。常用的声卡为 16位,量化精度多为16 bit。在众多操作系统如Linux中,声卡缓冲区的数据类型通常为signed short,范围在-32768~32767。多路混音后,幅值有可能超出声卡可接受的范围而造成声音的失真。以下是几种常见的解决办法[1]。

(1)直接箝位法

当混合后语音强度超出缓冲区数据类型范围时,以最大幅值来替代。这样直接箝位会造成语音波形的人为削峰,在破坏语音信号特性的同时会促使噪音的产生。

(2)均值化混音

均值化混音在将各路语音进行叠加之后,并除以混音的路数来保证混音后不溢出。但随着混音路数的增加,在多个混音源不在同一时间发声的情景时,来自任一方的语音信号将被多路均分,造成音量较小而不能辨识。

(3)对齐混音

可以说是均值混音的变型,这里主要分为强对齐和弱对齐。在强对齐中,对声强较大的混音路给予较大的混音权重,原话音较大的语音路得到增强,缺点是淹没了话音较小的语音。弱对齐对声强较小的混音路给予较大的混音权重。这样音量较小的混音路话音得到放大,缺点是同时也放大了背景噪音。

以上算法虽然简单,但都存在溢出检测及混音质量方面的问题。下面介绍一种新型改进的混音方案及算法。

2 改进的混音算法

在基于SIP的视频会议系统中,根据信令分发和媒体混合的不同,有多样的构成方式[2]。就媒体流混合方式来说,有集中式混合与终端混合之分[3]。

这里设计如图1的分布式混音模型,相比集中式混音,服务器端不进行媒体流的处理,而只执行会议系统的管理策略。终端接到分发过来的语音数据,进行解码处理后,即开始混音。这种模式不混入终端自身出发的语音包,不受回声的影响。综合来看,这样的混音系统复杂度适中,可减轻会议服务器的压力。延时较集中式混音也有减少,对于实时应用的系统来说,性能的提升很大。

图1 分布式混音模型

这里设计为面向中小企业及学校教学用视频会议系统,参与人数在5人以下。会议参与者共同发声的可能性较小,强烈溢出的几率也比较小。因为语音信号具有短时的相关性,时间通常在10 ms到30 ms,即这里所说的一个帧。这里在设计混音算法时兼顾溢出及平滑处理,并且以语音帧为单位,算法流程如下:

①初始化衰减因子f_see为1;

②统计一帧数据内的信息,包括最大峰值的绝对值,一帧内的短时能量及过零率;

③将最大绝对峰值与16 bit数据宽度做比较,判断是否溢出。如果溢出,求出合适的衰减因子并更新(f_see=MaX/sos,Max为最大幅值绝对值,sos为最大绝对峰值与前一帧衰减因子的乘积),并用最新的衰减因子与本帧数据相乘,输出到声卡缓冲;

④如果没有溢出,则根据短时能量和过零率的计算来动态改变衰减因子。并用最新的衰减因子来输出本帧数据到声卡缓冲;

⑤读取下一帧,再次执行第2步。

当帧长选择为10 ms时,1 s内有100帧,每帧包含80个样本。第二步中短时能量的计算公式如公式(1)。

对溢出的判定,文献[4]中所采用的衰减因子法,对每帧的每个样本和衰减因子相乘。在常用的定点处理器中,较多的乘除法将会大量消耗 CPU的资源,带来时延。随意更改样本间相对大小会导致混合后语音的失真。这里设计按帧对语音信号进行时域平滑处理,它不会改变语音的内容。通过平滑处理,一帧的语音信息按照比例缩小,语音特征参数(如共振峰及基音周期等)的大小不会改变,语音信号的波形和音色也不会改变[5]。

在样本溢出并进行衰减处理后,需要一个机制来进行有效补偿。这里对首先衰减因子进行归一化处理,将衰减因子f_see映射成 320等分进行运算,用整型量 ppp来表达,即f_see=ppp/320,ppp为320与f_see相乘后取整。由于在语音编解码上采用了G.711协议,A律压扩,增强对小信号的量化精度,对小信号的调节较为丰富[6]。这里设置ppp的增减上下限为160到320。在长期混音的过程中,使语音处于小信号敏感的部位,避开粗糙的大信号,调节至人耳舒适的范围。

归一化的衰减因子 ppp的增减依据语音信号过零率的判断,以及相邻两帧短时能量的比较。在第4步进行动态衰减因子的计算时,参考第2步对语音人声的短时能量及过零率的检测。根据文献[7]中的经验值,取10 ms帧的语音过零率阈值为4。当实际检测的过零率在4以上时,粗略判定其为语音信号帧,之后对相邻语音信号帧进行短时能量的比较,当语音的短时能量缩小时逐步增大衰减因子,当语音的短时能量增大时逐步缩小衰减因子。这种对衰减因子的动态恢复,将增强混音后信号的收敛性及健壮性。

3 嵌入式实现及结果分析

为了对比改进的混音算法的性能,将写好的混音算法放在视频会议系统实际运行的嵌入式环境下来测试。该款处理器为TI公司的DaVinci系列片上系统DM6446-594异构双核处理器。其中混音算法放在 ARM 端运行,该 ARM 核为ARM9系列,运行频率为297M。这里共采集3路语音,一路为纯背景噪音,一路为人声,声强靠近溢出位置,另一路为人声,声强适中。两路人声均采用较难区分的男声。测试结果如图2、图3和图4所示。

图2 单纯衰减

图3 定步长单增衰减因子

图4 动态更新衰减因子

由混音后时域波形图可见,图2为采用单纯溢出衰减算法的混音过程。随着混音过程的推进音量逐渐减小。当某一刻出现混音高峰时,造成极小的衰减因子,音量变得很小而不可恢复。图 3为参考文献[5]中采用的定步长单增恢复衰减因子的方法,这种混音方式会使得音量一直维持在最大值附近,声音刺耳,噪音强烈。它增加了下次混音的溢出几率,增加了溢出检测和新的衰减因子计算,消耗资源,带来时延。图4为这里改进的算法,采用按帧衰减,区别于文献[5]的按样本处理,减少了定点处理器的乘除法操作,提升了计算性能。其衰减因子采用归一化细分,并设置上下限。采用短时能量及过零率来对人声识别并动态更新衰减因子。该混音效果听起来平滑,噪音很小、无爆破音,混音后完全没有溢出现象发生。

4 结语

这里提出了按语音信号特征,以语音帧为单位的衰减因子法解决混音溢出问题,在算法上进行改进,提升了溢出处理的性能。并且提出了用短时能量及短时过零率来对人声语音进行粗检测及衰减后的补偿恢复,提升了混音质量。用户可依据网络环境对两种算法进行搭配选择。通过在定点处理器 ARM9上的实现以及结果分析证明,该算法的性能及效果较好。

[1]王文林,廖建新,朱晓明,等.多媒体会议中新型快速实时混音算法[J]. 电子与信息学报,2007,29(03):690-695.

[2]IETF RFC 4353-2006. A Framework for Conferencing with the Session Initiation Protocol[S].

[3]IETF RFC 4245-2005. High-Level Requirements for Tightly Coupled SIP Conferencing[S].

[4]张微,毛敏. 多方电话会议系统中混音溢出问题的一种改进算法[J].电子器件, 2007,30(01):294-296.

[5]周敬利,马志龙,范晔斌,等. 一种新的多媒体会议实时混音方案[J].小型微型计算机系统,2009,30(01):169-172.

[6]ITU-T Recommendation G.711-1988. Pulse Code Modulation of Voice Frequencies[S].

[7]刘波,聂明新,向俊涛. 基于短时能量和过零率分析的语音端点检测方法研究[EB/OL].(2007-02-01)[2010-07-01].http://www.paper.edu.cn/.

猜你喜欢
混音声卡视频会议
省农办主任暨三农重点工作推进视频会议
民政部召开民政领域社会工作推进视频会议
第十五届录音艺术大师班在京举办
Allen&Heath dLive数字调音台新成员C Class
浅谈远程视频会议系统的构建
云技术在视频会议系统中的应用研究
提升笔记本电脑音质
聊天室背景放音乐 为啥我的本本就不行?
风雨二十五载PC声卡春秋录
影音娱乐轻松搞定