音频增益控制方法、系统、设备和存储介质与流程

文档序号:22681685发布日期:2020-10-28 12:43阅读:183来源:国知局
音频增益控制方法、系统、设备和存储介质与流程

本发明涉及语音处理技术领域,尤其涉及一种音频增益控制方法、系统、设备和存储介质。



背景技术:

在安防摄像头的应用场景中,或在语音通话中,常常出现如下问题:采集到的音量忽大忽小,不平稳,给用户造成了很不好的体验。为此,我们需要一些处理手段,当音频声超过预设响度阈值后,将过大的音频帧的响度整体压低。但是压低一些帧的音量极易造成音频失真。为此,需要一些控制音量的方法,学术界将这类问题称作自动增益控制(automaticgaincontrol)。在音频处理行业中,常用的增益控制方法,首先通过使用vad(语音活动检测)判断出当前帧的vad属性,然后根据历史信号平均能量值及峰值,计算当前帧的增益值。但是这种方法比较粗糙,在很多场景中(如安防监控),信号的音量值变化范围非常大,因此计算而得的平均能量值很难反映当前信号的真实情况,从而导致音频增益控制不够灵敏。



技术实现要素:

本发明实施例的目的是提供一种音频增益控制方法、系统、设备和存储介质,能自动控制音频的增益,且提高音频增益控制的灵敏性。

为实现上述目的,本发明实施例提供了一种音频增益控制方法,包括:

对音频中的每一帧进行活性检测,以确定当前帧的类型;其中,所述当前帧的类型包括静音帧和激活帧;

当所述当前帧的类型为激活帧时,将所述激活帧压入数组;

在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;其中,每一帧中包含若干个音频点;

根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制。

作为上述方案的改进,所述压缩器参数包括阈值、压缩比和启动时间;则,所述根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,包括:

当当前音频点的幅值大于所述阈值时,在所述数组中查询幅值小于所述阈值的另一音频点;

当查询到幅值小于所述阈值的所述另一音频点时,判断所述另一音频点到所述当前音频点的第一路径长度是否大于或等于所述启动时间;

若是,按照所述压缩比对所述当前音频点进行压缩;若否,不处理所述当前音频点。

作为上述方案的改进,所述在所述数组中查询幅值小于所述阈值的另一音频点,包括:

以所述当前音频点为查询起点,并以所述数组中的起点为查询终点;

从所述查询起点向所述查询终点查询;

获取在查询过程中首次出现幅值小于所述阈值的另一音频点。

作为上述方案的改进,所述压缩器参数还包括释放时间;则,所述根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,还包括:

当当前音频点的幅值小于所述阈值时,在所述数组中查询幅值大于所述阈值的另一音频点;

当查询到幅值大于所述阈值的所述另一音频点时,判断所述另一音频点到所述当前音频点的第二路径长度是否小于所述释放时间;

若是,按照所述压缩比对所述当前音频点进行压缩;若否,不处理所述当前音频点。

作为上述方案的改进,所述对音频中的每一帧进行活性检测前,还包括:

确定压缩器参数的初始值。

作为上述方案的改进,所述方法还包括:

当所述当前帧的类型为静音帧时,判断所述数组是否为空;

若是,则确定下一帧的类型;若否,则更新所述压缩器参数;

当判定所述数组不为空后,确定所述静音帧内每一个音频点的幅值;

根据所述音频点的幅值和更新后的压缩器参数对所述音频点进行增益控制;

清空所述数组。

作为上述方案的改进,当判定所述数组不为空时,所述数组中存在激活块;其中,所述激活块包括若干个连续的激活帧;则,所述更新所述压缩器参数,包括:

计算所述激活块中所有音频点的第一总能量;

计算所述数组中幅值超过所述阈值的音频点的总数量和第二总能量;

根据所述第一总能量、所述总数量和所述第二总能量按照预设的压缩器参数更新策略更新所述压缩器参数。

为实现上述目的,本发明实施例还提供了一种音频增益控制系统,包括:

当前帧类型确定模块,用于对音频中的每一帧进行活性检测,以确定当前帧的类型;其中,所述当前帧的类型包括静音帧和激活帧;

数组压入模块,用于当所述当前帧的类型为激活帧时,将所述激活帧压入数组;

音频点幅值确定模块,用于在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;其中,每一帧中包含若干个音频点;

增益控制模块,用于根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制。

为实现上述目的,本发明实施例还提供了一种音频增益控制设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一实施例所述的音频增益控制方法。

为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任一实施例所述的音频增益控制方法。

与现有技术相比,本发明实施例公开的音频增益控制方法、系统、设备和存储介质,首先,对音频中的每一帧进行活性检测,以确定当前帧的类型;然后,当所述当前帧的类型为激活帧时,将所述激活帧压入数组;在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;最后,根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,能自动控制音频的增益,且提高音频增益控制的灵敏性。

