信号处理的方法及装置、多人会话的方法及系统与流程

文档序号:11585580阅读:310来源:国知局
信号处理的方法及装置、多人会话的方法及系统与流程

本申请涉及信号处理领域,并且更具体地,涉及信号处理的方法以及装置、多人会话的方法和系统。



背景技术:

在虚拟3d音频技术中会用到超高阶段有限长单位冲激响应(finiteimpulseresponse,fir)滤波,在目前的滤波方法中,线性卷积具有无时延,点入点出的特点,但是计算量会非常的大,这对运算处理硬件的性能有较高的要求,使得滤波器根本不能运行在普通的终端设备中。快速卷积是目前应用最多的方案,但是快速卷积又存在较大的组帧延时,在有实时性要求的场合下无法使用。另外,在目前的多人会话的实时通信中,例如,不同地方的客户开电话会议,对于一个客户来说,当其他几个参会者同时讲话时,可能并不能分清到底是谁在讲话,同时讲话的参会者的声音会混作一团而听不清任意一方的讲话,这些讲话者的声音没有层次感,使得听者不仅听不清是谁在讲话,还听不清讲话的内容,对会话的质量和效率会产生很大的影响。



技术实现要素:

本申请提供信号处理的方法以及装置、多人会话的方法和系统,能减少滤波过程中的组帧延时,并将3d音频技术应用于多人会话中,使3d音频技术用于实时通信对硬件的要求大幅降低。

第一方面,提供了一种信号处理的方法,该方法包括:将输入信号序列划分为m个输入信号子序列,m为大于1的整数,每一个输入信号子序列的长度小于滤波器的冲激响应信号序列的长度;根据第i个输入信号子序列的长度,将该冲激响应信号序列分为h个分段信号序列,h为大于1的整数,i的取值为1…m;将该h个分段信号序列中的每个分段信号序列与该第i个输入信号子序列进行卷积计算,得到h个卷积结果;将该h个卷积结果相加,得到第i个输出信号子序列。

第一方面提供的信号处理的方法,采用两级分段的快速卷积方法,事先根据不同的延时要求将输入信号序列进行分段,每一段的长度是事先根据不同的延时要求确定的,然后再根据输入信号子序列的长度,将滤波器的冲激响应信号序列划分成分段信号序列,在对输入信号序列进行滤波时,只需要等到预设长度的输入信号子序列到来时便可以进行卷积计算,获得输出信号子序列,

减少了时延,使得对于具有超长冲激响应信号序列长度的滤波器的时延上有了选择。

在第一方面的一种可能的实现方式中,该每个分段信号序列的长度与该第i个输入信号子序列的长度的差值在预设的阈值范围内。

在第一方面的一种可能的实现方式中,该第i个输入信号序列的长度为大于或等于32的整数。

在第一方面的一种可能的实现方式中,该第i个输入信号子序列的长度为t,该分段信号序列的长度为s,该将该h个分段信号序列中的每个分段信号序列与该第i个输入信号子序列进行卷积计算,得到h个卷积结果,包括:将该每个分段信号序列和该第i个输入信号子序列分别补零,得到长度为p的该分段信号序列和长度为p的该第i个输入信号子序列,其中,p大于或者等于s+t-1;将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行离散傅里叶变换;将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果。

在第一方面的一种可能的实现方式中,该p的值为2的r次方且r为大于或等于1的整数时,该将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行离散傅里叶变换,包括:将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行快速离散傅里叶变换;该将进行该离散傅里叶变换后的该每个分段信号序列分别与进行该离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列,包括:将进行该快速离散傅里叶变换后的该每个分段信号序列分别与进行该快速离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;该对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果,包括:对该h个乘积分别进行反快速离散傅里叶变换,得到该h个卷积结果。

第二方面,提供了一种多人会话的方法,该方法包括:获取y路输入音频信号序列,y为大于1的整数;将该y路输入音频信号序列中的第i路输入音频信号序列划分为c个输入音频信号子序列,每一个输入音频信号子序列的长度小于该第i路对应的左滤波器的冲激响应信号序列的长度和右滤波器的冲激响应信号序列的长度,i的取值为1…y,c为大于1的整数;将第a个输入音频信号子序列分别输入该左滤波器和该右滤波器,a的取值为1…c;根据该第a个输入音频信号子序列的长度,将该左滤波器的冲激响应信号序列分为z个分段信号序列,z为大于1的整数,将该右滤波器的冲激响应信号序列分为x个分段信号序列,x为大于1的整数;将该z个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到z个卷积结果;将该z个卷积结果相加,得到该第a个输入音频信号子序列对应的左声道输出信号子序列;将该x个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到x个卷积结果;将该x个卷积结果相加,得到该第a个输入音频信号子序列对应的右声道输出信号子序列;将y路该左声道输出信号子序列在扬声装置的左声道混音输出,将y路该右声道输出信号子序列在该扬声装置的右声道混音输出。

第二方面提供的多人会话的方法,在多人实时会话时,通过设定与每个客户端对应的滤波器,使得每个客户端的声音对于一个听者来说像是来自不同的方位,采用两级分段的快速卷积方法,在对每路输入音频信号序列进行滤波时,事先根据不同的延时要求将每一路输入音频信号序列进行分段,每一段的长度是事先根据不同的延时要求确定的,然后根据输入音频信号子序列的长度,将每个滤波器的冲激响应信号序列的长度进行分段,在进行卷积计算时,只需要等到预设长度的输入音频信号子序列到来时便可以进行卷积计算,获得输出音频信号子序列,无需等到和滤波器的冲激响应信号序列长度相近的输入音频信号序列到来时才进行卷积计算,对于具有超长冲激响应信号序列长度的滤波器的延时上有了选择,使得实时通信时的延时减低,提高通信效率和用户体验。即将3d音频技术用于多人会话的实时通信场景中,利用声音方位就可以辨别声音来自于那个客户端,并且可以降低实时通信过程中的时延,进而使3d音频技术用于实时通信时对硬件的要求大幅降低。

在第二方面的一种可能的实现方式中,该第a个输入音频信号子序列的长度与该z个分段信号序列中的每一个分段信号序列的长度的差值,以及与该x个分段信号序列中的每一个分段信号序列的长度的差值在预设的阈值范围内。

在第二方面的一种可能的实现方式中,该第a个输入音频信号子序列的长度为大于或等于32的整数。

在第二方面的一种可能的实现方式中,该第a个输入音频信号子序列的长度为f,该左滤波器的冲激响应信号序列的分段信号序列的长度为g,该将该z个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到z个卷积结果,包括:将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为q的该分段信号序列和长度为q的该第a个输入音频信号子序列,其中,q大于或者等于f+g-1;将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换;将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列;对该z个乘积序列分别进行反离散傅里叶变换,得到该z个卷积结果。

在第二方面的一种可能的实现方式中,该第a个输入音频信号子序列的长度为f,该右滤波器的冲激响应信号序列的分段信号序列的长度为r,该将该x个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到x个卷积结果,包括:将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为u的该分段信号序列和长度为u的该第a个输入音频信号子序列,其中,u大于或者等于f+r-1;将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换;将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列;对该x个乘积序列分别进行反离散傅里叶变换,得到该x个卷进结果。

在第二方面的一种可能的实现方式中,该q的值为2的d次方且d为大于或等于1的整数时,该将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换,包括:将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;该将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列,包括;将进行该快速离散傅里叶变换后的该每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到该z个乘积序列;该对该z个乘积序列分别进行反离散傅里叶变换,得到该z个卷积结果,包括:对该z个乘积序列分别进行反快速离散傅里叶变换,得到该z个卷积结果。

在第二方面的一种可能的实现方式中,该u的值为2的b次方且b为大于或等于1的整数时,该将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换,包括:将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;该将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列,包括;将进行该快速离散傅里叶变换后的该每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到该x个乘积序列;该对该x个乘积序列分别进行反离散傅里叶变换,得到该x个卷积结果,包括:对该x个乘积序列分别进行反快速离散傅里叶变换,得到该x个卷积结果。

