一种基于能量优先的服务器端选路混音方法

文档序号:2819013阅读:369来源:国知局
专利名称:一种基于能量优先的服务器端选路混音方法
技术领域
本发明属于数字语音通信技术领域,具体涉及一种基于能量优先的服务器端选路混音方法。
背景技术
在语音通信领域(如在线教育系统、视频会议系统等),多人具有说话权限的情况下,在服务器端进行混音与在客户端进行混音相比可以降低服务器端的网络带宽,从而节省网络带宽成本。在多人交互的语音通信系统中,混音是必不可少的一步,实现方法主要有在服务器端实现和在客户端实现两种。在服务器端实现时,服务器会将接收到的多路语音数据进行解码和混音,然后将混音后的数据编码打包,作为一路语音数据发送给听众;在客户端实现时,服务器不对接收到的多路语音数据进行处理,而是直接将接收到的语音数据转发给听众。这两种实现方案各有优缺点,假设有η个人有说话权下,则在服务器端实现混音时, 由于混音后的语音数据流量从η路变成了 1路,所以优点是可以降低服务器端的带宽需求, 因为要进行解码、混音和编码等操作,则相应的缺点就是会占用较多的服务器端的cpu资源;而在客户端实现混音时,服务器端仅是进行η个人的语音数据转发操作,优点是不会占用服务器端的cpu资源,但是由于服务器端要发送η路语音数据给听众,所以缺点就是会增加对服务器端的带宽需求。考虑到海量用户模式下,对服务器端的带宽要求会大大增加,所以在面向海量用户的系统中,为了节省带宽成本,降低传输延迟从而获得更好的语音效果,在服务器端进行混音将会是比较好的方案。在服务器端进行混音时,传统混音方法是需要对每一路具有说话权限的用户数据进行解码,然后再混音和编码,大多情况下语音的编解码会对服务器端的CPU造成比较大的负担。如果同时具有说话权限的人数太多的话,会造成cpu不够用,从而影响到系统的整体性能,造成声音断续,延迟增大等;而且绝大多数情况下,η个人具有说话权限,并不是说同时有η个人在说话,很可能只是有1个人或者2个人在同时说话,此时如果对η路都进行混音的话,一方面会将不说话的人的杂音带进混音后的语音数据中, 另一方面还增加了混音后的语音数据超出取值范围(一般是16位的short型数据)的概率, 从而造成语音混浊不清、破音等音质下降的问题,因此一般的大型视频会议系统都会严格限制同时具有说话权限的人数。在使用传统方法混音时需要的编解码次数和混音次数如下 n=l时,不需要编解码和混音;
n=2时,需要解码2次,编码1次,混音1次; n>2时,需要解码η次,编码η+1次,混音η+1次。因为当η>2时,除了要将η个人进行1次混音后编码发送给听众外,还需要在这η 个人之间互相操作,首先排除自己的声音,接着进行其他η-1个人的混音,然后将混音后的语音编码打包后发送给自己,所以一共需要η+1次的混音和编码。
可以看出,传统方法中随着η的增加,编解码次数和混音次数都是成线性增加的, 将会对服务器端的cpu造成极大的负担。