附图说明

图1是本发明实施例提供的一种音频增益控制方法的流程图;

图2是本发明实施例提供的一种音频增益控制系统的结构框图;

图3是本发明实施例提供的一种音频增益控制设备的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1是本发明实施例提供的一种音频增益控制方法的流程图,所述音频增益控制方法包括:

s11、对音频中的每一帧进行活性检测,以确定当前帧的类型;其中,所述当前帧的类型包括静音帧和激活帧;

s12、当所述当前帧的类型为激活帧时,将所述激活帧压入数组;

s13、在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;其中,每一帧中包含若干个音频点;

s14、根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制。

值得说明的是,本发明实施例所述的音频增益控制方法可以由播放器执行实现。

具体地,在执行步骤s11前,还包括步骤s10:确定压缩器参数的初始值。

压缩器是一种随着输入信号电平增大而本身增益减小的放大器,作用是改变输入与输出信号的电平比例。压缩器有4个重要参数:阈值、压缩比、启动时间、释放时间。值得说明的是,所述启动时间和所述释放时间以所述音频点的点数为基准。

所述阈值(threshold)为信号电平阈值,与所述启动时间、所述释放时间一同决定了何时对信号进行压缩。所述压缩比(ratio)为超过所述阈值部分的输出与输入的比例,假设为1:1,则原样输出;假设比例为2:1,表示超过threshold的电平被压缩为原来的1/2。所述启动时间(attacktime)决定了当电平峰值超过所述阈值多长时间后开始进行压缩。所述释放时间(releasetime)决定了当电平峰值低于所述阈值多长时间后停止压缩。

示例性的,假设所述阈值为6、所述启动时间为1个音频点、所述结束时间为2个音频点,对于有一系列音频帧的电平(能量)值为:1,2,3,7,7,7,8,8,8,1,2,1,2。则将要被压缩处理的为“7,7,8,8,8,1,2”的音频点。这样做主要是起到平滑作用,让压缩效果不突兀。

压缩器在音频处理及音乐制作的后期处理中运用广泛。对于一条特定的音轨,压缩器可以使音量更加紧实。但是在设备端,我们无法预知音频流的最大音量,从而无法较好地确定各增益值。在后文中,本发明实施例中使用自适应的阈值方法,动态调整其中几个参数的值。

具体地,在步骤s10中,压缩器的四个参数中,动态自适应地调整阈值vt,压缩比rt,由经验预设值确定启动时间at与释放时间lt。

示例性的,首先需要通过实验来确定出保证系统音质不失真的最大音量vmax。声音是不能长期超过vmax的。根据vmax,我们也能够确定音量调控的下限vmin=a*vmax,a是一个预设比例因子,通常可取0.7或0.8左右。vmin保证了压缩器的压缩比例不能低于一个阈值,以免造成整体音量过小。启动时间at通常设置为2-5个音频点,从而避免噪声的干扰。释放时间lt一般根据人耳听觉效果来主观确定,一般可取100个音频点左右(8000hz采样率下)。

所述阈值vt可初始化为vmax或vmin,或者取vmax至vmin之间的一个值。压缩比rt初始化为1,即不压缩。还需要一个记录当前block(激活块)中已有帧信息的数组array。其中,数组array仅记录了包含此帧在内的最近的一个block内的信息,block包括至少一个激活帧,当block包括至少两个激活帧时,该至少两个激活帧为连续的激活帧,block前的一个帧与之后的一个帧都为静音帧。比如有一系列帧的vad结果为:0,1,1,1,0,1,则第一个block为2≤t≤4的连续三个帧:1,1,1,第二个block为最后一个帧,其中,t表示第t个帧。

具体地,在步骤s11中,对音频中的每一帧进行活性检测。值得说明的是,所述音频被分成若干个帧,帧长一般固定都是w=256或128,w为每帧的音频点数量。可根据历史信息判断当前帧是否为静音状态(vad=0,即静音帧)还是激活状态(vad=1,即激活帧)。静音状态表示此时仅有背景噪声,没有我们感兴趣的声音。激活状态表示此帧中包含有我们感兴趣的声音。值得说明的是,对音频进行活性检测的方法可参考现有技术中的音频活性检测方法,本发明在此不做具体限定。

具体地,在步骤s12中,当所述当前帧的类型为激活帧时,即vad=1,则将所述当前帧压入array数组。例如有如下若干帧:0,1,1,1,0,1。当t=2时,vad=1,将当前帧压入array数组。