第三方面,提供了一种信号处理的装置,用于执行上述第一方面及各种实现方式中的信号处理的方法。该装置包括划分单元和计算单元,该划分单元用于将输入信号序列划分为m个输入信号子序列,m为大于1的整数,每一个输入信号子序列的长度小于滤波器的冲激响应信号序列的长度;该划分单元还用于根据第i个输入信号子序列的长度,将该冲激响应信号序列分为h个分段信号序列,h为大于1的整数,i的取值为1…m;该计算单元用于将该h个分段信号序列中的每个分段信号序列与该第i个输入信号子序列进行卷积计算,得到h个卷积结果;该计算单元还用于将该h个卷积结果相加,得到第i个输出信号子序列。

第四方面,提供了一种信号处理的装置,包括处理器和存储器,用于支持该滤波装置执行上述方法中相应的功能。该处理器和该存储器通过通信连接,该存储器存储程序,该处理器用于调用该程序实现上述第一方面及其各种实现方式中的信号处理的方法。

第五方面,提供了一种多人会话的系统,该系统包括收音装置、信号传输装置、y个左声道滤波装置、y个右声道滤波装置和扬声装置,y为大于1的整数,分别用于支持该系统实现上述第二方面的多人会话的方法。

第六方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任一种可能的实现方式中的信号处理的方法的指令。

第七方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行上述第二方面或第二方面的任一种可能的实现方式中的多人会话的方法的指令。

附图说明

图1是现有的信号处理的方法的示意图。

图2是本发明一个实施例的信号处理的方法的示意性流程图。

图3是本发明一个实施例的信号处理的方法的示意图。

图4是本发明一个实施例的多人会话的方法的示意性流程图。

图5是本发明一个实施例的信号处理的装置的示意性框图。

图6是本发明另一个实施例的信号处理的装置的示意性框图。

图7是本发明一个实施例的多人会话的系统的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

3d音频技术,指的是可以通过听到的声音对声音进行定位的技术,即通过听到的声音可以辨别出声音的来源,和现在被人们熟知的立体声不同。在日常的生活中,我们用我们的两只耳朵来听东西,从各处获得信息,再通过人脑的计算来定位声音。虚拟3d音频技术,是利用计算机模拟人脑的3d的音效计算,借助数字化音频设备生成的一种全新的声音。让听者感觉自己身处于虚拟的世界。

在虚拟3d音频技术中会用到超高阶段有限长单位冲激响应(finiteimpulseresponse,fir)滤波,对输入的音频信号进行处理,最终输出我们听到的音频。在目前的虚拟现实音频技术中,单声道声音经过与头相关的传递函数(head-relatedtransferfunction,hrtf)处理为左右两个声道,使声音具备方位感。但是hrtf仅是冲击声源的直达声(干声)在抵达人耳这段空间中传输后的响应,由于缺失周围环境的混响声,即缺失声场信息,导致声音经hrtf处理后,声音仅具备方位感,而在临场感,出头感上表现很差,所以引入后期混响处理极为必要。目前,常用的混响处理有两种方法:采样混响和人工混响。采样混响是将hrtf处理过的左声道和右声道分别和脉冲反应序列进行卷积计算得到处理后的左右声道。采样混响的脉冲反应序列来自真实声场测试,对声场的重建有更逼真效果。在目前的卷积计算方法中,线性卷积具有无时延,点入点出的特点,但是计算量会非常的大,使得滤波器根本不能运行在普通的终端设备中。快速卷积是目前应用最多的方案,但是快速卷积又存在较大的组帧延时,在有实时性要求的场合下无法使用。

公式(1)是两个序列x1(n)和x2(n)进行线性卷积的公式,线性卷积是在时域描述线性系统输入和输出之间关系的一种运算。

从公式(1)中可以看出,设x1(n)为n1点,x2(n)为n2点,“*”为卷积号,则输出y(n)为n1+n2-1点。从这个式子可以看出,当直接采用线性卷积来滤波时,即式中x1(n)为输入信号序列x(n),x2(n)为滤波器冲激响应信号序列h(n),滤波过程是点入点出,无须组帧,故不会带来组帧造成的时延。但是都要进行n1n2次乘法才能算出结果,当滤波器的阶数n2,即h(n)点数超长时,计算量是相当巨大的。因此,当在虚拟3d音频技术中采用直接线性卷积时,计算量巨大,使得滤波器无法运行在普通的终端设备中,对终端设备的要求非常高。

公式(2)是两个序列x1(n)和x2(n)进行圆周卷积的公式,圆周卷积是由他们的周期延伸所来定义的。周期延伸是把原本的函数平移某个周期t的整数倍后再全部加起来所产生的新函数。圆周卷积要求两个序列的长度相同,且输入和输出的长度是相同的。

其中,x1((n-m))n只在m=0到n-1的范围内取值(即以n的圆周移位),rn(n)是矩形窗口函数,即0到n-i的函数值为1,其余函数值为0。

当线性卷积的两个序列都是有限长的,如x(n)为l点,h(n)为m点,则这两个序列的线性卷积和圆周卷积存在一定关系:即当两个序列做圆周卷积的长度满足公式(3)时

n≥l+m-1(3)

这两个序列的圆周卷积和线性卷积结果相同,否则发生混叠两者不同。

由于圆周卷积具有快速计算定理,即圆周卷积定理:两个序列的圆周卷积是这两个序列的离散傅里叶变换的积的反离散傅里叶变换。

例如:将上述有限长度为n的序列x1(n)和x2(n)分别取离散傅里叶变换(discretefouriertransform,dft):

dft[x1(n)]=x1(k),dft[x2(n)]=x2(k)

令y(k)=x1(k)x2(k),则即两个序列的圆周卷积是这两个序列的离散傅里叶变换的积的反离散傅里叶变换。

因此,离散信号的圆周卷积可以经由圆周卷积定理使用快速傅立叶变换而有效率的计算。因此,若原本的线性卷积能转换成圆周卷积来计算,会远比直接计算更快速。由于长度l和长度m的两个有限长度离散信号,做卷积之后会成为长度l+m-1的信号,因此只要把原来两离散信号补上适当数目的零成为n点信号,其中n≥l+m-1,则它们的圆周卷积就与线性卷积相等。即可利用n点快速傅立叶变换作计算。

两个序列线性卷积的快速计算公式包括以下几个步骤:

1、将两个序列x(n)和h(n)分别进行补零使得下式(4)成立:

公式(4)中,x(n)序列的长度为l点,h(n)序列的长度为m点。

2、计算这两个补零后的序列的离散傅里叶变换(discretefouriertransform,dft),x(k)=dft[x(n)],h(k)=dft[h(n)]。

3、计算两个离散傅里叶变化后的序列的乘积y(k)=x(k)h(k)。

4、将第三步得到的乘积求解反傅里叶变换(inversedft,idft)得到结果y(n)=idft[y(k)]。

5、当n为2的幂时,上述的dft和idft可以换成快速离散傅里叶变换(fastfouriertransformation,fft)进一步提高效率。

计算量估计:由于fft和ifft共需要n次乘法,还有步骤3的n次乘法,所以快速卷积算法的乘法次数为而直接线性卷积算法的乘法次数为ml=md。

当m和l相近时,n≈2m,公式(5)是两个序列直接进行线性卷积的计算量和利用快速卷积的计算量的比值k的公式:

通过计算公式(5)可以得出,当m≥32时,k≥1.6,即32阶以上时,快速卷积算法呈现计算量少的优势,且m越大快速卷积算法计算量减少的越明显,例如m=4096时,k=99.9,但同时又可看到,快速卷积算法计算过程需要组帧,即在将两个序列补成长度为n的序列后,需要等到输入的点全部来到时才可以进行卷积,即这些点都到来后一次性计算,一次得出帧结果,这将引入延时。例如,原来l长度为500个样点,m的长度为600个样点,最少需要补成1099个样点,l需要补599个零,m需要补499个零,因此,在进行ftt计算时最少要等到l的500个样点都到了才可以计算,这个过程可以看作是组帧的过程,而等待这500个样点全部到到来时会造成组帧延时。这在具有实时要求的场景中是不期望的出现的,例如,在实时的会话场景中。

