发明名称 一种多媒体会议中分布式混音系统
摘要 一种多媒体会议中分布式混音系统,该混音系统包括语音主服务器、语音子服务器以及客户端,所述的客户端连接语音子服务器、所述语音子服务器连接语音主服务器,所述的客户端包括:语音采集模块,用于在与会者说话时,传送通话过程中交谈的音频数据流;语音发送模块,用于将采集的音频数据流通过实时传输协议对语音帧打包发送到语音子服务器;信号能量计算模块,用于在采集到音频数据流之后,计算信号能量E;所述的语音主服务器与语音子服务器呈树状形的网络;语音主服务器实现终选算法,而语音子服务器采用初步选择算法。本发明提供了一种能够减少服务器端的CPU负荷、提高混音效率的多媒体会议中分布式混音系统。
申请公布号 CN101252452B 申请公布日期 2011.05.25
申请号 CN200710067913.5 申请日期 2007.03.31
申请人 红杉树(杭州)信息技术有限公司 发明人 宋旭东;杜武平
分类号 H04L12/18(2006.01)I;H04M3/56(2006.01)I;G10K15/08(2006.01)I 主分类号 H04L12/18(2006.01)I
代理机构 浙江杭州金通专利事务所有限公司 33100 代理人 徐关寿
主权项 一种多媒体会议中分布式混音系统,该混音系统包括语音主服务器、语音子服务器以及客户端,所述的客户端连接语音子服务器、所述语音子服务器连接语音主服务器,所述的客户端包括:语音采集模块,用于在与会者说话时,传送通话过程中交谈的音频数据流;语音发送模块,用于将采集的音频数据流通过传输协议对语音帧打包发送到语音子服务器;其特征在于:所述的语音主服务器与语音子服务器呈树状形的网络;所述的客户端还包括:信号能量计算模块,用于在采集到音频数据流之后,计算信号能量E,音频数据流的当前帧的能量E可由以下公式(1)计算获得: <mrow> <mi>E</mi> <mo>=</mo> <mfrac> <msqrt> <munderover> <mi>&Sigma;</mi> <mrow> <mi>n</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mi>s</mi> <mn>2</mn> </msup> <mo>[</mo> <mi>n</mi> <mo>]</mo> </msqrt> <mn>20</mn> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>式中,{s[n]}n=0,...,N‑1表示音频数据流的输入信号;语音帧的短时平均能量Energy由相邻两帧的信号能量E1和E2计算得出:Energy=(E1+E2)/2        (2);在语音发送模块中,将平均能量存储到打包发送的语音帧的扩展位;混音模块,用于接收语音子服务器回传的终选的音频数据,送入抖动缓冲区队列(Jitter Buffers),经过解码器解码后送入语音帧缓冲区队列,定时激活混音算法处理程序,混音算法处理程序从每列语音帧缓冲区中提取最早到达的语音帧,做语音信号混音处理,混音公式表示为(6): <mrow> <mi>mixing</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>M</mi> </munderover> <mi>input</mi> <mo>[</mo> <mi>j</mi> <mo>]</mo> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>其中,{input[j][i]}i=0,...,N‑1表示第J列语音流所包括的语音帧,经解码后得到的语音输入信号;混音处理后的输出结果被放到mixing[i],M表示语音流的总数;处理完毕送到播放缓冲区队列等待回放;所述的语音子服务器包括:语音接收模块,用于接收来自作为发言者的客户端的音频数据流,并解析语音帧的扩展位,获得各音频数据流当前帧的短时平均能量Energy;初选模块,用于比较各音频数据流的平均能量大小,根据设定的语音流的总数,选中平均能量最大的音频数据流作为初选结果;所述的语音主服务器包括:语音接收模块,用于接收来自各个语音子服务器初选完成的音频数据流,解析语音帧的扩展位,获得各音频数据流当前帧的短时平均能量Energy;语音活动度量计算模块,用于计算音频数据流的语音活动度量ψ,其算式为(3):ψ=α1A1+α2A2    (3)其中A1为当前语音活动,A2为上一次活动;A1由矩形窗W1计算获得,如下形式(4): <mrow> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <msub> <mi>W</mi> <mn>1</mn> </msub> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>t</mi> <mo>=</mo> <msub> <mi>t</mi> <mi>p</mi> </msub> </mrow> <mrow> <msub> <mi>t</mi> <mi>p</mi> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>1</mn> </msub> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>Energy</mi> <mi>t</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>其中,W1即最近语音序列的时间段,tp表示当前的时间段,即当前的矩形窗长度;A2由矩形窗口W2计算得出,表示成(5): <mrow> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <msub> <mi>W</mi> <mn>2</mn> </msub> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>t</mi> <mo>=</mo> <msub> <mi>t</mi> <mi>p</mi> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>1</mn> </msub> </mrow> <mrow> <msub> <mi>t</mi> <mi>p</mi> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>W</mi> <mn>2</mn> </msub> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>Energy</mi> <mi>t</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>其中,W2即上上个语音序列的时间段;终选模块,用于比较各音频数据流的语音活动度量ψ大小,根据设定的语音流的总数,选中语音活动度量ψ最大的音频数据流作为终选结果;音频转发模块,用于将终选得到的音频数据转发到客户端。
地址 310012 浙江省杭州市天目山路176号西湖数源软件园11号楼三楼