数字语声混合的数据交织方法 本发明涉及一种语声混合方法,特别是涉及一种用于分布式多方会议系统的语声混合方法。
目前,应用于多点会议系统的语声混合算法,主要有“选大”算法和“线性叠加”算法两大类,有现成的专用集成电路(ASIC)芯片可供选用,如摩托罗拉(MOTOROLA)公司的“八选一”芯片(MC145611)和敏迪(MITEL)公司的“四路叠加”芯片(MT8924)。“选大”算法(如MC145611)是将需要混合的几路语声信号按数据进行能量比较,根据比较的结果,选择能量最大的一路信号作为输出,产生混合的效果。“线性叠加”算法(如MT8924)则是将输入的几路语声信号逐数据进行幅值求和,从而获得混合的语声信号。选大”算法采取“非此即彼”的选择方法,任何时刻只能有一路输入语声被选中。如果输入话路中有多于一路的语声信号同时激活(即正在讲话),未被选中的话路就会出现“卡音”,即声音被“剪头去尾”,影响混合后地语声信号的音质。对于“线性叠加”算法来说,当输入信号的动态范围较大时,由于叠加后的信号动态范围有较大幅度的增加,输出信号的幅值有可能溢出,导致音质恶化。当输入语声信号的能量较小时,噪声叠加使得输出信号的信噪比随输入话路的增加而急剧下降,造成音质恶化,故“线性叠加”算法一般不适合于超过四路的语声信号的混合。“选大”算法和“线性叠加”算法的共同缺点是复杂度高、造价高,音质差,尤其不适用于分布式的多点会议系统。
本发明的目的是提供一种复杂度低、音质优良、尤其适于分布式多点会议系统语声混合方法。
本发明目的是这样实现的:
它首先对输入到终端的N路数字语声码流,按一定规律进行数据交织,产生一个语声混合码流,然后,以标准取样速率Fc(=8kHz)的N倍(N·Fc)为帧触发频率,对这个语声混合码流进行数模转换(D/A)和低通滤波,在不增大输出语声信号的动态范围和不降低其信噪比的情况下,实现多路语声信号的混合。数据交织形成混合码流的过程:将N路输入数字语声,按其随意选定的次序,进行交织排列,并保证在随后的各帧中次序不变,即N路对应关系不变,使N个数据语声组成一个复帧。混合码流由一个个复帧组成;每个复帧由0到N-1共N个时隙组成;每个时隙固定地包含某一路输入语声的数据,即0时隙包含第0路输入语声的数据,1时隙包含第1路输入语声的数据,依此类推;以上所形成的混合码流送入解码器中,并以标准取样频率Fc的N倍(N·Fc)为帧触发频率对其进行解码,获得的模拟信号就包含了所有的N路输入语声信息。
本发明与现有技术相比所具有的有益效果是:
众所周知,数模转换(D/A)电路的基本功能是将通过解码输入数字信号的包络提取出来,而且,当数字信号的取样频率满足奈奎斯特取样条件时,包络信号就是原来的模拟信号。显然,由上面的说明可知,对任意一个时隙的数字信号,该数模转换(D/A)电路均能满足奈奎斯特取样条件的要求,从而,解码后的输出信号必定包含了全部的N路输入语声信息。输出模拟信号功率由各个时刻的幅值决定,而输出模拟信号在各个时刻的幅值又由相应的输入数字信号的幅值决定。这样,由上述的数据交织方案和复帧结构可以看出,输出模拟信号的功率的功率是所有各路输入模拟信号功率的平均值。从而证明本方案具有以下几个方面的性能优势:
1)输出模拟信号的功率是输入的N路模拟信号功率的平均值,无论参数N有多大,输出模拟信号都不会因为动态范围过大而造成溢出。这样,就克服了线形叠加算法在N较大时容易溢出的缺点。
2)因为输出模拟信号包含了全部的输入信息,该方案又能很好地避免选大算法在N较大时的“卡音”现象,即对输入语声信号的“剪头去尾”。
3)将语声混合与数模转换(D/A)的过程结合在一起完成,既降低系统成本,又获得良好的语声音质。
4)语声混合的多点处理(MP)功能出各个通信终端自行完成,混合的语声信号不必再送回到通信网络上去,使之适用于分布式多方会议系统。
图1 数据交织方法系统图
图2 数据交织过程示意图
图3 数据交织方法方框图
下面结合附图对本发明的具体实施方式作进一步说明;
图1是数据交织方法电路方框图,其中右边虚线方框中的部分为本方法的电路部分。S0、S1、…、SN-1是N个模拟语声信号,以标准取样速率Fc(8KHz)进行模数转换(A/D),得到路数字化语声码流,经通信网络传输到各个通信终端。在每一个通信终端,数字化语声码流首先按照图2.和图3.所示的方法进行数据交织,得到混合后的语声码流。然后,以Fd=N·Fc的帧触发频率,对混合后的语声码流进行数模转换(D/A),再经过低通滤波处理,滤去高频噪声,就得到混合后的模拟语声信号S∑。
数模转换(D/A)模块和通常的数模转换(D/A)电路基本相同,只是其帧触发频率的上限Fmax受到输入语声码流数量N和标准取样速率Fc的限制,要满足条件:Fmax≥N·Fc。数模转换(D/A)模块接收到混合码流后,以帧触发频率Fd=N·Fc对其进行解码。这相当于以Fc的帧触发频率分别对各路输入语声交替进行解码,从而获得包含各路输入语声的混合模拟信号。
图2为数据交织过程示意图,表示了N路输入语声码流经数据交织组成混合码流的过程。其中,是N个输入语声码流,为经数据交织产生的混合语声码流,下标n为数据序号,1/Fc为数据交织前各路输入语声码流中相邻数据之间的间隔,1/Fd为经数据交织后混合码流中相邻数据之间的间隔。数据交织通过由输入语声码流的数据重排来实现,重排的顺序是在电路开始工作前随意确定的,一旦确定,在电路的整个工作过程中,不能改变,即N路对应关系不变。图2中的虚线表明了一种数据排列顺序:
混合码流的第0个数据等于第0路输入码流的第0个数据,即
混合码流的第1个数据等于第1路输入码流的第0个数据,即
混合码流的第N-1个数据等于第N-1路输入码流的第0个数据,即,至此产生第一个复帧。
然后,混合码流的第N个数据等于第0路输入码流的第1个数据,即
混合码流的第N+1个数据等于第1路输入码流的第1个数据,即
混合码流的第2N-1个数据等于第N-1路输入码流的第个样1点,即,至此产生第二个复帧。
以此类推,经上述交织,得到一个包括N路输入语声信息的混合码流。这个数据排列的过程叫数据交织。
图3为本发明的一个具体实施方案。其中数据交织过程由可编程器件(EPM7128)和存储器(RAM,IDT6116)来实现。上层应用软件通过系统总线将从通信网络接收到的N路语声码流及相应地址和控制信号传送到可编程器件。可编程器件一方面不停地将接收到的语声码流,按字节逐个写入存储器,同时又不停地将语声码流的数据从存储器读出来。在存储器的写入和读出过程中,并不是一对一的读入读出操作关系,而是多个字节的读入对应于一个字节的读出。可编程器件通过变换地址信号,使读出存储器地址访问顺序与写入RAM的地址访问顺序有所不同,并维持上述的对应关系,实现语声数据的重排,即数据交织。经过交织的数据队列在可编程器件中完成并一串变换,产生混合码流。数模转换(D/A,MC145480)电路以帧触发频率Fd=N·Fc对混合码流进行解码,经低通滤波器处理,就得到混合后的语声信号。