对于长序列和段序列的卷积,即当上述过程中x(n)是远远长于h(n)时,则有n=l+m≈l,对于公式(5),此时变换成公式(6)。

在公式(6)中,由于l远大于m,因此k小于1,即快速卷积算法的计算量大于直接卷积算法的计算量,故此从计算量角度快速卷积算法不适合长序列和短序列的线性卷积。

在对实时音频信号处理的过程中,由于音频信号的输入序列x(n)是无限长的,也不可能等音频输入x(n)都到来时,再去一次性处理得到结果,这样会造成很大的组帧延时,对用户的通话效率产生严重的影响。所以长序列和短序列卷积时一般采用分段卷积进行:即将长序列分段成和短序列长度相近的段,然后卷积,利用卷积的性质:卷积的和等于和的卷积,将每小段卷积后的结果相加,得到最终的卷积结果,然后再将卷积后的结果输出,即输出滤波后的信号序列。分段卷积过程如下:

公式(7)是将即将x(n)分成和h(n)长度相等或者相近的段,每段为xi(n),最终将所有的xi(n)加起来得长度即为输入信号的长度,即如公式(8)所示:

当输入的信号序列的长度和短序列的长度相同时,利用快速卷积算法计算每一段xi(n)和h(n)的卷积结果,最后将所有的段的卷积结果进行相加获得最后的卷积结果y(n),即如公式(9)所示:

从一个长序列和短序列进行卷积的过程可以看到,用快速卷积实现音频处理时,由于分段时是将长序列分成和短序列长度相同或者相近的段,分段之后每一小段都是利用快速卷积算法进行卷积运算的,因此组帧的延时取决于该过程中的“短序列”的长度,由于输入信号序列x(n)是无限长的,而分段的标准是以滤波器的冲激响应信号序列的长度为标准对x(n)进行分段,即按照滤波器h(n)的冲激响应信号序列的长度m,将x(n)分成和m长度相近或者相等的段,当输入序列信号x(n)要经过一个具有超长冲激响应信号序列的fir滤波器滤波时,即m的值很大,这时就会产生问题:如果不采用快速卷积,那么运算量巨大,而采用快速卷积时组帧延时又会过大。例如,当m为10000个样点时,即需要等到输入的信号凑够10000个样点才进行计算和输出,会造成很大的延时。

图1是现有信号处理的方法的示意图,如图1所示,输入信号序列x(n)用小正方形表示,x(n)的长度是无限长的,输出信号序列y(n)用小平行四边形表示,假设滤波器的冲激响应信号序列h(n)的长度为9个样点,此时,当每次获取长度为9个样点的输入信号序列x(n)时便进行卷积计算,获得输出信号序列y(n),假设:滤波器每1ms接收到一个输入信号序列样点,滤波器按时间顺序依次获取输入信号序列样点,获取第一个输入信号序列样点的时刻为t0时刻,因此,要等到t0+9ms才能将一次卷积计算的输入信号序列样点数凑够,由于卷积计算过程耗时很少,因此,可以认为滤波器需要等9ms才能处理一次输入信号序列,这个过程可以看作是一个组帧过程,即组帧延时为9ms,然后将处理后的输入信号序列输出。而在实际的信号处理中,滤波器的冲激响应信号序列h(n)是非常长的,因此,会造成很大的组帧延时。在一些具有实时要求的场景中会严重影响用户的体验,例如,在实时的会话或者游戏中。

为了解决上述问题,可以依据fir滤波器设计幅频相近的无限长脉冲响应(infiniteimpulseresponse,iir)滤波器,幅频响应相近的iir滤波器代替fir虽然可以实现运算量大减,没有算法延时,但无论幅频响应还是相频响应都已失真,并且在相频响应要求严格的场合下完全不能使用。另外,在超高阶的fir滤波中直接利用线性卷积或者快速卷积技术,线性卷积技术将造成巨大的计算量使得滤波器根本无法运行在普通终端设备。基于快速傅里叶变换(fastfouriertransformation,fft)的快速卷积技术会带来超长的组帧时延,在有实时性要求的场合无法使用。

基于上述问题,本申请提供了一种信号处理的方法,采用分段快速卷积来实现fir滤波,可以控制分级层次以及级内实现方式,从而解决了超长阶数fir滤波时面临的问题:计算量巨大或滤波时延巨大。进而使3d音频技术用于实时通信时对硬件的要求大幅降低。

图2是本发明的一个实施例的信号处理的方法的示意性流程图,该方法可以由滤波器来执行,或者可以由具有信号处理功能的装置执行,如图2所示,该方法100包括:

s110,将输入信号序列划分为m个输入信号子序列,m为大于1的整数,每一个输入信号子序列的长度小于滤波器的冲激响应信号序列的长度。

s120,根据第i个输入信号子序列的长度,将该冲激响应信号序列分为h个分段信号序列,h为大于1的整数,i的取值为1…m。

s130,将该h个分段信号序列中的每个分段信号序列与该第i个输入信号子序列进行卷积计算,得到h个卷积结果。

s140,将该h个卷积结果相加,得到输出信号序列。

具体而言,在本发明的实施例中,当滤波器的冲激响应信号序列很长时,在s110中,在对输入信号序列进行滤波时,可以不按照滤波器的冲激响应信号序列的长度将输入信号序列进行分段,而是按照对输入信号的延时的要求,事先确定将输入信号序列进行分段后每段的长度,每段的长度可以根据需要处理的信号的时延要求来确定,可以将输入信号序列进行分段后每段的长度设置为和需要的延时长度相等。即将输入信号序列划分为m个输入信号子序列,m为大于1的整数,例如,m为100或者其他任何大于1的整数,每一个输入信号子序列的长度小于滤波器的冲激响应信号序列的长度,每一个输入信号子序列的长度和事先确定的时延长度相等,例如,当需要处理实时的音频信号时,即对信号的实时性要求比较高,可以将输入信号序列分成长度较小的段,即每次只要获取长度符合时延要求的输入信号子序列便可以进行滤波,不用等到和滤波器的冲激响应信号序列的长度相同输入信号序列才能进行卷积。

在对信号处理的过程中,也可将输入信号序列累积到和事先设定好的时延长度相同的长度后进行计算,即每次等输入信号序列累积到预先设定好的长度便开始进行卷积运算。该预先设定好的长度和对输入信号的时延要求相等,即每次需要累计够的输入样点数和对该输入信号需要的延时长度相等,而小于滤波器的冲激响应信号序列的长度。这样每次需要累积够的输入样点数变少了,则累积到满足要求的样点数所需要的时间也变少了,这样可以减少时延。

在s120中,根据第i个输入信号子序列的长度,将滤波器的冲激响应信号序列分段,即根据分段后的每个输入信号子序列的长度,将滤波器的冲激响应信号序列进行分段,对于第i个输入信号子序列的长度,将滤波器的冲激响应信号序列分成h个分段信号序列,h为大于1的整数,i的取值为1…m,每个分段信号序列的长度与输入信号序列的长度的差值可以是在预设的范围内,例如,每个分段信号序列的长度与输入信号序列的长度可以相等或者相近。对滤波器的冲激响应信号序列再次分段的目的是为了利用快速分段卷积算法,即将分段后的每个分段信号序列与输入信号子序列进行卷积,然后将每一段的卷积结果相加,获得最终的输出结果。这样可以进一步的减少计算量。

例如,假设对输入信号序列的延时要求为t,即每次获取长度为t的输入信号序列后开始卷积计算,可以看成将全部需要滤波的信号序列分成长度为t的小段,此时,可以利用公式(10)所示的分段方法:

如公式(10)所示,即在卷积计算之前,将全部需要滤波的信号序列x(n)分段,每一段输入信号子序列xi(n)的长度不是和滤波器的长度相仿,而是根据不同的延时需要设置的长度t,即每一段的输入信号子序列的长度可以为t,或者和t的相近,即组帧延时是由t的大小进行控制的。在获取每一段的输入信号子序列后,计算输入信号子序列和滤波器的冲激响应信号序列的卷积结果时,并不是直接进行计算,而是先根据输入信号子序列xi(n)的长度,将滤波器的冲激响应信号序列再进行分段,这次的长序列变成了滤波器的冲激响应信号序列h(n),短序列为xi(n)。此时,可以根据公式(11)将滤波器的冲激响应信号序列h(n)进行分段,

如公式(11)所示,即将h(n)分成和输入信号子序列xi(n)长度相同或者相近的分段信号序列hj(n),例如,可以分成h个分段信号序列。然后将每一个分段信号序列hj(n)与输入信号子序列xi(n)进行卷积计算,此时,可以利用快速卷积算法进行卷积计算,可以进一步的节省计算量。

在s130中,将该h个分段信号序列中的每个分段信号序列与该输入信号序列进行卷积计算,得到h个卷积结果;

具体而言,在获取符合长度要求的输入信号子序列后,并且已经对滤波器的冲激响应信号序列进行了分段后,将获得的输入信号子序列分别与h个分段信号序列中的每个分段信号序列进行卷积计算,获得到h个卷积结果。

应理解,该卷积结果仅是表示每一个分段信号序列和输入信号子序列的卷积结果,而不应该对本发明实施例的范围产生任何限制。

在s140中,将该h个卷积结果相加,得到第i个输出信号子序列。

具体而言,当将该第i个输入信号子序列分别与每个分段信号序列进行卷积计算之后,获得h个卷积结果,然后利用卷积的性质:卷积的和等于和的卷积,将该h个卷积结果相加,便获得了与该第i个输入信号子序列对应的输出信号子序列,即将该第i个输入信号子序列进行滤波处理完之后的第i个输出信号子序列,即输出结果。

例如,将输入信号序列划分成100个输入信号子序列,每一个输入信号子序列都可以利用上述的方法与滤波器的冲激响应信号序列进行卷积计算,得到滤波结果。

例如,假设滤波器的冲激响应信号序列为10000个样点,采用现有的滤波方法进行滤波时,需要等输入信号序列也凑够10000个样点才能进行卷积计算,获得输出信号序列,组帧延时的时长为凑够这10000个样点所用的时间。采用本发明实施例的信号处理的方法,假设对输入信号的时延要求是1000个样点,可以将输入信号序列分成长度为1000个样点的多个分段,即每次只需要获取长度为1000个样点的输入信号子序列的便可以进行卷积计算。然后根据该输入信号子序列的长度,将滤波器的冲激响应信号序列进行分段,例如,分成10个长度为1000个样点的分段信号序列,此时,只需要凑够长度为1000个样点的输入信号子序列便可以分别和这10个分段信号序列进行卷积计算,由于卷积计算所用的时间远远小于凑够输入信号子序列达到符合要求的样点数所用的时间,因此,每次对长度为1000个样点的输入信号序列进行滤波的造成的延时会远小于每次对个10000个样点进行滤波的造成的延时。而且,将滤波器的冲激响应信号序列分成和输入信号子序列长度相同或者相近的段后再分别进行卷积计算,可以进一步节省计算量。

应理解,在本发明实施例中,“输入信号序列”也可称为“输入序列”或者“输入样点”,“滤波器的冲激响应信号序列的长度”也可称为“滤波器长度”或者“滤波器阶数”,“输出信号序列”也可以称为“输出结果”。本发明实施例在此不作限制。

图3是本发明一个实施例的信号处理的方法的示意图,如图3所示,输入信号序列x(n)用小正方形表示,x(n)的长度是无限长的,输出信号序列y(n)用小平行四边形表示,假设滤波器的冲激响应信号序列h(n)的长度为9个样点,根据输入信号序列时延要求,假设确定了输入信号序列的延时为3个样点,即每次获取三个样点的长度的输入信号序列便可以进行卷积处理。即将输入信号序列分层长度为3的输入信号子序列。此时,根据输入信号子序列的长度,将滤波器的冲激响应信号序列划分为3个分段信号序列,每个段信号序列的长度为3个样点,因此,当每次获取长度为3个样点的输入信号子序列时便可以进行卷积计算,获得输出信号序列,假设:滤波器每1ms接收到一个输入信号子序列样点,滤波器按时间顺序依次获取输入信号子序列样点,获取第一个输入信号子序列样点的时刻为t0时刻,因此,等到t0+3ms时刻就可以将一次卷积计算的输入信号子序列样点数凑够,由于卷积计算和将计算结果输出的过程耗时很少,因此,可以认为滤波器需要等3ms就能处理一次输入信号子序列,这个过程可以看作是一个组帧过程,即组帧的延时为3ms,然后将处理后的输入信号子序列输出。相比于图1所示的按照滤波器的冲激响应信号序列h(n)的长度进行组帧,即组帧的时延为9ms相比,组帧时延明显降低。本发明实施例提供的信号处理的方法,组帧延时不再是由滤波器h(n)的冲激响应信号序列的长度控制,而是事先根据需要处理的信号的延时要求不同设置符合要求的组帧长度,可以控制组帧延时。

本发明实施例提供信号处理的方法,采用两级分段的快速卷积方法,事先根据不同的延时要求,将输入信号序列进行分段,每段的输入信号子序列长度可以根据需要处理的信号的时延要求来确定,然后再根据获取的输入信号子序列的长度,将滤波器的冲激响应信号序列划分成分段信号序列,每个分段信号序列的长度与输入信号子序列的长度的差值在预设的阈值范围内,因此,在对输入信号序列进行滤波时,只需要等到预设长度的输入信号子序列到来时便可以进行卷积计算,获得输出信号子序列,无需等到和滤波器的冲激响应信号序列长度相近的输入信号序列到来时才进行卷积计算,控制了延时,即延时是根据不同类型的输入信号序列的延时要求而设定的,不再是由滤波器的冲激响应信号序列长度来控制。使得对于具有超长冲激响应信号序列长度的滤波器的延时上有了选择。

可选的,作为一个实施例,该每个分段信号序列的长度与该第i个输入信号子序列的长度的差值在预设的阈值范围内。

由公式(6)可知,对于第i个输入信号子序列的长度和分段信号序列的长度相近的情况,在将每个分段信号序列和输入信号序列进行卷积计算时,可以利用上述的快速卷积算法来进行计算,这样,可以在保证延时符合要求的条件下,进一步降低计算量。由于第i个输入信号子序列的长度是预先根据时延要求设定好的,因此可以将滤波器的冲激响应信号序列分成每段长度比较小的分段信号序列,并且该分段信号序列的长度和获取的第i个输入信号子序列的长度的差值在预设的阈值范围内,使得第i个输入信号子序列的长度和分段信号序列的长度相近,该分段信号序列和该第i个输入信号子序列的长度的差值的绝对值可以小于该第i个输入信号子序列的长度的百分之二十五,例如,第i个输入信号子序列的长度为t,分段信号序列的长度为s,则s和t的关系满足公式(12):

可以根据公式(12)来确定分段信号序列的长度。

应理解,该阈值范围可以是其他的数值范围,或者第i个输入信号子序列的长度和分段信号序列的长度满足其他的公式,本申请在此不作限制。

可选的,作为一个实施例,该第i个输入信号子序列的长度为大于或等于32的整数。

具体而言,由公式(5)可知,在每个分段信号序列和第i个输入信号子序列进行卷积计算时,当两个序列的长度相近或者相等,只有当两个序列的长度都大于32,即两个序列的阶数都大于32阶时,每个分段信号序列和第i个输入信号子序列之间利用快速卷积算法的计算量才小于利用线性卷积的计算量,因此,该第i个输入信号子序列的长度为大于或等于32的整数,由于分段信号序列的长度是根据第i个输入信号子序列的长度设置的,可以设置分段信号序列的长度也为大于或等于32的整数,因此,在输入信号序列的长度为大于或等于32的整数时,每个分段信号序列和第i个输入信号子序列分别进行卷积计算可以利用快速卷积算法进行计算,这样,在保证时延符合要求的情况下,可以进一步减少计算量。