具体地,在步骤s13中,在将所述激活帧压入数组后,确定所述激活帧内每一个音频点x(i)的幅值;其中,每一帧中包含若干个音频点,依次处理此帧内每一个音频点。

具体地,在步骤s14中,所述根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,包括步骤s141~s143。

s141、当当前音频点的幅值的绝对值大于所述阈值时,即满足|x(i)|>vt,在所述数组中查询幅值小于所述阈值的另一音频点。

示例性的,以所述当前音频点为查询起点,并以所述数组中的起点为查询终点;从所述查询起点向所述查询终点查询;获取在查询过程中首次出现幅值小于所述阈值的另一音频点,即在第j个音频点(j<i)首次遇到|x(j)|<vt时,取x(j)为所述另一音频点。

s142、当查询到幅值小于所述阈值的所述另一音频点x(j)时,判断所述另一音频点到所述当前音频点的第一路径长度是否大于或等于所述启动时间;其中,所述第一路径长度满足l1=i-j,判断是否满足l1>at。

s143、若l1≥at,按照所述压缩比rt对所述当前音频点进行压缩,满足x(i)=x(i)*rt;若l1<at,则所述当前音频点处在压缩器的启动时间中,不处理所述当前音频点。

进一步地,在步骤s14中,所述根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,还包括步骤s144~s146。

s144、当当前音频点的幅值小于所述阈值时,即满足|x(i)|<vt,在所述数组中查询幅值大于所述阈值的另一音频点。

示例性的,以所述当前音频点为查询起点,并以所述数组中的起点为查询终点;从所述查询起点向所述查询终点查询;获取在查询过程中首次出现幅值大于所述阈值的另一音频点,即在第j个音频点(j<i)首次遇到|x(j)|>vt时,取x(j)为所述另一音频点。

s145、当查询到幅值大于所述阈值的所述另一音频点时,判断所述另一音频点到所述当前音频点的第二路径长度是否小于所述释放时间;其中,所述第二路径长度满足l2=i-j,判断是否满足l2<lt。

s146、若l2<lt,按照所述压缩比rt对所述当前音频点进行压缩;若l2≥lt,认为所述当前音频点已经超过了压缩器释放时间,不处理所述当前音频点。

可选的,在步骤s11中对音频中的每一帧进行活性检测后,所述方法还包括步骤s21~s25:

s21、当所述当前帧的类型为静音帧时,即vad=0,判断所述数组是否为空;

s22、若array数组为空,则返回步骤s11确定下一帧的类型;若array数组不为空,表明此时已经检测到了block的结尾,则更新所述压缩器参数;

s23、当判定所述数组不为空后,确定所述静音帧内每一个音频点的幅值;

s24、根据所述音频点的幅值和更新后的压缩器参数对所述音频点进行增益控制;此时增益控制的过程可参考步骤s141~s146,在此不再赘述;

s25、清空所述数组。

示例性的,例如有如下若干帧:0,1,1,1,0,1,在t=5时,vad=0,此时array数组不为空,array中其实是存储了第t=2,3,4时帧的信息,在更新完压缩器参数且对所述静音帧的每一个音频点进行压缩后,清空array数组。

进一步地,在步骤s22中判定所述数组不为空时,所述数组中存在激活块,此时表明已经检测到了一个完整的block,由block统计特性更新所有参数。所述更新所述压缩器参数,实际上为更新所述压缩器的阈值和压缩比,包括步骤s221~s224。

s221、计算所述激活块中所有音频点的第一总能量eb,满足以下公式:

其中,f为这个array中已存储的帧数量;w是每帧的音频点数;x(i,j)为第i帧第j个音频点。

s222、计算所述数组中幅值超过所述阈值vt的音频点的总数量nt和第二总能量et,其中,所述第二总能量et满足以下公式:

s223、根据所述第一总能量、所述总数量和所述第二总能量按照预设的压缩器参数更新策略更新所述压缩器参数。

具体地,在步骤s224中,首先更新压缩器的阈值vt,满足以下公式:

其中,保证了这个激活块整体音量较小时,有更小的更新幅度;α为预设学习率,0-1之间,一般取0.1左右。

其次更新压缩比rt,满足以下公式:

其中,rt是历史统计量,α和上面一样,是一个预设的学习率。如果当前帧超过阈值部分点的平均值较大,则下次就应该用更大的压缩比。

与现有技术相比,本发明实施例公开的音频增益控制方法,首先,对音频中的每一帧进行活性检测,以确定当前帧的类型;然后,当所述当前帧的类型为激活帧时,将所述激活帧压入数组;在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;最后,根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,能自动控制音频的增益,且提高音频增益控制的灵敏性。

参见图2,图2是本发明实施例提供的一种音频增益控制系统10的结构框图,所述音频增益控制系统10包括:

当前帧类型确定模块11,用于对音频中的每一帧进行活性检测,以确定当前帧的类型;其中,所述当前帧的类型包括静音帧和激活帧;

数组压入模块12,用于当所述当前帧的类型为激活帧时,将所述激活帧压入数组;

音频点幅值确定模块13,用于在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;其中,每一帧中包含若干个音频点;

增益控制模块14,用于根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制。

进一步地,所述压缩器参数包括阈值、压缩比和启动时间;则,所述增益控制模块14包括:

第一查询单元141,用于当当前音频点的幅值大于所述阈值时,在所述数组中查询幅值小于所述阈值的另一音频点;

第一判断单元142,用于当查询到幅值小于所述阈值的所述另一音频点时,判断所述另一音频点到所述当前音频点的第一路径长度是否大于或等于所述启动时间;

第一压缩单元143,用于当所述第一路径长度大于或等于所述启动时间时,按照所述压缩比对所述当前音频点进行压缩。

进一步地,所述第一查询单元141,具体用于:

以所述当前音频点为查询起点,并以所述数组中的起点为查询终点;从所述查询起点向所述查询终点查询;获取在查询过程中首次出现幅值小于所述阈值的另一音频点。

进一步地,所述压缩器参数还包括释放时间;则,所述增益控制模块14还包括:

第二查询单元144,用于当当前音频点的幅值小于所述阈值时,在所述数组中查询幅值大于所述阈值的另一音频点;

第二判断单元145,用于当查询到幅值大于所述阈值的所述另一音频点时,判断所述另一音频点到所述当前音频点的第二路径长度是否小于所述释放时间;

第二压缩单元146,用于当所述第二路径长度小于所述释放时间时,按照所述压缩比对所述当前音频点进行压缩。

进一步地,所述音频增益控制系统10还包括:

压缩器参数更新模块15,用于在所述当前帧类型确定模块11对音频中的每一帧进行活性检测前,确定压缩器参数的初始值。

进一步地,所述音频增益控制系统10还包括:

判断模块16,用于当所述当前帧的类型为静音帧时,判断所述数组是否为空。

若所述判断模块16判定所述数组为空,则所述当前帧类型确定模块11确定下一帧的类型;若所述判断模块16判定所述数组不为空,则所述压缩器参数更新模块15更新所述压缩器参数;当所述判断模块16判定所述数组不为空后,所述音频点幅值确定模块13确定所述静音帧内每一个音频点的幅值;所述增益控制模块14根据所述音频点的幅值和更新后的压缩器参数对所述音频点进行增益控制,所述数组压入模块12清空所述数组。

进一步地,当所述判断模块16判定所述数组不为空时,所述数组中存在激活块;其中,所述激活块包括至少一个激活帧;则,所述压缩器参数更新模块15还用于:计算所述激活块中所有音频点的第一总能量;计算所述数组中幅值超过所述阈值的音频点的总数量和第二总能量;根据所述第一总能量、所述总数量和所述第二总能量按照预设的压缩器参数更新策略更新所述压缩器参数。

值得说明的是,具体的所述音频增益控制系统10中各个模块的工作过程请参考上述实施例所述的音频增益控制方法的工作过程,在此不再赘述。

与现有技术相比,本发明实施例公开的音频增益控制系统10法,首先,对音频中的每一帧进行活性检测,以确定当前帧的类型;然后,当所述当前帧的类型为激活帧时,将所述激活帧压入数组;在将所述激活帧压入数组后,确定所述激活帧内每一个音频点的幅值;最后,根据所述音频点的幅值和预设的压缩器参数对所述音频点进行增益控制,能自动控制音频的增益,且提高音频增益控制的灵敏性。

参见图3,图3是本发明实施例提供的一种音频增益控制设备20的结构框图。该实施例的音频增益控制设备20包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述音频增益控制方法实施例中的步骤,例如图1所示的步骤s11~s14。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如当前帧类型确定模块11。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述音频增益控制设备20中的执行过程。例如,所述计算机程序可以被分割成当前帧类型确定模块11、数组压入模块12、音频点幅值确定模块13、增益控制模块14、压缩器参数更新模块15和判断模块16,各模块具体功能请参考上述实施例所述的音频增益控制系统10的具体工作过程,在此不再赘述。

所述音频增益控制设备20可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述音频增益控制设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是音频增益控制设备20的示例,并不构成对音频增益控制设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述音频增益控制设备20还可以包括输入输出设备、网络接入设备、总线等。

所述处理器21可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器21也可以是任何常规的处理器等,所述处理器21是所述音频增益控制设备20的控制中心,利用各种接口和线路连接整个音频增益控制设备20的各个部分。

所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述音频增益控制设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述音频增益控制设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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