发明内容
本发明的目的就是针对现有技术的不足,提供一种基于能量优先的服务器端选路混音方法,利用该方法可使在服务器端混音时降低服务器端混音时的CPU消耗,提高混音后的声音质量,使同时具有说话权限的人数大大得到提高。本发明方法的具体步骤是
步骤(1).客户端根据每一帧的声音数据长度,计算采集到的每一帧声音数据的能量值e,该帧中的每个采样点的绝对值的和即为该帧声音数据的能量值e ; 步骤(2).用编码器对每一帧声音数据进行编码;
步骤(3).客户端将每一帧声音数据的能量值e和编码后的声音数据一起打包成数据包发送到服务器端;
步骤(4).服务器端从数据包中调取出各帧声音数据的能量值e,并从η个用户中选取能量值e最大的m个用户,m值根据需要系统中配置,l^m^n;
如设定m=l,则从η个用户中选择能量值e最大的1个数据包发送给除该能量值e最大的客户以外的其他客户端;
如设定m=2,则从η个用户中选择能量值e最大的2个数据包进行解码、混音和编码,然后将打包后的数据发送给除该2个能量值e最大的客户以外其他客户端,被选中的两个数据包互相转发;
如设定m > 3,则从η个用户中选择能量值e最大的m个数据包进行解码、混音和编码, 然后将打包后的数据发送给除该m个能量值e最大的客户以外其他客户端,被选中的m个客户端,排除掉自己的数据后,将其他m-1个数据包进行混音、编码打包后发送给自己; 步骤(5).客户端收到数据包后,直接解码播放。本发明利用了人的听觉特性,在η (η>0)个人具有说话权限的情况下,通过能量选择原则,选择说话声音最大的m个人(n > m > 1)进行混音,m是在系统中配置的,这样既可以减少混音其他不说话人的杂音,降低破音概率,保证混音后的说话质量,又减少了 cpu的消耗。可以看出,与传统方法中相比,本发明需要的编解码次数和混音次数只是和配置的实际混音人数m有关,和拥有说话权限的人数η并没有关系。在η < 2的情况下,本发明的优势并不明显,但是随着η的增大,如果配置成m=l或者2,本发明的优势就会得到极大的体现,通过实际使用表明,m=2时是一个比较好的取值,在η取值比较大的情况下,不仅极大地降低了 cpu的消耗,而且对混音后的音质影响也很小,可以满足绝大多数的使用情况,使同时具有说话权限的人数η获得大大提高,而不会给服务器的cpu带来多少负担。
具体实施例方式一种基于能量优先的服务器端选路混音方法,具体步骤是
步骤(1).客户端根据每一帧的声音数据长度,计算采集到的每一帧声音数据的能量值e,该帧中的每个采样点的绝对值的和即为该帧声音数据的能量值e ;步骤(2).用编码器对每一帧声音数据进行编码;
步骤(3).客户端将每一帧声音数据的能量值e和编码后的声音数据一起打包成数据包发送到服务器端;
步骤(4).服务器端从数据包中调取出各帧声音数据的能量值e,并从η个用户中选取能量值e最大的m个用户,m值根据需要系统中配置,l^m^n;
如设定m=l,则从η个用户中选择能量值e最大的1个数据包发送给除该能量值e最大的客户以外的其他客户端;
如设定m=2,则从η个用户中选择能量值e最大的2个数据包进行解码、混音和编码,然后将打包后的数据发送给除该2个能量值e最大的客户以外其他客户端,被选中的两个数据包互相转发;
如设定m > 3,则从η个用户中选择能量值e最大的m个数据包进行解码、混音和编码, 然后将打包后的数据发送给除该m个能量值e最大的客户以外其他客户端,被选中的m个客户端,排除掉自己的数据后,将其他m-1个数据包进行混音、编码打包后发送给自己;
混音后的数据S通过直接对m路数据进行求和得到,如果语音采样点是用16位的 short型来表示的,那么混音后的语音数据S的取值范围为32767 > S ^ -32768 ;
步骤(5).客户端收到数据包后,直接解码播放。
由此可见m=l时,不需要编解码和混音;m=2时,需要解码2次、编码1次、混音1 次;m彡3时,需要解码m次,编码m+1次,混音m+1次。
权利要求
1. 一种基于能量优先的服务器端选路混音方法,其特征在于该方法的具体步骤是 步骤(1).客户端根据每一帧的声音数据长度,计算采集到的每一帧声音数据的能量值e,该帧中的每个采样点的绝对值的和即为该帧声音数据的能量值e ; 步骤(2).用编码器对每一帧声音数据进行编码;步骤(3).客户端将每一帧声音数据的能量值e和编码后的声音数据一起打包成数据包发送到服务器端;步骤(4).服务器端从数据包中调取出各帧声音数据的能量值e,并从η个用户中选取能量值e最大的m个用户,m值根据需要系统中配置,l^m^n;如设定m=l,则从η个用户中选择能量值e最大的1个数据包发送给除该能量值e最大的客户以外的其他客户端;如设定m=2,则从η个用户中选择能量值e最大的2个数据包进行解码、混音和编码,然后将打包后的数据发送给除该2个能量值e最大的客户以外其他客户端,被选中的两个数据包互相转发;如设定m > 3,则从η个用户中选择能量值e最大的m个数据包进行解码、混音和编码, 然后将打包后的数据发送给除该m个能量值e最大的客户以外其他客户端,被选中的m个客户端,排除掉自己的数据后,将其他m-1个数据包进行混音、编码打包后发送给自己; 步骤(5).客户端收到数据包后,直接解码播放。
全文摘要
本发明涉及一种基于能量优先的服务器端选路混音方法。传统混音方法中服务器端cpu负担较大。本发明方法首先是客户端将每帧声音数据的能量值和编码后的声音数据发送到服务器端,服务器端从n个用户中选取能量值最大的m个用户如m=1,将能量值最大的数据包发送给其他客户端;如m=2,将能量值最大的2个数据包解码、混音和编码后发送给其他客户端,选中的两个数据包互相转发;如m≥3,将能量值最大的m个数据包解码、混音和编码后发送给其他客户端,选中的m个客户端将除自己数据外的数据包进行混音、编码打包后发送给自己;客户端收到数据包后,直接解码播放。本发明方法可有效降低服务器端混音时的cpu消耗,提高混音后的声音质量。
文档编号G10L19/00GK102436818SQ20111032579
公开日2012年5月2日 申请日期2011年10月25日 优先权日2011年10月25日
发明者松春锋, 胡开荆 申请人:浙江万朋网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1