应理解,在本发明实施例中,该第i个输入信号子序列的长度也可以小于32,每个分段信号的序列的长度也可以小于32,此时,每个分段信号序列和第i个输入信号子序列分别进行卷积计算时,也可以利用线性卷积算法,本发明实施例在此不作限制。

可选的,作为一个实施例,该第i个输入信号子序列的长度为t,该分段信号序列的长度为s,将该h个分段信号序列中的每个分段信号序列与第i个该输入信号子序列进行卷积计算,得到h个卷积结果,包括:

将该每个分段信号序列和该第i个输入信号子序列分别补零,得到长度为p的该分段信号序列和长度为p的该第i个输入信号子序列,其中,p大于或者等于s+t-1;

将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行离散傅里叶变换;

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;

对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果。

具体而言,当每个分段信号序列和第i个输入信号子序列信号序列之间利用的是快速卷积计算方法进行卷积计算时,当第i个输入信号子序列的长度为t,该分段信号序列的长度为s,利用快算卷积算法进行卷积计算时,先将每个分段信号序列和第i个输入信号子序列分别补零,得到长度为p的该分段信号序列和长度为p的该第i个输入信号子序列,其中,p大于或者等于s+t-1,这样,对长度为p的这两个序列进行圆周卷积的结果就和长度为s的分段信号序列和长度为t的第i个输入信号子序列之间进行线性卷积的结果的相同,而圆周卷积可以利用圆周卷积定理快速计算。即将补零后的每个分段信号序列和补零后的第i个输入信号子序列分别进行离散傅里叶变换;将进行离散傅里叶变换后的每个分段信号序列与进行离散傅里叶变换后的第i个输入信号子序列相乘,得到h个乘积序列;对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果,最终将该h个卷积结果相加,便获得最终的第i个输出信号子序列。

应理解,在本发明实施例中,由于第i个输入信号子序列的长度和将滤波器的冲激响应信号序列分成的分段信号序列的长度相近或者相同,由于计算的过程耗时非常短,可以忽略不计,因此,无论每个分段信号序列和第i个输入信号子序列之间采用什么卷积算法进行计算,对于延时是没有影响的。但是,从计算的角度出发,当第i个输入信号子序列的长度和每个分段信号序列的长度满足一定要求时,即大于或者等于32阶时,每个分段信号序列和第i个输入信号子序列之间采用快速卷积算法还可以节省计算量。

还应理解,对每个分段信号序列和第i个输入信号子序列之间除了利用上述的快算卷积算法进行卷积计算外,可以利用其他卷积算法进行卷积计算,本发明实施例在此不作限制。

还应理解,该乘积序列仅是表示经离散傅里叶变换后的每个分段信号序列与经离散傅里叶变换后的第i个输入信号子序列相乘后的结果,而不应该对本发明实施例的范围产生任何限制。

可选的,作为一个实施例,当利用快算卷积算法计算每个分段信号序列和第i个输入信号子序列之间的卷积结果时,当p的值为2的r次方且r为大于或等于1的整数时,将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行离散傅里叶变换,包括:

将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行快速离散傅里叶变换;

将进行该离散傅里叶变换后的该每个分段信号序列分别与进行该离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列,包括:

将进行该快速离散傅里叶变换后的该每个分段信号序列分别与进行该快速离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;

对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果,包括:

对该h个乘积序列分别进行反快速离散傅里叶变换,得到该h个卷积结果。

具体而言,当将该每个分段信号序列和该第i个输入信号子序列分别补零后,得到长度为p的该分段信号序列和长度为p的该第i个输入信号子序列,而p的值为2的r次方且r为大于或等于1的整数时,此时,上述的快算卷积算法中的离散傅里叶变换和反离散傅里叶变换分别可以变换成快速离散傅里叶变换和反快速离散傅里叶变换,即:将补零后的每个分段信号序列和补零后的第i个输入信号子序列分别进行快速离散傅里叶变换;将进行快速离散傅里叶变换后的每个分段信号序列分别与进行快速离散傅里叶变换后的第i个输入信号子序列相乘,得到h个乘积序列;对h个乘积序列分别进行反快速离散傅里叶变换,得到该h个卷积结果。这样可以更加快算的计算卷积结果,得出该h个卷积结果,进一步提升效率。

本发明实施例提供信号处理的方法,采用两级分段的快速卷积方法,事先根据不同的延时要求,将输入信号序列进行分段,每段的输入信号子序列长度可以根据需要处理的信号的时延要求来确定,然后再根据获取的输入信号子序列的长度,将滤波器的冲激响应信号序列划分成分段信号序列,每个分段信号序列的长度与输入信号序列的长度的差值在预设的阈值范围内,在对输入信号序列进行滤波时,只需要等到满足时延要求的长度的输入信号子序列到来时便可以进行卷积计算,获得输出信号子序列,延时是由用户根据不同的延时要求的控制的,使得对于具有超长冲激响应信号序列长度的滤波器在时延上有了选择。并且,在控制时延的基础上,每个分段信号序列和输入信号子序列之间可以采用快算卷积算法进行卷积计算,还可以进一步降低计算量。从而实现了时延代价和计算量代价的折中,使得对于具有超长的冲激响应信号序列的滤波器在时延性能和计算性能上有了取舍,解决了目前对于具有超长的冲激响应信号序列的滤波器因计算量巨大不能运行在普通的终端设备中,或者由于延时巨大无法应用在具有严格时延要求的场景中的问题。

本发明实施例还提供了一种多人会话的方法,该方法包括:

将该y路输入音频信号序列中的第i路输入音频信号序列划分为c个输入音频信号子序列,每一个输入音频信号子序列的长度小于该第i路对应的左滤波器的冲激响应信号序列的长度和右滤波器的冲激响应信号序列的长度,i的取值为1…y,c为大于1的整数。

将第a个输入音频信号子序列分别输入该左滤波器和该右滤波器,a的取值为1…c。

根据该第a个输入音频信号子序列的长度,将该左滤波器的冲激响应信号序列分为z个分段信号序列,z为大于1的整数,将该右滤波器的冲激响应信号序列分为x个分段信号序列,x为大于1的整数。

将该z个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到z个卷积结果;将该z个卷积结果相加,得到该第a个输入音频信号子序列对应的左声道输出信号子序列。

将该x个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到x个卷积结果;将该x个卷积结果相加,得到该第a个输入音频信号子序列对应的右声道输出信号子序列。

将y路该左声道输出信号子序列在扬声装置的左声道混音输出,将y路该右声道输出信号子序列在该扬声装置的右声道混音输出。

首先简单介绍与头相关的冲激响应(head-relatedimpulseresponse,hrir),hrir是和hrtf对应的时域冲激响应,hrtf实际上就是外耳的频率响应,它定义为耳道中信号的傅里叶变换与自由声场信号傅里叶变换的比值。hrir和hrtf是一一对应的傅里叶变换关系,因此,hrir和hrtf本质是相同的。两者的实质都是一种音效定位的算法,可以利用此算法,通过对输入的音频信号的处理的来判断声音发生的位置。即hrir可以看作是一个滤波器,而对于一个人来说,由于左耳和右耳距离声源的距离以及音频信号传输的路径等不同,一个人的左耳的hrir和右耳的hrir是不同的。应理解,上述的左滤波器和右滤波器可以分别是左hrir滤波器和右hrir滤波器。

下面将结合图4来说明本发明实施例提供的多人会话的方法。其中,左滤波器和右滤波器分别是左hrir滤波器和右hrir滤波器为例进行说明。

