浅谈混音软件处理描述与实现-SKY网络电话
您的位置:SKY网络电话 >> 行业信息>> 浅谈混音软件处理描述与实现

浅谈混音软件处理描述与实现

来源:网上转载-混音软件  发布时间:2014-08-11 15:21:01

混音软件处理的描述

电话会议系统对6711和6729两种编码格式都支持,但由于6729的编码压缩率相当于6711的8倍,和6711相比,在语音进行压缩和混音软件处理的时候时延就非常的明显,因此在本文中我们选择的是6711编码处理算法。

当媒体服务器接收到多路语音流的时候,根据会议规定的混音软件路数,选择其中最大的N路语音,将其混合成一路语音后按6711编码格式回送到各个语音终端,其过程如下:

1.混音软件语音流的输入:各用户终端的语音流以G711a或G711,u的编码格式传入媒体服务器,其采样频率为8000Hz/s,每80字节的语音数据为lOms的RTP,RTP时长可分为多种,如lOms,20ms,0ms。

2.加入会议中:若加入的会议的是新用户,在语音流与会议混音软件器交互时,必须为其赋予一个初始值和一个初始的混音软件权重。

3.媒体服务器将接收到的各路语音流的数据包保存到各路语音流所对应的缓存区中。

4.为了提供对混音软件器的使用,要将以上保存到对应缓存区的数据进行解码。接下来,每lOms进行一次混音软件和原音剔除操作,每次处理160字节的语音数据长度,解码后的语音格式都是PCM。

5.语音的选取:当参与混音软件的语音流数目小于1的时候,直接返回;当参与混音软件的语音流数目大于等于1时,要对语音流做如下循环处理:

重新计算语音的短时能量;

根据新计算出的短时能量对语音流进行降序排列;

根据所排序列进行混音软件权重的调整,一般情况下,对前N路的语音流进行加权处理,N路之后的语音流进行减权处理;

然后根据混音软件权重的大小对语音流进行降序排序;

再次按混音软件权重进行调整,并与前一次的结果进行比较,看是否发生语音切换,即前一次排在N前面的语音流现在排在了N后。出现这种情况时,一般都会对移进前N的语音流进行加权处理,移出前N的语音流进行减权处理。由于语音流有不同的优先级,最后还要对不同优先级混音软件流的权重进行补充;

取会议总的输入语音流M和会议设置的混音软件数目N两者的最小值,将排在此最小值前的语音流进行混音软件处理。

如果参加会议的用户要离开的时候,就将该路语音流的权重值平均分给其他与会者所对应的语音流即可

最后,媒体服务器按采样频率为8000Hz/s,每lOms的TRP包含80字节语音数据的多路语音流分别输出到各个与会者终端。

 

混音软件

 

混音软件处理的实现

每个会议中的语音流在解码后,都会拥有一个链表的结构用于对其进行混音软件处理,每个用户UA都会拥有一个链表节点,一个缓冲队列对应一个用户UA的通道输入,用于存放用户终端接收到的RTP数据包,过滤器NetReceive就是实现该功能的。每个输入缓冲队列对应一个编码缓存DecoderCache,用于存放来自缓冲队列解码后的语音数据,由AudioDecoder过滤器来实现。

同样地,在输出时,每个用户UA也都拥有一个缓冲队列,用于存放混音软件后的语音编码数据,NetSend过滤器会将这些数据分发到各个用户终端。每个输出缓冲队列也对应一个编码缓存EncoderCache,用于对混音软件链表节点中获取的混音软件后的数据进行编码。

从各个用户的DecoderCache解码缓存中获得解码后的原始语音数据是混音软件处理的核心,其功能是将这些原始语音数据保存到混音软件链表节点中,然后经过排序和混音软件算法的处理后,再将这些语音数据放入EncoderCache编码缓存中,经编码处理后,放入用户的输出缓冲队列中,最后发送回各个用户终端。其中混音软件算法的整体流程如下:

将解码后得到的PCM格式的语音数据送到混音软件链表的节点中;

计算混音软件链表上各个节点语音的短时能量;

按短时能量进行降序排列;

调整混音软件权重;

在此按混音软件权重进行降序排列;

选择进行混音软件的语音流并进行优先级的处理;

按照混音软件算法公式进行混音软件;

将链表节点上混音软件后的PCM格式的语音数据传入编码缓存中。

上一条:“四网合一”的构成框架及关健技术
下一条:系统软件卸载器注意的四个细节