一种增益平稳调节的动态范围控制算法及系统的制作方法
本发明涉及声音信号处理技术控制领域,具体涉及一种增益平稳调节的动态范围控制算法及系统。
背景技术:
动态范围控制技术是在使用声音信号之前人为地对大幅度信号进行压缩来避免出现削波失真,同时放大小幅度信号使其容易被人耳感知的技术。在模拟电路盛行的时期,对语音信号动态范围的调整是通过将电流分成两条线路分别进行调幅整流来实现的。
进入20世纪90年代,数字信号处理技术的广泛应用使得动态范围控制器也开始走向数字化。动态范围控制涵盖压缩器、限幅器、扩展器、噪声门等多种动态处理器,既可以分开使用,也可以根据需求将各种动态处理器进行合理的组合。
经典的动态范围控制算法是根据输入信号与增益曲线实时地更新增益。尽管有增益平滑的过程,但是由于增益是严格按照输入信号的幅度实时变化的,所以增益的波动会比较大,进而影响声音信号的音质。
申请号为201610371874.7的中国专利,公开了一种应用于语音识别前端的音频增益调整方法和装置,调整方法包括:接收音频数据;对所述音频数据进行agc处理;对agc处理后的音频数据进行drc处理,其目的在于克服有效放大幅值较小的语音信号,提高音频增益效果,但此方法获得增益平稳变化效果仍不够理想。
技术实现要素:
技术目的:为了解决经典的动态范围控制算法存在增益波动较大,导致语音信号音质受损的问题,本发明提供了一种增益平稳调节的动态范围控制算法及系统,能够不失真地对声音信号的幅度进行控制,对大信号的幅度能够很好地进行限制。
技术方案:为了达到上述目的,本发明所采用的技术方案是:
一种增益平稳调节的动态范围控制算法,其特征在于,包括以下步骤,
a、设计一条能够根据实际需要进行增益调节的增益曲线;
b、对输入语音信号进行分帧,对于一帧信号的每一个点,根据输入语音信号的幅度大小及增益曲线确定实时增益gr,比较实时增益gr与期望增益ge的大小关系,计算期望增益变化率re,根据期望增益变化率re更新期望增益ge的值,更新后的期望增益ge用于计算下一个点的实时增益gr;
c、对于一帧信号的每一个点,根据实际增益变化率ra更新实际增益ga的值;对获得的实际增益ga做反规格化处理,得到的结果作为最终参与计算的增益g;
d、循环操作步骤b和步骤c,对一帧信号的所有采样点逐个处理,处理结束后,将最后得到的期望增益ge做规格化处理,得到规格化后的期望增益gn,比较实际增益ga与规格化后的期望增益gn的大小关系,求实际增益变化率ra。
优选地,步骤a中,增益曲线包括直通段、过渡段和压缩段三个部分,增益曲线的设计步骤包括:根据动态范围控制要求,设定过渡段的起始点和结束点的坐标、以及压缩段的斜率;过渡段与压缩段在交点处的斜率相等,根据设定的参数,求出过渡段的过渡曲线方程;确定整个增益曲线方程。
优选地,步骤a中,增益曲线在对数坐标下建立,设定过渡段的开始点和结束点的线性横坐标分别为x0、x1,过渡曲线方程为公式(1):
设定压缩段的斜率为kc,压缩段的曲线方程为公式(2):
压缩段的斜率的线性方程为公式(3):
增益曲线平滑连接时,过渡段与压缩段在交点处的斜率相等,结合过渡曲线和压缩曲线方程求出参数k的值,求出整条增益曲线的形式。
优选地,步骤b中,对于一帧信号的每一个点,设定幅度的阈值t,根据输入语音信号的幅度大小及增益曲线确定实时增益gr,如公式(4)所述:
其中,a1为输入语音信号的幅度a1,a2为将输入语音信号的幅度a1代入增益曲线,得到的输出语音信号的幅度a2。
优选地,步骤b中,比较实时增益gr与期望增益ge的大小关系,确定期望增益变化率re,如公式(5)所述:
根据变化率re更新期望增益ge,如公式(6)所述:
ge=ge+(gr-ge)*re(6)
其中tsr表示饱和释放时间,fs表示采样率。
优选地,步骤c中,根据实际增益变化率ra更新实际增益ga,如公式(7)所述:
对获得的实际增益做反规格化处理,其反规格化后的增益gad,如公式(8)所述:
最终参与计算的增益g,如公式(9)所述:
其中,gp表示后增益,参数ful是将常数1代入增益曲线得到的输出。
优选地,步骤d中,对最后得到的期望增益的值ge做规格化处理得到规格化后的期望增益gn,如公式(10)所述:
先将实际增益ga与规格化后的期望增益gn的比值转化为db值,设为变量ran,如公式(11)所述:
若ran<0,说明实际增益ga小于规格化后的期望增益gn;实际增益的变化率ra的更新公式如公式(12)所述:
其中,spa表示一个常量;
若ran>0,说明实际增益ga大于规格化后的期望增益gn,记录ran的最大值,保存至变量mran中。
优选地,步骤d中,在ran<0的情况中,mran更新为-1,否则mran的值总是记录ran>0时候ran的最大值;并且当mran<0.5时设置成0.5,则实际增益的变化率ra的更新公式如公式(13)所述:
其中fs是采样率,ta是攻击时间。
优选地,步骤d中,将处理过后的ran值作为输入代入一个3次函数y=ax3+bx2+cx+d中得到释放的样点数resamps;其中三次函数经过点(0,y1)、(1,y2)、(2,y3)、(3,y4),其中纵坐标的单位长度是总释放样点数st,总释放样点数st的表达式如公式(14)所示:
st=fs*tr(14)
其中fs表示采样率,tr表示释放时间,y1、y2、y3、y4是四个介于0和1之间的常数。
一种增益平稳调节的动态范围控制系统,用于所述方法,其特征在于:包括音频信号获取模块、比较和计算模块和调节模块;其中,
音频信号获取模块,用于接收音频信号并进行预处理;
比较和计算模块,处理内容包括比较实时增益gr与期望增益ge的大小、实际增益ga与规格化后的期望增益gn的大小,计算期望增益变化率re、比较求实际增益变化率ra和更新期望增益ge的值;
调节模块,用于根据比较和计算模块输出的结果,调节所述音频信号的增益。
技术效果:由于采用了上述技术方案,本发明具有如下技术效果:
1)、本发明的方法能够根据实际动态范围控制程度的需要,通过给定增益曲线相关参数,包括过渡段的起始点、过渡段的带宽及压缩段的斜率,求出过渡曲线方程的未知参数,进而得出整个增益曲线;利用增益曲线,实现对音频信号的期望增益和实际增益的平稳调节,确保参与运算的增益平稳变化;
2)、本发明的方法通过数据缓存,进一步确保增益能够跟上当前点数据对增益的需要,使得结果准确,与经典drc算法相较,其突出优势在于能够不失真地对原始音频信号进行缩放处理,不会对后续功能模块造成影响。
3)本发明能够不失真地对声音信号的幅度进行控制,对小信号可以放大5db-6db,对大信号的幅度能够很好地进行限制。
附图说明
图1是本发明的一种增益平稳调节的动态范围控制简单算法流程图;
图2是期望增益eg的实现流程图;
图3是实际增益ag的实现流程图;
图4是三次函数曲线示意图;
图5是drc处理过后时域波形对比图。
具体实施方式
如图1所示,本发明的一种增益平稳调节的动态范围控制算法包括以下步骤。
步骤a,设计一条可以根据实际需要进行调节的可变增益曲线;
步骤b,对于一帧信号的每一个点,根据输入语音信号的幅度大小及增益曲线确定实时增益gr,比较实时增益gr与期望增益ge的大小关系,求期望增益变化率re,根据期望增益变化率更新期望增益的值;
步骤c,对于一帧信号的每一个点,根据实际增益变化率ra更新实际增益的值;根据获得的实际增益,做一个反规格化处理,此时可以选择再乘上一个主增益,得到最终参与计算的增益g;主增益是一个与增益曲线有关的参数;
步骤d,一帧信号结束后,将最后得到的期望增益的值ge做一个规格化处理得到规格化后的期望增益gn,比较实际增益ga与规格化后的期望增益gn的大小关系,求实际增益变化率ra。
本发明的一种增益平稳调节的动态范围控制算法的步骤a中,增益曲线是在对数坐标下表示的,分成三个部分,“直通段”、“过渡段”、“压缩段”。
增益曲线的“过渡段”的起始点的线性值为x0,其线性方程如公式(1)所述:
其中k为参数,由增益曲线的“压缩段”在对数坐标下的斜率kc决定。
过渡曲线结束点的坐标为(x1,y1),那么第三段压缩曲线线性方程如公式(2)所示:
20log10y=kc*(20log10x-20log10x1)+20log10y1(2)
化简为公式(3)所示:
其斜率的线性方程如公式(4)所示:
令增益曲线的“过渡段”与“压缩段”在交点处的斜率相等,即满足公式(5):
将
只要知道增益曲线的“压缩段”在对数坐标下的斜率kc,以及增益曲线“过渡段”的起始点和结束点两个线性横坐标x0、x1,即可确定参数k,从而确定整条增益曲线的形式。
步骤b中,对于一帧信号的每一个点,根据输入语音信号的幅度大小及增益曲线确定实时增益gr,比较实时增益gr与期望增益ge的大小关系,求期望增益变化率re,根据期望增益变化率更新期望增益的值,其原理流程图如图2所示。
如前述步骤b所述,输入信号幅值a1小于某个阈值t,则将实时增益gr设置为1;若其幅值大于某个阈值,则实时增益gr由增益曲线的输出a2与输入信号的幅值a1的比值确定,即:
如前述步骤b所述,比较实时增益gr与期望增益ge的大小关系,求变化率re;当实时增益gr大于期望增益ge时,变化率re是实时增益gr的函数,实时增益越小,变化率越大,反之则越小;当实时增益gr小于期望增益ge时,变化率re设置为1即:
其中tsr是饱和释放时间。
如前述步骤b所述,根据期望增益变化率re更新期望增益ge的值,其更新方程如公式9所述:
ge=ge+(gr-ge)*re(9)
步骤c中,根据实际增益变化率ra更新实际增益ga的值,其更新公式如式(10)所述:
根据获得的实际增益,做一个反规格化处理,其反规格化后的增益gad如公式(11)所述:
最终参与计算的增益g如公式(12)所述:
其中,gp是后增益,一般设置为0db。参数ful是将常数1代入增益曲线得到的输出,1是横坐标,ful是对应的纵坐标。
步骤d中,一帧信号结束后,将最后得到的期望增益的值ge做一个规格化处理得到规格化后的期望增益gn,如公式(13)所述:
如前述步骤d所述,一帧信号结束后,比较实际增益ga与规格化后的期望增益gn的大小关系,求实际增益变化率ra;先将实际增益ga与规格化后的期望增益gn的比值转化为db值,设为变量ran,如公式(14)所述:
如前述步骤d所述,若ran<0,说明实际增益ga小于规格化后的期望增益gn,将ran的值限制在-12到0之间,也即小于-12的ran值都作-12处理。将区间限制后的ran值整体加上12,再乘上0.25,此时ran的区间范围是0到4之间。
然后将处理过后的ran值作为输入代入一个3次函数y=ax3+bx2+cx+d中得到释放的样点数resamps。其中三次函数经过点(0,y1)、(1,y2)、(2,y3)、(3,y4),如图4所示,其中纵坐标的单位是总释放样点数st,其表达式如公式(15)所示:
st=fs*tr(15)
其中fs是采样率,tr是释放时间,例如0.25s,y1、y2、y3、y4是四个介于0到1之间的常数。
若ran<0,则实际增益的变化率ra的更新公式如公式(16)所述:
其中,spa是一个常量,例如5。
若ran>0,说明实际增益ga大于规格化后的期望增益gn。记录ran的最大值,保存至变量mran中。在ran<0的情况中,mran更新为-1,否则mran的值总是记录ran>0时候ran的最大值;并且当mran<0.5时设置成0.5,则实际增益的变化率ra的更新公式如公式(17)所述:
其中fs是采样率,ta是攻击时间,例如0.003,相比较于释放时间tr,攻击时间更短。
一般的增益曲线要根据情况设计,本发明的算法中,增益曲线只要给定3个参数,就能自动生成曲线,不需要调节。实时增益是根据输入信号的幅度与增益曲线得到的一个增益,期望增益是根据实时增益不断更新得到的。本发明可通过采用一个环形缓冲区,将与实际增益相乘的数据从所述环形缓冲区里面读取,然后获取的数据也存储在所述环形缓冲区里,所以如果取数据指针滞后于写数据指针一段长度,那么当前实际增益对应的数据就是历史数据,而若干点后的实际增益对应的是当前点数据,这样就实现了实际增益与数据的匹配。本发明通过数据缓存,进一步确保增益能够跟上当前点数据对增益的需要,使得结果准确。即本发明采用的方法,通过在前一帧根据输入信号和增益曲线确定实时增益,然后根据实时增益更新期望增益,在处理下一帧信号时,以前一帧算出的期望增益为标准,来更新实际用于输入此信号幅度变化的实际增益;实际增益的变化率是由实际增益和期望增益的大小关系决定的,实际增益的变化率又反过来更新实际增益,实际增益与实际增益的变化率是相辅相成的,使得结果准确。
图5是用本发明的drc算法处理过后的波形与原时域波形的对比图,其中上面为输入信号时域波形图,下图为用本发明的drc算法处理过后的波形。
综上所述,本发明的一种增益平稳调节的动态范围控制算法,根据实际动态范围控制程度的需要,给定曲线相关参数,包括过渡段的起始点,过渡带的带宽及压缩段的斜率,求出过渡曲线方程的未知参数,进而得出整个增益曲线。通过期望增益和实际增益的平稳调节,确保参与运算的增益平稳变化。通过数据缓存,进一步确保增益能够跟上当前点数据对增益的需要,使得结果准确。本发明区别于经典drc算法的突出优势在于它能够不失真地对原始音频信号进行缩放处理,不会对后续功能模块造成影响。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除