图4是本发明一个实施例提供的多人会话的方法的示意性流程图。如图4所示,当有多人进行实时的会话时,例如,如图4所示的甲、乙、丙三个客户会话时,甲、乙、丙三个客户每个客户使用一个自己的客户端,例如,客户端可以是扬声器或者其他收音装置等,本发明实施例在此不作限制。这里将甲、乙、丙三个客户使用的客户端分别叫做甲客户端、乙客户端、丙客户端,当甲、乙、丙三个人会话的时候,三个不同的客户端分别获取了甲、乙、丙三路输入音频信号序列,即这里的y等于3,将这三路输入音频信号序列中的第i路输入音频信号序列划分为c个输入音频信号子序列,这里的i的取值为1…y,c为大于1的整数。即将每一路输入音频信号序列都划分为多个输入音频信号子序列。每一个输入音频信号子序列的长度小于该路输入音频信号序列对应的左hrir滤波器的冲激响应信号序列的长度和右hrir滤波器的冲激响应信号序列的长度。

然后将每路输入音频信号序列分成的每一个输入音频信号子序列分别输入与每个客户端对应的左hrir(hrir-l)滤波器和右(hrir-r)滤波器,即将第a个输入音频信号子序列分别输入该左hrir滤波器和该右hrir滤波器,a的取值为1…c。对于甲、乙、丙三路输入音频信号序列中的每一路输入音频信号序列,分别对应一个左hrir滤波器和右hrir滤波器,这里将与甲客户端所对应的左hrir滤波器和右hrir滤波器分别称为hrir1-l滤波器和hrir1-r滤波器,与乙客户端所对应的左hrir滤波器和右hrir滤波器分别称为hrir2-l滤波器和hrir2-r滤波器,与丙客户端所对应的左hrir滤波器和右hrir滤波器分别称为hrir3-l滤波器和hrir3-r滤波器。对于用户丁而言,同时接收到这三个客户端发来的音频信号,为了可以清楚的区分出不同客户端传来的声音,可以事先设定hrir1-l滤波器和hrir1-r滤波器可以使得来自于甲客户端的声音听起来像是在丁的左前方,设定hrir2-l滤波器和hrir2-r滤波器可以使得来自于乙客户端的声音听起来像是在丁的正前方,设定hrir3-l滤波器和hrir3-r滤波器可以使得来自于丙客户端的声音听起来像是在丁的右前方,或者是其他方位。本发明实施例在此不作限制。

这样,获取了三个不同的客户端的输入音频信号子序列后,将三路不同的输入音频信号子序列分别输入与各自对应的hrir-l滤波器和hrir-r滤波器。其中,每路输入音频信号子序列的长度小于与该路输入音频信号序列对应的hrir-l滤波器的冲激响应信号序列的长度并且小于该hrir-r滤波器的冲激响应信号序列的长度。不同的客户端对应的hrir滤波器是不同的。

对于一个输入音频信号子序列而言,例如,对于来自甲的第a个输入音频信号子序列而言,根据甲的第a个输入音频信号子序列的长度,将该hrir1-l滤波器的冲激响应信号序列分为z个分段信号序列,z为大于1的整数将该hrir1-r滤波器的冲激响应信号序列分为x个分段信号序列,x为大于1的整数。即可以看成该hrir1-l滤波器的冲激响应信号序列包括z个分段信号序列,该hrir1-r滤波器的冲激响应信号序列包括x个分段信号序列,然后将该z个分段信号序列中的每个分段信号序列与甲的第a个输入音频信号子序列进行卷积计算,得到z个卷积结果;将该z个卷积结果相加,得到与甲的第a个输入音频信号子序列对应的左声道输出信号子序列。

将该x个分段信号序列中的每个分段信号序列与甲的第a个输入音频信号子序列进行卷积计算,得到x个卷积结果。将该x个卷积结果相加,得到与甲的第a个输入音频信号子序列对应的右声道输出音频信号子序列。

在对音频信号处理的过程中,可将输入音频信号序列累积到和事先设定好的时延长度相同的长度后进行计算,即每次等输入音频信号序列累积到预先设定好的长度便开始进行卷积运算。该预先设定好的长度和对输入音频信号的时延要求相等,即每次需要累计够的输入样点数和对该输入音频信号需要的延时长度相等,而小于滤波器的冲激响应信号序列的长度。这样每次需要累积够的输入样点数变少了,则累积到满足要求的样点数所需要的时间也变少了,这样可以减少时延。

对于乙的每一个输入音频信号子序列和丙的每一个输入音频信号子序列,分别与各自对应的hrir进行相似的处理,便会得到与乙的每一个输入音频信号子序列对应的左、右声道输出音频信号子序列和与丙的每一个输入音频信号子序列对应的左、右声道输出音频信号子序列。

最后,将三路左声道输出音频信号子序列在扬声装置的左声道混音输出,将三路右声道输出音频信号子序列在扬声装置的右声道混音输出。由于事先设定了与不同客户端对应的hrir滤波器可以使得来自不同客户端的声音来自不同的方位,因此,对于丁来说,便可以通过不同的方位来确定不同的来自不同客户端的声音,从而使的来自甲、乙、丙客户端的声音更有层次感,不容易混作一团而听不清任意一方的话语。

本发明实施例提供的多人会话的方法,在多人实时会话中,通过设定与每个客户端对应的滤波器,使得每个客户端的声音对于一个听者来说像是来自不同的方位,在滤波过程中采用两级分段的快速卷积方法,在对每路输入信号序列进行滤波时,事先根据不同的延时要求将输入音频信号序列进行分段,每一段的长度是事先根据不同的延时要求确定的,然后再根据分成的输入音频信号子序列的长度,将每个滤波器的冲激响应信号序列的长度进行分段,每个分段信号序列的长度与输入音频信号子序列的长度的差值在预设的阈值范围内,在进行卷积计算时,只需要等到预设长度的输入音频信号子序列到来时便可以进行卷积计算,获得输出音频信号子序列,无需等到和滤波器的冲激响应信号序列长度相近的输入音频信号序列到来时才进行卷积计算,使得对于具有超长冲激响应信号序列长度的滤波器的延时上有了选择,可以降低实时通信过程中的延时,提高通信效率和用户体验。即利用该方法将3d音频技术用于多人会话的实时通信场景中,利用声音方位就可以辨别声音来自于那个客户端,多个客户端的声音会不会混作一团而听不清任意一方的讲话,可以降低实时通信的时延,提高用户体验,进而使3d音频技术用于实时通信时对硬件的要求大幅降低,使得3d音频技术用于实时通信时更易于实现。

应理解,在本发明实施中,同时参与会话的客户可以是多人,并且可以设定与每个客户端对应的hrir滤波器使得来自每个客户端的声音来自不同方位,即只要使得来自每个客户端的声音对于一个听者来说是来自于不同的方位,可以区分即可,本发明实施例在此不作限制。

还应理解,上述的左滤波器和右滤波器还可以是其他种类或者功能和左hrir滤波器和右hrir滤波器功能相同或者相似的其他滤波器,本发明实施例在此不作限制。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度与该z个分段信号序列中的每一个分段信号序列的长度的差值,以及与该x个分段信号序列中的每一个分段信号序列的长度的差值在预设的阈值范围内。

由公式(6)可知,对于第a个输入音频信号子序列的长度和每个分段信号序列的长度相近的情况,在将每个分段信号序列和第a个输入音频信号子序列进行卷积计算时,可以利用上述的快速卷积算法来进行计算,这样,可以在保证延时符合要求的条件下,进一步降低计算量。由于第a个输入音频信号子序列的长度是预先设定好的,可以根据该输入音频信号子序列的长度,将hrir滤波器的冲激响应信号序列分成每段长度比较小的分段信号序列。并且该分段信号序列的长度和第a个输入音频信号子序列的长度的差值在预设的阈值范围内,即两者的长度相等或者相近。因此,在将每个分段信号序列和每个输入音频信号字序列进行卷积计算时,可以利用上述的快速卷积算法来进行计算,这样,可以在保证延时符合要求的条件来,进一步节省计算量。

该第a个输入音频信号子序列的长度与该z个分段信号序列中的每一个分段信号序列的长度的差值,以及与该x个分段信号序列中的每一个分段信号序列的长度的差值可以满足上述公式(12),即可以根据公式(12)确定每个分段信号序列的长度。

