发明内容
本发明主要解决的技术问题是针对现有技术中的混音处理之后容易产生音质变的不清晰或者产生暴音,提供一种自适应的混音处理系统和混音处理方法。
本发明所提出的技术方案是:一种混音处理方法,包括:
A、从需要混音的n路音频PCM码流中提取各采样点的量化等级值并初始化各路音频PCM码流的自适应因子为1/n,所述n为大于等于2的整数;
B、以单位时间T为周期分段依次进行混音处理,直到处理完最后一个单位时间,得到混音PCM码流;在当前单位时间内,具体步骤如下:
分别对每路音频PCM码流进行处理,分别对大于0和小于0的量化等级进行累加,大于0的量化等级的累加值为第一累加值ValuePositive,小于0的量化等级的累加值为第二累加值ValueNegative;判断累加后的结果是否超出PCM码流的量化等级n分之一所能表示的范围,
当ValuePositive>MAX*QT/n,或者ValueNegative<MIN*QT/n时,Q为采样频率,MIN为PCM码流表示的最小值,MAX为PCM码流表示的最大值,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子-a;所述a大于等于1/32且小于等于1/16;
当ValuePositive≤MAX*QT/n,且ValueNegative≥MIN*QT/n时,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子+a;所述a大于等于1/32且小于等于1/16;
将与混音PCM码流采样点相对应的每路音频PCM码流采样点的量化等级与该路的自适应因子g[i]进行乘积;
然后把各路的乘积相加,即得该混音PCM码流采样点的第一混合量化等级mix;
根据预定的量化等级的最大值和最小值对第一混合量化等级mix进行限制裁减输出。
本发明的另一目的在于提供一种混音处理系统。一种混音处理系统,包括用于接收多路音频PCM码流的接收模块、与接收模块连接用于对音频PCM码流进行采集的采样模块和对采样模块采集的音频PCM码流进行混音的混音处理模块,其中,所述混音处理模块包括:
与采样模块连接的自适应因子调整模块,所述自适应因子调整模块对各路音频PCM码流,以时间T为单位依次分段调整;当前单位时间T内,提取该路采样点的音频PCM码流的量化等级,分别对大于0和小于0的量化等级进行累加,大于0的量化等级的累加值为第一累加值ValuePositive,小于0的量化等级的累加值为第二累加值ValueNegative;判断累加后的结果是否超出PCM码流的量化等级n分之一所能表示的范围,
当ValuePositive>MAX*QT/n,或者ValueNegative<MIN*QT/n时,Q为采样频率,MIN为PCM码流表示的最小值,MAX为PCM码流表示的最大值,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子-a;所述a大于等于1/32且小于等于1/16;
当ValuePositive≤MAX*QT/n,且ValueNegative≥MIN*QT/n时,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子+a;所述a大于等于1/32且小于等于1/16;
与采样模块连接的加权混音处理模块,利用经过自适应因子调整模块调整的各路音频PCM码流的自适应因子对各路与混音PCM码流采样点相对应的音频PCM码流采样点的量化等级进行加权处理,然后将加权处理后的量化等级相加得到该混音PCM码流采样点的第一混合量化等级mix;
与加权混音处理模块连接的输出模块,用于根据预定的量化等级的最大值和最小值对第一混合量化等级mix进行限制裁减输出。
本发明技术的有益效果是,本发明的混音处理系统和方法,以单位时间T为周期分段依次进行混音处理,根据当前单位时间内的采样点的量化等级在前一单位时间内的自适应因子的基础上得出当前单位时间内的各路音频的自适应因子的大小,提供了一个根据各路音频PCM码流进行自适应调整的自适应因子,使混音处理之后效果较现有技术有所改进,并且本发明的技术方案还不会产生暴音。
具体实施例方式
为了进一步说明本发明的内容,下面结合附图、列举实施例对本发明做详细描述。
本发明的主要目的在于提供一种自适应多路混音的处理方法及系统,以保证混音后的音频质量,解决现有技术的混音处理之后容易产生音质变的不清晰或者产生暴音的问题。本发明的主要技术方案为:一种混音处理方法,包括:
A、从需要混音的n路音频PCM码流中提取各采样点的量化等级值并初始化各路音频PCM码流的自适应因子为1/n,所述n为大于等于2的整数;
B、以单位时间T为周期分段依次进行混音处理,直到处理完最后一个单位时间,得到混音PCM码流;在当前单位时间内,具体步骤如下:
分别对每路音频PCM码流进行处理,分别对大于0和小于0的量化等级进行累加,大于0的量化等级的累加值为第一累加值ValuePositive,小于0的量化等级的累加值为第二累加值ValueNegative;判断累加后的结果是否超出PCM码流的量化等级n分之一所能表示的范围,
当ValuePositive>MAX*QT/n,或者ValueNegative<MIN*QT/n时,Q为采样频率,MIN为PCM码流表示的最小值,MAX为PCM码流表示的最大值,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子-a;所述a大于等于1/32且小于等于1/16;
当ValuePositive≤MAX*QT/n,且ValueNegative≥MIN*QT/n时,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子+a;所述a大于等于1/32且小于等于1/16;
将与混音PCM码流采样点相对应的每路音频PCM码流采样点的量化等级与该路的自适应因子g[i]进行乘积;
然后把各路的乘积相加,即得该混音PCM码流采样点的第一混合量化等级mix;
根据预定的量化等级的最大值和最小值对第一混合量化等级mix进行限制裁减输出。
进一步,所述限制裁减输出,是为了防止出现混音暴音而设置,具体的输出方法为:如果第一混合量化等级mix小于PCM码流表示的最小值MIN,以MIN作为该混音PCM码流采样点的最终混合量化等级输出;如果第一混合量化等级mix大于PCM码流表示的最大值MAX,以MAX作为该混音PCM码流采样点的最终混合量化等级输出;如果第一混合量化等级mix小于等于MAX且第一混合量化等级mix大于等于MIN,以第一混合量化等级mix作为该混音PCM码流采样点的最终混合量化等级输出。
进一步,所述步骤A还包括初始化衰减因子f0=1;
所述步骤B还包括,在当前单位时间内,依次处理每个混音PCM码流采样点,直到当前单位时间内的最后一混音PCM码流采样点,具体步骤如下:将当前混音PCM码流采样点的第一混合量化等级mix乘于当前衰减因子f得到该混音PCM码流采样点的第二混合量化等级数MIX;如果第二混合量化等级数MIX大于MAX,则输出MAX作为该混音PCM码流采样点的混音处理后最终混合量化等级,同时求出f′,所述f′=MAX/(MIX+1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级数MIX小于MIN,则输出MIN作为该混音PCM码流采样点的混音处理后的最终混合量化等级,同时求出f′,f′=MIN/(MIX-1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级数MIX大于等于MIN且小于等于MAX时,则输出第二混合量化等级数MIX作为该混音PCM码流采样点的混音处理后最终混合量化等级,同时判断当前混音PCM码流采样点的衰减因子f是否小于1,若小于1,则下一混音PCM码流采样点的衰减因子=当前混音PCM码流采样点的衰减因子f+STP;若不小于1,则下一混音PCM码流采样点的衰减因子=当前混音PCM码流采样点的衰减因子f。所述STP大于等于(1-f)/32且小于等于(1-f)/16。
进一步,本发明优选所述a=1/16。
进一步,本发明优选所述STP为(1-f)/16。
进一步,所述单位时间T大于0s小于等于1s。优选T为1s。
进一步,本发明优选在步骤A之前还包括:判断各路PCM码流的采样参数是否相同,如果不同,则对该PCM码流进行转换,转换成采样参数相同的PCM码流。
本发明还提供了一种混音处理系统。所述混音处理系统,包括用于接收多路音频PCM码流的接收模块、与接收模块连接用于对音频PCM码流进行采集的采样模块和对采样模块采集的音频PCM码流进行混音的混音处理模块,其中,所述混音处理模块包括:
与采样模块连接的自适应因子调整模块,所述自适应因子调整模块对各路音频PCM码流,以单位时间T为单位依次分段调整,当前单位时间T的自适应因子在前一自适应因子的基础增加或者减少a;所述a大于等于1/32且小于等于1/16;
与采样模块连接的加权混音处理模块,利用经过自适应因子调整模块调整的各路音频PCM码流的自适应因子对各路与采样点相对应的音频PCM码流量化等级进行加权处理,然后将加权处理后的量化等级相加得到该采样点的第一混合量化等级mix;
与加权混音处理模块连接的输出模块,用于,根据预定的量化等级的最大值和最小值对第一混合量化等级mix进行限制裁减输出。所述限制裁减输出的具体方法为:如果第一混合量化等级mix小于PCM码流表示的最小值MIN,以MIN作为该采样点的最终混合量化等级输出;如果第一混合量化等级mix大于PCM码流表示的最大值MAX,以MAX作为该采样点的最终混合量化等级输出;如果第一混合量化等级mix小于等于MAX且第一混合量化等级mix大于等于MIN,以第一混合量化等级mix作为该采样点的最终混合量化等级输出。
进一步,优选所述混音处理模块还包括:
与加权混音处理模块连接的衰减处理模块,将该采样点的第一混合量化等级mix与衰减因子f相乘得到该采样点第二混合量化等级MIX;
与衰减处理模块连接的衰减因子调整模块;如果第二混合量化等级MIX大于MAX,则衰减因子调整模块求出f′,所述f′=MAX/(MIX+1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级MIX小于MIN,则求出f′,f′=MIN/(MIX-1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级MIX大于等于MIN且小于等于MAX时,则判断当前混音PCM码流采样点的衰减因子f是否小于1,若小于1,则下一混音PCM码流采样点的衰减因子等于当前采样点的衰减因子f+STP;若不小于1,则下一混音PCM码流采样点的衰减因子等于当前混音PCM码流采样点的衰减因子f。所述STP大于等于(1-f)/32且小于等于(1-f)/16;
所述输出模块与衰减处理模块连接,用于,如果第二混合量化等级MIX小于MIN,以MIN作为该采样点的最终混合量化等级输出;如果第二混合量化等级MIX大于MAX,以MAX作为该采样点的最终混合量化等级输出;如果第二混合量化等级MIX小于等于MAX且大于等于MIN,以第二混合量化等级MIX作为该混音PCM码流采样点的最终混合量化等级输出。
进一步,优选所述混音处理模块还包括归一化处理模块,所述归一化处理模块连接于采样模块和加权混音处理模块之间,用于判断各路PCM码流的采样参数是否相同,如果不同,则对该PCM码流进行转换,转换成采样参数相同的PCM码流。
进一步,优选所述a=1/16,STP为(1-f)/16。
本发明所述的混音处理系统及方法可以是对至少两路的原始语音的PCM码流进行混音处理,本实施例中以对两路的原始语音的音频PCM码流进行混音为例对本发明的技术方案进行说明。
本发明所采用的方法可以由计算机或者具有计算处理能力的智能设备执行。图1是本发明的具体实施例的混音处理方法流程图。图2是本发明的具体实施例的混音处理系统的结构框图。参照图1,本发明的混音处理流程如下:
步骤1:获取音频PCM码流并统计音频PCM码流通路数n,本实施例的通路数n为2。
步骤2:将各路中的音频PCM码流进行相互比较,判断各路中的音频PCM码流是否一致,如果一致,执行步骤4;否则,执行步骤3。
步骤3,对各路音频PCM码流进行归一化处理。所述归一化处理的步骤如下:
通常不同的音频PCM码流的采样频率都成整数倍关系,因此对于采用频率的转化,通过复制采样点操作,将小采样率的音频PCM码流转换成为大采样频率的音频PCM码流。例如,采样率为8000的音频PCM码流,通过把每个采样点的振幅值都复制一份,作为相邻两个采样点的振幅之,就实现将音频PCM码流转化为16000的采样率了。相反,通过对采样点的整合操作,可以将大采样率的音频PCM码流转换成小采样率的音频PCM码流。例如,采样率为16000的音频PCM码流,通过把每两个采样点的振幅值整合成一个采样点的方法,就将音频PCM码流的采样率转化成8000,整合操作可以采用简单的求平均值的方法完成。
对不同音频PCM码流的采样频率不成整数倍关系得极少数情况,假设转化前的采样频率为RA,转化后的采样频率为RB,则按照公式(1)得到X:
公式(1)中的Y为预先设定的值。接着对X取整得到X`,利用插值算法将音频PCM码流中的每Y个采样点的振幅值平均转换为X`个采样点振幅值,从而完成采样频率的转化。例如,8000采样率的音频PCM码流转换成10000采样率的音频PCM码流且Y设为10,则X=12.2,对X取整得12,则表示需要将10个采样点的振幅值平均转换为12个采样点的振幅之。很显然,上述的公式(1)中的Y的取值和插值算法的选取豆回对精度有影响。
对于量化等级的转化问题,假设有A、B两种量化等级,他们所能表达的最大值振幅范围分别为:MAXA和MAXB,例如,8位带符号量化等级表示的最大振幅值为127;16位带符号量化等级表示的最大值振幅为32767。假设音频PCM码流的量化等级为A时,在某个采样点的振幅值为VA,将量化等级由A转化为B时,则在该采样点的振幅值VB可根据下面公式(2)确定:
在此假设转化后的两路音频PCM码流的采样率都为8000HZ,单声道;量化等级为16位,带符号,因此每个采样点的最大振幅值为32767,最小振幅值为-32768。同样地,本发明的方案也适用于任何采样频率、量化等级的音频PCM码流。
以上步骤为进行混音处理的准备流程,以下步骤为进行混音处理的核心流程。
步骤4:初始化衰减因子f0及各路音频PCM码流的自适应因子g0[i],i为大于零小于等于n的整数。在本发明实施例中设置有针对音频PCM码流混合之后的音频PCM码流进行调节的衰减因子,还设置有分别针对每路音频PCM码流进行调节的自适应因子。
n为音频PCM码流的通路数目,在本实施例中n取2。初始化时,f0=1、各路音频PCM码流的自适应因子相等且都等于1/n;即针对于本实施例,第一音频PCM码流的自适应因子g0[1]=1/2、第二音频PCM码流的自适应因子g0[2]=1/2。
以下进入循环步骤,每次循环以单位时间T为周期。本发明所述单位时间T为大于0s小于等于1s,可以0.5s、0.25s、1s等。所述单位时间T选择越小,本发明的混音处理的效果就越好,最小值为每个单位时间内只有一个采样点,最大值可以为该混音处理的PCM码流的时间。本实施例取所述单位时间为1s。
音频PCM码流的采样参数为采样频率和PCM的量化等级。所述采样频率为QHz,在当前单位时间内,所有采样点的个数为QT。所述振幅数据用PCM的量化等级进行表征。所述PCM的量化等级可以由多位二进制数进行表示,本发明实施例中PCM的量化等级的最大值为MAX,最小值为MIN。本实施例取16位二进制数进行表征PCM的量化等级,所以MAX=32767,MIN=-32768。
步骤5:在当前单位时间内,分别对各路音频PCM码流的振幅数据即PCM码流的量化等级进行采样,然后分别对大于0和小于0的振幅数据采样值进行累加。大于0的振幅数据采样值的累加值为第一累加值ValuePositive,小于0的振幅数据采样值的累加值为第二累加值ValueNegative。
步骤6:判断累加后的结果是否超出PCM的量化等级n分之一所能表示的范围,当ValuePositive>MAX*QT/n,或者ValueNegative<MIN*QT/n时,累加值超过PCM的量化等级n分之一所能表示的范围,执行步骤7。
步骤7:当前单位时间T内的自适应因子g[i]=前一单位时间内的自适应因子-a。本发明中a大于等于1/32且小于等于1/16,本实施例优选a=1/16。
当ValuePositive≤MAX*QT/n,且ValueNegative≥MIN*QT/n时,累加值没有超过PCM的量化等级n分之一所能表示的范围,执行步骤8。
步骤8:当前单位时间T内的自适应因子g[i]=前一单位时间内的自适应因子+a。本发明中a大于等于1/32且小于等于1/16,本实施例优选a=1/16。
如果当前单位时间为第一次处理的单位时间,则前一单位时间内的自适应因子为初始化自适应因子。
步骤9:在当前单位时间内,依次处理得到所有混音PCM码流采样点。处理方法如下:将每路音频PCM码流采样点量化等级samplei与该路的自适应因子g[i]进行乘积,然后把各路的乘积相加,即得该混音PCM码流采样点的第一混合量化等级mix。mix满足公式(3)。
步骤10至12:在当前单位时间内,依次处理所有混音PCM码流采样点,处理完当前单位时间内的最后一个混音PCM码流采样点,判断当前单位时间是否为最后一单位时间,如果是,则结束;反之,进入下一单位时间,返回步骤5。判断当前单位时间是否为最后一单位时间的方法:判断下一单位时间内是否有采样数据,如果有则表示该单位时间不是最后单位时间,反之,该单位时间为最后单位时间。每个混音PCM码流采样点的处理方法如下:将当前混音PCM码流采样点的第一混合量化等级mix乘于当前衰减因子f得到该混音PCM码流采样点的第二混合量化等级数MIX;如果第二混合量化等级数MIX大于MAX,则输出MAX作为该混音PCM码流采样点的混音处理后的PCM的量化等级,同时求出f′,所述f′=MAX/(MIX+1),则下一混音PCM码流采样点的衰减因子为f′+STP。如果第二混合量化等级数MIX小于MIN,则输出MIN作为该混音PCM码流采样点的混音处理后的PCM的量化等级,同时求出f′,f′=MIN/(MIX+1),则下一混音PCM码流采样点的衰减因子为f′+STP。如果第二混合量化等级数MIX大于MIN且小于MAX时,则输出第二混合量化等级数MIX作为该混音PCM码流采样点的混音处理后的PCM的量化等级,同时判断当前混音PCM码流采样点的衰减因子f是否小于1,若小于1,则下一混音PCM码流采样点的衰减因子等于当前混音PCM码流采样点的衰减因子f+STP;若不小于1,则下一混音PCM码流采样点的衰减因子等于当前混音PCM码流采样点的衰减因子f。所述STP大于等于(1-f)/32且小于等于(1-f)/16。本发明优选STP为(1-f)/16。
参照图2,本发明实施例的混音处理系统如下:
一种混音处理系统,包括用于接收多路音频PCM码流的接收模块100、与接收模块100连接用于对音频PCM码流进行采集的采样模块200和对采样模块采200集的音频PCM码流进行混音的混音处理模块,其中,所述混音处理模块包括:
与采样模块200连接的归一化处理模块300,用于判断各路PCM码流的采样参数是否相同,如果不同,则对该PCM码流进行转换,转换成采样参数相同的PCM码流。所述归一化处理模块300进行如下转换:以一个PCM码流为基准,其它的向其转换。
I、将不同采样频率的PCM码流转化为相同采样频率的PCM码流的方法是:按照公式
得到X,其中转化前的采样频率为R
A,转化后的采样频率为R
B,Y为预先设定的值。接着对X取整得到X`,利用插值算法将音频PCM码流中的每Y个采样点的振幅值平均转换为X`个采样点振幅值。
II、将不同量化等级的PCM码流转化为相同量化等级的PCM码流的方法:通过公式
确定转化量化等级数后的PCM码流的各振幅值,其中MAX
A为转化前的量化等级所能表达的最大振幅值,V
A为转化前PCM码流的某振幅值,MAX
B为转化后的量化等级所能表达的最大振幅值,V
B为转化后PCM码流与V
A相对应的振幅值。
与归一化处理模块300连接的自适应因子调整模块800,所述自适应因子调整模块800对各路音频PCM码流,以单位时间T为单位依次分段调整,当前单位时间T的自适应因子在前一自适应因子的基础增加或者减少a;所述a大于等于1/32且小于等于1/16;所述自适应因子调整模块800具体进行如下调整:
在当前单位时间内,分别对每路音频PCM码流进行处理,分别对大于0和小于0的量化等级进行累加,大于0的量化等级的累加值为第一累加值ValuePositive,小于0的量化等级的累加值为第二累加值ValueNegative;判断累加后的结果是否超出PCM码流的量化等级n分之一所能表示的范围,
当ValuePositive>MAX*QT/n,或者ValueNegative<MIN*QT/n时,Q为采样频率,MIN为PCM码流表示的最小值,MAX为PCM码流表示的最大值,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子-a;所述a大于等于1/32且小于等于1/16;
当ValuePositive≤MAX*QT/n,且ValueNegative≥MIN*QT/n时,自适应因子做如下处理:
当前单位时间内的自适应因子g[i]=前一单位时间内的自适应因子+a;所述a大于等于1/32且小于等于1/16;
与归一化处理模块300连接的加权混音处理模块400,利用经过自适应因子调整模块800调整的各路音频PCM码流的自适应因子对各路与混音PCM码流采样点相对应的音频PCM码流采样点量化等级进行加权处理,然后将加权处理后的量化等级相加得到该混音PCM码流采样点的第一混合量化等级mix;
与加权混音处理模块400连接的衰减处理模块500,将该混音PCM码流采样点的第一混合量化等级mix与衰减因子f相乘得到该混音PCM码流采样点第二混合量化等级MIX;
与衰减处理模块500连接的衰减因子调整模块600;用于,如果第二混合量化等级MIX大于MAX,则衰减因子调整模块求出f′,所述f′=MAX/(MIX+1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级MIX小于MIN,则求出f′,f′=MIN/(MIX-1),则下一混音PCM码流采样点的衰减因子为f′+STP;如果第二混合量化等级MIX大于等于MIN且小于等于MAX时,则判断当前混音PCM码流采样点的衰减因子f是否小于1,若小于1,则下一混音PCM码流采样点的衰减因子=当前混音PCM码流采样点的衰减因子f+STP;若不小于1,则下一混音PCM码流采样点的衰减因子=当前混音PCM码流采样点的衰减因子f。所述STP大于等于(1-f)/32且小于等于(1-f)/16;
与衰减处理模块500连接的输出模块700,用于,如果第二混合量化等级数MIX小于MIN,以MIN作为该混音PCM码流采样点的最终混合量化等级输出;如果第二混合量化等级数MIX大于MAX,以MAX作为该混音PCM码流采样点的最终混合量化等级输出;如果第二混合量化等级数MIX小于等于MAX且大于等于MIN,以第二混合量化等级数MIX作为该混音PCM码流采样点的最终混合量化等级输出。
进一步,优选所述a=1/16,STP为(1-f)/16,可以使混音处理后的声音更加细腻和柔和。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。