应理解,该阈值范围可以是其他的数值范围,或者第a个输入音频信号子序列的长度与该z个分段信号序列中的每一个分段信号序列的长度的差值,以及与该x个分段信号序列中的每一个分段信号序列的长度的差值满足其他的公式,本申请在此不作限制。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度为大于或等于32的整数。

具体而言,由公式(5)可知,在每个分段信号序列和第a个输入音频信号子序列进行卷积计算时,当两个序列的长度相近或者相等,只有当两个序列的长度都大于32,即两个序列的阶数都大于32阶时,每个分段信号序列和第a个输入信号子序列之间利用快速卷积算法的计算量才小于利用线性卷积的计算量,因此,该第a个输音频入信号子序列的长度为大于或等于32的整数,由于分段信号序列的长度是根据第a个输入音频信号子序列的长度设置的,可以设置分段信号序列的长度也为大于或等于32的整数,因此,在第a个输入信号子序列的长度为大于或等于32的整数时,每个分段信号序列和第a个输入音频信号序列分别进行卷积计算可以利用快速卷积算法进行计算,这样,在保证时延符合要求的情况下,可以进一步减少计算量。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度为f,该左滤波器的冲激响应信号序列的分段信号序列的长度为g,该将该z个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到z个卷积结果,包括:

将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为q的该分段信号序列和长度为q的该第a个输入音频信号子序列,其中,q大于或者等于f+g-1。

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换。

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列。

对该z个乘积序列分别进行反离散傅里叶变换,得到该z个卷积结果。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度为f,该右滤波器的冲激响应信号序列的分段信号序列的长度为r,该将该x个分段信号序列中的每个分段信号序列与该第a个输入音频信号子序列进行卷积计算,得到x个卷积结果,包括:

将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为u的该分段信号序列和长度为u的该第a个输入音频信号子序列,其中,u大于或者等于f+r-1。

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换。

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列。

对该x个乘积序列分别进行反离散傅里叶变换,得到该x个卷积结果。

具体而言,为了进一步降低计算量,可以利用快速卷积算法来计算每个左hrir滤波器的分段信号序列和每个右hrir滤波器的分段信号序列分别与第a个输入音频信号子序列的卷积结果,此步骤和本发明实施的信号处理的方法中提供的快速卷积步骤类型,为了简洁,在此不再赘述。

可选的,作为一个实施例,该q的值为2的d次方且d为大于或等于1的整数时,该将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换,包括:

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;

该将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列,包括;

将进行该快速离散傅里叶变换后的该每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到该z个乘积序列;

该对该z个乘积序列分别进行反离散傅里叶变换,得到该z个卷积结果,包括:

对该z个乘积序列分别进行反快速离散傅里叶变换,得到该z个卷积结果。

可选的,作为一个实施例,该u的值为2的b次方且b为大于或等于1的整数时,该将补零后的每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换,包括:

将补零后的每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;

该将进行该离散傅里叶变换后的每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列,包括;

将进行该快速离散傅里叶变换后的每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到该x个乘积序列;

该对该x个乘积序列分别进行反离散傅里叶变换,得到该x个卷积结果,包括:

对该x个乘积序列分别进行反快速离散傅里叶变换,得到该x个卷积结果。

具体而言,当每个左hrir滤波器的分段信号序列补零后的长度为2的正整数次方时,和/或每个右hrir滤波器的分段信号序列补零后的长度也为2的正整数次方时,分段信号序列和第a个输入音频信号子序列计算过程中的离散傅里叶变换和反离散傅里叶变换可以分别变换为快速离散傅里叶变换和反快速离散傅里叶变换这样,可以进一步提升效率。

应理解,上述的每路输入音频信号序列与对应的hrir滤波器的冲激响应信号序列进行卷积计算时,可以利用本发明实施例提供的信号处理的方法中的任一种可能的实现方式,本发明实施例在此不作限制。

还应理解,本发明实施例提供的多人会话的方法,不仅可以应用在多人实时会话中,还可以在应用在游戏、虚拟现实等其他场景中,本发明实施例在此不作限制。

还应理解,在本发明的实施例中,上述各过程和各步骤序号的大小并不意味着执行顺序的先后,各过程的执行顺序应该以其功能和内在的逻辑而定,而不应对本发明的实施例的实施过程造成任何限制。

上文中结合图2和图4,详细描述了本发明实施例的信号处理的方法和多人会话的方法,下面将结合图5至图7,详细描述本发明实施例的滤波装置和多人会话的系统。

图5是本发明一个实施例的信号处理的装置的示意性框图。应理解,信号处理的装置实施例与方法实施例相互对应,类似的描述可以参照方法实施例,如图5所示,该信号处理的装置200包括:

划分单元210,用于将输入信号序列划分为m个输入信号子序列,m为大于1的整数,每一个输入信号子序列的长度小于滤波器的冲激响应信号序列的长度。

划分单元210还用于根据第i个输入信号子序列的长度,将该冲激响应信号序列划分为h个分段信号序列,h为大于1的整数;i的取值为1…m。

计算单元220,用于将该h个分段信号序列中的每个分段信号序列与该第i个输入信号序列进行卷积计算,得到h个卷积结果;

该计算单元220还用于将该h个卷积结果相加,得到第i个输出信号子序列。

本发明实施例提供信号处理的装置,采用两级分段的快速卷积方法,事先根据不同的延时要求,将输入信号序列进行分段,每段的输入信号子序列长度可以根据需要处理的信号的时延要求来确定,然后再根据获取的输入信号子序列的长度,将滤波器的冲激响应信号序列划分成分段信号序列,每个分段信号序列的长度与输入信号子序列的长度的差值在预设的阈值范围内,因此,在对输入信号序列进行滤波时,只需要累积到和预设长度的输入信号子序列到来时便可以进行卷积计算,获得输出信号子序列,无需等到和滤波器的冲激响应信号序列长度相近的输入信号序列到来时才进行卷积计算,控制了延时,即延时是根据不同类型的输入信号序列的延时要求而设定的,不再是由滤波器的冲激响应信号序列长度来控制。使得对于具有超长冲激响应信号序列长度的滤波器的延时上有了选择。

可选的,该装置200还可以包括存储单元230,存储单元230可以用于存储划分单元210、计算单元220执行的代码等

可选的,作为一个实施例,该划分单元210划分的该每个分段信号序列的长度与该第i个输入信号子序列的长度的差值在预设的阈值范围内。

可选的,作为一个实施例,该划分单元210划分的该第i个输入信号子序列的长度为大于或等于32的整数。

可选的,作为一个实施例,该划分单元210划分的该第i个输入信号子序列的长度为t,该分段信号序列的长度为s,该计算单元220具体用于:

将该每个分段信号序列和该第i个输入信号子序列分别补零,得到长度为p的该分段信号序列和长度为p的该第i个输入信号子序列,其中,p大于或者等于s+t-1;

将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行离散傅里叶变换;

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;

对该h个乘积序列分别进行反离散傅里叶变换,得到该h个卷积结果。

可选的,作为一个实施例,该p的值为2的r次方且r为大于或等于1的整数时,该计算单元220具体用于:将补零后的该每个分段信号序列和补零后的该第i个输入信号子序列分别进行快速离散傅里叶变换;

将进行该快速离散傅里叶变换后的该每个分段信号序列分别与进行该快速离散傅里叶变换后的该第i个输入信号子序列相乘,得到h个乘积序列;

对该h个乘积序列分别进行反快速离散傅里叶变换,得到该h个卷积结果。

本发明实施例提供信号处理的装置,在对输入信号序列进行滤波时,采用两级分段的快速卷积方法,事先根据不同的延时要求,将输入信号序列进行分段,每段的输入信号子序列长度可以根据需要处理的信号的时延要求来确定,然后再根据获取的输入信号子序列的长度,将滤波器的冲激响应信号序列划分成分段信号序列,每个分段信号序列的长度与输入信号序列的长度的差值在预设的阈值范围内,在对输入信号序列进行滤波时,只需要等到满足时延要求的长度的输入信号子序列到来时便可以进行卷积计算,获得输出信号子序列,延时是由用户根据不同的延时要求的控制的。并且,在控制时延的基础上,每个分段信号序列和输入信号子序列之间可以采用快算卷积算法进行卷积计算,还可以进一步降低计算量。从而实现了时延代价和计算量代价的折中,使得对于具有超长的冲激响应信号序列的滤波器在时延性能和计算性能上有了取舍,解决了目前对于具有超长的冲激响应信号序列的滤波器因计算量巨大不能运行在普通的终端设备中,或者由于延时巨大无法应用在具有严格时延要求的场景中的问题。

图6是本发明另一个实施例的信号处理的装置300的示意框图。如图6所示,该信号处理的装置300包括存储器310和处理器320,该存储器310和处理器320之间通过内部连接通路互相通信,传递控制和/或数据信号。

该存储器310用于存储程序代码;

该处理器320用于调用该程序代码以实现本发明上述各实施例中的信号处理的方法。

图6所示的信号处理的装置300能够实现前述图2或图3实施例中所实现的各个过程,为避免重复,这里不再赘述。

应理解,在本发明实施例中,该处理器320可以是中央处理单元(centralprocessingunit,cpu),该处理器320还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application-specificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器310可以包括只读存储器和随机存取存储器,并向处理器320提供指令和数据。存储器310的一部分还可以包括非易失性随机存取存储器。例如,存储器310还可以存储设备类型的信息。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在实现过程中,上述方法的各步骤可以通过处理器320中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例公开的信号处理的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器320中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中。该存储介质位于存储器310,处理器320读取存储器310中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

图7是本发明一个实施例的多人会话的系统的示意性框图。应理解,多人会话的系统的实施例与方法实施例相互对应,类似的描述可以参照方法实施例,如图7所示,该多人会话的系统400包括收音装置410,信号传输装置420,y个左声道滤波装置430、y个右声道滤波装置440和扬声装置450,y为大于1的整数,其中,

该收音装置410,用于获取y路输入音频信号序列,y为大于1的整数。

该信号传输装置420,用于将该y路输入音频信号序列中的第i路输入音频信号序列划分为c个输入音频信号子序列,每一个输入音频信号子序列的长度小于该第i路对应的左滤波器的冲激响应信号序列的长度和右滤波器的冲激响应信号序列的长度,i的取值为1…y,c为大于1的整数。

该信号传输装置420还用于将第a个输入音频信号子序列分别输入该左滤波器和该右滤波器,a的取值为1…c。

该y个左声道滤波装置430中的第i个左声道滤波装置用于根据所述第a个输入音频信号子序列的长度,将所述左滤波器的冲激响应信号序列分为z个分段信号序列,z为大于1的整数,所述y个右声道滤波装置中的第i个右声道滤波装置用于根据所述第a个输入音频信号子序列的长度,将所述右滤波器的冲激响应信号序列分为x个分段信号序列,x为大于1的整数。

所述y个左声道滤波装置440中的第i个左声道滤波装置还用于将将所述z个分段信号序列中的每个分段信号序列与所述第a个输入音频信号子序列进行卷积计算,得到z个卷积结果;将所述z个卷积结果相加,得到所述第a个输入音频信号子序列对应的左声道输出信号子序列。

该扬声装置用于将y路该左声道输出信号子序列在扬声装置的左声道混音输出,将y路该右声道输出信号子序列在该扬声装置的右声道混音输出。

应理解,图7中只示出了一个左声道滤波装置430、一个右声道滤波装置440,但不应对本发明实施例造成任何限制。本发明实施例提供的多人会话的系统可以包括多个不同的左声道滤波装置和右声道滤波装置,例如,对于由n个客户端参与的实时会话,可以有n个不同的左声道滤波装置和n个不同的右声道滤波装置。该左声道滤波装置和/或右声道滤波装置可以是上述本发明实施例提供的信号处理的装置或者滤波器。上述的左滤波器和右滤波器可以分别是左hrir滤波器和右hrir滤波器。本发明是实例在此不作限制。

还应理解,该左声道滤波装置430可以是左hrir滤波器或信号处理的装置,该右声道滤波装置440可以是右hrir滤波器或者信号处理的装置,本发明是实例在此不作限制。

本发明实施例提供的多人会话的系统,在多人实时会话时,通过设定与每个客户端对应的滤波器,使得每个客户端的声音对于一个听者来说像是来自不同的方位,采用两级分段的快速卷积方法,在对每路输入信号序列进行滤波时,事先根据不同的延时要求将输入音频信号序列进行分段,每一段的长度是事先根据不同的延时要求确定的,然后再根据分成的输入音频信号子序列的长度,将每个滤波器的冲激响应信号序列的长度进行分段,每个分段信号序列的长度与输入音频信号子序列的长度的差值在预设的阈值范围内,在进行卷积计算时,只需要等到预设长度的输入音频信号子序列到来时便可以进行卷积计算,获得输出音频信号子序列,无需等到和滤波器的冲激响应信号序列长度相近的输入音频信号序列到来时才进行卷积计算,使得对于具有超长冲激响应信号序列长度的滤波器的延时上有了选择,可以降低实时通信过程中的延时,提高通信效率和用户体验。即将3d音频技术用于多人会话的实时通信场景中,利用声音方位就可以辨别声音来自于那个客户端,多个客户端的声音会不会混作一团而听不清任意一方的讲话,可以降低实时通信的时延,提高用户体验,进而使3d音频技术用于实时通信时对硬件的要求大幅降低,使得3d音频技术用于实时通信时更易于实现。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度与该z个分段信号序列中的每一个分段信号序列的长度的差值,以及与该x个分段信号序列中的每一个分段信号序列的长度的差值在预设的阈值范围内。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度为大于或等于32的整数。

可选的,作为一个实施例,该该第a个输入音频信号子序列的长度为f,该左滤波器的冲激响应信号序列的分段信号序列的长度为g,该第a个左声道滤波装置具体用于:

将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为q的该分段信号序列和长度为q的该第a个输入音频信号子序列,其中,q大于或者等于f+g-1;

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换;

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列;

对该z个乘积序列分别进行反离散傅里叶变换,得到该z个卷积结果。

可选的,作为一个实施例,该第a个输入音频信号子序列的长度为f,该右滤波器的冲激响应信号序列的分段信号序列的长度为r,该第i个右声道滤波装置具体用于:

将该每个分段信号序列和该第a个输入音频信号子序列分别补零,得到长度为u的该分段信号序列和长度为u的该第a个输入音频信号子序列,其中,u大于或者等于f+r-1;

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行离散傅里叶变换;

将进行该离散傅里叶变换后的该每个分段信号序列与进行该离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列;

对该x个乘积序列分别进行反离散傅里叶变换,得到该x个卷积结果。

可选的,作为一个实施例,该q的值为2的d次方且d为大于或等于1的整数时,该第i个左声道滤波装置具体用于:

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;

将进行该快速离散傅里叶变换后的该每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到z个乘积序列;

对该z个乘积序列分别进行反快速离散傅里叶变换,得到该z个卷积结果。

可选的,作为一个实施例,该u的值为2的b次方且b为大于或等于1的整数时,该第i个右声道滤波装置具体用于:

将补零后的该每个分段信号序列和补零后的该第a个输入音频信号子序列分别进行快速离散傅里叶变换;

将进行该快速离散傅里叶变换后的该每个分段信号序列与进行该快速离散傅里叶变换后的该第a个输入音频信号子序列相乘,得到x个乘积序列;

对该x个乘积序列分别进行反快速离散傅里叶变换,得到该x个卷积结果。

本发明实施例还提供了一种计算机可读介质,用于存储计算机程序代码,该计算机程序包括用于执行上述图2和图3中信号处理的方法的指令和上述图4中多人会话的方法的指令,该可读介质可以是只读存储器(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,ram),本发明实施例对此不做限制。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1