一种音频限幅的方法和系统

申请号 CN202010489394.7 申请日 2020-06-02 公开(公告)号 CN111525902A 公开(公告)日 2020-08-11
申请人 北京快鱼电子股份公司; 发明人 陈高鋆;
摘要 本 发明 公开了一种音频 限幅 的方法和系统,属于数字音频 信号 处理以及音频限幅领域,在获取到预设 帧 长的数字 音频信号 后,根据预设帧长的 数字信号 计算每一帧数字音频信号对应的平均增益值;根据计算得到的平均增益值对预设帧长的数字音频信号进行处理得到限幅后的数字音频信号。在保证低于 阈值 的音频信号的幅值不变的情况下,将超过阈值的音频信号的幅值限制在所设定的阈值范围内,不产生截顶失真,并且具有高实时性。保证数字音频信号的 质量 ,为用户带来更好的体验。
权利要求

1.一种音频限幅的方法,其特征在于,包括以下步骤:
获取预设长的数字音频信号
根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。
2.根据权利要求1所述的方法,其特征在于:所述获取预设帧长的数字音频信号包括:
接受外部的数字音频信号;
对所述外部的数字音频信号的采样点数进行计数;
当采样点数达到预设帧长时,完成预设帧长的数字音频信号的获取。
3.根据权利要求1所述的方法,其特征在于:所述根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值包括:
根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值;
根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值。
4.根据权利要求3所述的方法,其特征在于:所述根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值包括:
对当前帧的数字音频信号的幅值进行计算,得到当前帧的数字音频信号的幅值绝对值的最大值;
将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值。
5.根据权利要求4所述的方法,其特征在于:所述将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值包括:
若当前帧的数字音频信号的幅值绝对值的最大值小于或者等于线性域标度的阈值时,设即时增益值为1;
若当前帧的数字音频信号的幅值绝对值的最大值大于线性域标度的阈值时,即时增益值为线性域标度的阈值与当前帧的数字音频信号的幅值绝对值的最大值的比值。
6.根据权利要求3所述的方法,其特征在于:所述根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值包括:
将当前帧的即时增益值与前一帧的平均增益值进行平滑比较,得到当前帧的平均增益值;计算公式为:
其中,n为正整数,代表当前帧为第n帧,gainavg(n)为当前帧的平均增益,gaininst为当前帧的即时增益,α和β为平滑系数。
7.根据权利要求6所述的方法,其特征在于:所述平滑系数α和β,计算方式如下:
其中,fs为音频信号的采样率,attack_time为冲击时间,单位为秒,release_time为释放时间,单位为秒。
8.根据权利要求7所述的方法,其特征在于:所述冲击时间为零。
9.根据权利要求1所述的方法,其特征在于:所述根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号包括:
将每一帧数字音频信号的幅值乘以每一帧数字音频信号对应的所述平均增益值得到限幅后的数字音频信号。
10.一种音频限幅的系统,其特征在于,包括:
音频信号获取模,用于获取预设帧长的数字音频信号;
平均增益值计算模块,用于根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
限幅信号获取模块,用于根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。

说明书全文

一种音频限幅的方法和系统

技术领域

[0001] 本发明涉及数字音频信号处理以及音频限幅领域,特别地,涉及一种音频限幅的方法和系统。

背景技术

[0002] 在音频处理方面,数字音频处理技术已经在逐渐取代模拟音频处理技术,并成为目前的主流。
[0003] 在数字音频处理的过程中,常常需要使用限幅器,来限制数值音频信号的幅值范围,有以下几种原因:1.在处理数字音频的时候,通常会进行音频放大、混音、音量调节、动态范围提升等操作,在这些处理之后,最后得到的数字音频信号的幅值可能会超过数字音频的数值范围;2.需要将数字音频信号通过数模转换器、功放、喇叭进行输出,而数字信号的高幅值会导致功放或喇叭的过载,使得播放的声音中引入谐波分量,同时降低了功放和喇叭的使用寿命;3.从支持长位宽数字音频信号的设备向只支持短位宽数字音频信号的设备传送数字音频信号,如数字信号处理器需要将24位位宽的数字音频信号传送到仅支持18位位宽的数模转换器上。
[0004] 如果将这些超过数字音频的数值范围的数字音频信号进行简单的幅值限制,即将大于最大值和小于最小值的数字音频信号分别设为最大值和最小值,则会产生截顶失真,引入大量的奇次谐波,极大的降低了用户的听感,同时对音频的可懂度与舒适度有着不可逆的损伤。如果对音频数字音频信号的数值进行统一的增益压制的处理,又会导致小信号的丢失,无法听到较小的声音。

发明内容

[0005] 为了克服现有技术的不足,本发明提供一种音频限幅的方法和系统,可以实现在保证低于阈值的音频信号的幅值不变的情况下,将超过阈值的音频信号的幅值限制在所设定的阈值范围内,不产生截顶失真,并且具有高实时性。
[0006] 本发明解决其技术问题所采用的技术方案是:
[0007] 第一方面,
[0008] 一种音频限幅的方法,包括以下步骤:
[0009] 获取预设长的数字音频信号;
[0010] 根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
[0011] 根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。
[0012] 进一步地,所述获取预设帧长的数字音频信号包括:
[0013] 接受外部的数字音频信号;
[0014] 对所述外部的数字音频信号的采样点数进行计数;
[0015] 当采样点数达到预设帧长时,完成预设帧长的数字音频信号的获取。
[0016] 进一步地,所述根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值包括:
[0017] 根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值;
[0018] 根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值。
[0019] 进一步地,所述根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值包括:
[0020] 对当前帧的数字音频信号的幅值进行计算,得到当前帧的数字音频信号的幅值绝对值的最大值;
[0021] 将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值。
[0022] 进一步地,所述将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值包括:
[0023] 若当前帧的数字音频信号的幅值绝对值的最大值小于或者等于线性域标度的阈值时,设即时增益值为1;
[0024] 若当前帧的数字音频信号的幅值绝对值的最大值大于线性域标度的阈值时,即时增益值为线性域标度的阈值与当前帧的数字音频信号的幅值绝对值的最大值的比值。
[0025] 进一步地,所述根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值包括:
[0026] 将当前帧的即时增益值与前一帧的平均增益值进行平滑比较,得到当前帧的平均增益值;计算公式为:
[0027]
[0028] 其中,n为正整数,代表当前帧为第n帧,gainavg(n)为当前帧的平均增益,gaininst为当前帧的即时增益,α和β为平滑系数。
[0029] 进一步地,所述平滑系数α和β,计算方式如下:
[0030]
[0031]
[0032] 其中,fs为音频信号的采样率,attack_time为冲击时间,单位为秒,release_time为释放时间,单位为秒。
[0033] 进一步地,所述冲击时间为零。
[0034] 进一步地,所述根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号包括:
[0035] 将每一帧数字音频信号的幅值乘以每一帧数字音频信号对应的所述平均增益值得到限幅后的数字音频信号。
[0036] 第二方面,
[0037] 一种音频限幅的系统,包括:
[0038] 音频信号获取模,用于获取预设帧长的数字音频信号;
[0039] 平均增益值计算模块,用于根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
[0040] 限幅信号获取模块,用于根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。
[0041] 本申请采用以上技术方案,至少具备以下有益效果:
[0042] 本发明的技术方案提供的一种音频限幅的方法和系统,在获取到预设帧长的数字音频信号后,根据预设帧长的数字信号计算每一帧数字音频信号对应的平均增益值;根据计算得到的平均增益值对预设帧长的数字音频信号进行处理得到限幅后的数字音频信号。在保证低于阈值的音频信号的幅值不变的情况下,将超过阈值的音频信号的幅值限制在所设定的阈值范围内,不产生截顶失真,并且具有高实时性。保证数字音频信号的质量,为用户带来更好的体验。
附图说明
[0043] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1是本发明实施例提供的一种音频限幅的方法的流程图
[0045] 图2是本发明实施例提供的另一种音频限幅的方法的流程图;
[0046] 图3是本发明实施例提供的一种音频限幅的系统的结构示意图。

具体实施方式

[0047] 为使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本发明的技术方案进行详细的描述说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。
[0048] 一个实施例中,本发明提供了一种音频限幅的方法,如图1所示,包括以下步骤:
[0049] 获取预设帧长的数字音频信号;
[0050] 根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
[0051] 根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。
[0052] 本发明实施例提供的一种音频限幅的方法,在获取到预设帧长的数字音频信号后,根据预设帧长的数字信号计算每一帧数字音频信号对应的平均增益值;根据计算得到的平均增益值对预设帧长的数字音频信号进行处理得到限幅后的数字音频信号。在保证低于阈值的音频信号的幅值不变的情况下,将超过阈值的音频信号的幅值限制在所设定的阈值范围内,不产生截顶失真,并且具有高实时性。保证数字音频信号的质量,为用户带来更好的体验。
[0053] 作为对上述实施例的一种补充说明,所述获取预设帧长的数字音频信号包括:
[0054] 接受外部的数字音频信号;需要说明的是,所述外部的数字音频信号可以是单声道数字音频信号,可以是双声道数字音频信号,可以是多声道数字音频信号,也可以是多音轨数字音频信号。本发明对此不做限定。
[0055] 对所述外部的数字音频信号的采样点数进行计数;
[0056] 当采样点数达到预设帧长时,完成预设帧长的数字音频信号的获取。可以理解的是,为了方便计算和获取,本发明实施例中预设帧长取正整数。
[0057] 一些实施例中,所述根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值包括:
[0058] 根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值;
[0059] 根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值。
[0060] 其中,所述根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值包括:
[0061] 对当前帧的数字音频信号的幅值进行计算,得到当前帧的数字音频信号的幅值绝对值的最大值;
[0062] 将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值。
[0063] 进一步可选地,所述将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值包括:
[0064] 若当前帧的数字音频信号的幅值绝对值的最大值小于或者等于线性域标度的阈值时,设即时增益值为1;
[0065] 若当前帧的数字音频信号的幅值绝对值的最大值大于线性域标度的阈值时,即时增益值为线性域标度的阈值与当前帧的数字音频信号的幅值绝对值的最大值的比值。
[0066] 一些实施例中,所述根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值包括:
[0067] 将当前帧的即时增益值与前一帧的平均增益值进行平滑比较,得到当前帧的平均增益值;计算公式为:
[0068]
[0069] 其中,n为正整数,代表当前帧为第n帧,gainavg(n)为当前帧的平均增益,gaininst为当前帧的即时增益,α和β为平滑系数。
[0070] 所述平滑系数α和β,计算方式如下:
[0071]
[0072]
[0073] 其中,fs为音频信号的采样率,attack_time为冲击时间,单位为秒,release_time为释放时间,单位为秒。
[0074] 需要说明的是,平滑系数α的时间常数冲击时间attack_time选择得尽可能小,以保证对高于阈值的数字音频信号有最快的跟踪速度,可以在当前帧里实现增益控制,避免截顶失真,从而保证极低的延时。因此,作为本发明实施例一种优选的实现方式:冲击时间定义为0。
[0075] 一些实施例中,所述根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号包括:
[0076] 将每一帧数字音频信号的幅值乘以每一帧数字音频信号对应的所述平均增益值得到限幅后的数字音频信号。
[0077] 需要说明的是,上述实施例中提到的预设的阈值可以是线性域标度,也可以是对数或分贝域标度。如果预设的阈值是对数或分贝域标度,则需将对数或分贝域标度的阈值转换到线性域标度的阈值,以便进行后续的计算。
[0078] 为了更好的说明本申请的技术方案,本发明还提供了了另一种音频限幅的方法的实施例,采用一路单声道输入信号为例,输入信号经过极低延时的音频限幅处理后,得到输出信号
[0079] 如图2所示,包括以下步骤:
[0080] 步骤1:音频信号采集并分帧:音频信号采集模块接收来自该模块外部的数字音频信号,该音频信号的采样率为32000Hz,音频信号的位宽为16位。并将该信号定义为输入信号。根据每一音频帧的长度,按照数字音频信号样本点到来的先后顺序,对数字音频信号进行按帧切割。每一帧的时长是1毫秒,由于采样率是32000Hz,因此每一帧的长度block_size是32个采样点。当累计的采样点的个数达到帧长,即32个点的时候,得到当前的数字音频信号帧,对该帧的信号进行后续处理。
[0081] 步骤2:幅值绝对值的最大值计算:对当前帧的数字音频信号的幅值进行计算,得到当前帧的数字音频信号的幅值绝对值的最大值。
[0082] 步骤3:即时增益值计算:根据当前帧的数字音频信号的幅值绝对值的最大值与预设的阈值进行比较并计算,得到当前帧的即时增益值。
[0083] 如果当前帧的统计数据的值小于或等于阈值,即无需进行增益上的调整以衰减输入信号,则设置即时增益为1。否则,即时增益的值为阈值除以即时增益。
[0084]
[0085] 其中gaininst为当前帧的即时增益值,max_val为当前帧的数字音频信号的幅值绝对值的最大值,threshold为线性域标度的阈值。
[0086] 步骤4:增益平滑:将当前帧的即时增益值与前一帧的平均增益值进仃平滑处理,得到当前帧的平均增益值,便得帧与帧之间的增益值较为连贯。
[0087] 假设当前帧为第n帧,上一帧为第n-1帧,下一帧为第n+1帧,以此类推。将第n帧的平均增益表示为gainavg(n),如果当前帧为第一帧,则n=1,且gainavg(0)=1。
[0088] 在第n帧,如果当前帧n的即时增益gaininst大于或等于前一帧的平均增益,则利用平滑系数α对当前帧n的平均增益gainavg(n)进行更新,gainavg(n)=α·gaininst+(1-α)·gainavg(n-1);如果当前帧n的即时增益gaininst小于前一帧的平均增益,则利用平滑系数β对当前帧的平均增益gainavg(n)进行更新,gainavg(n)=β·gaininst+(1-β)·gainavg(n-1)。
[0089] 平滑系数α和β的具体计算方法如下:
[0090]
[0091]
[0092] 其中,fs为音频信号的采样率,在本实施例中,定义为32000Hz,attack_time为冲击时间,单位为秒,在本实施例中,定义为0秒,即用立即冲击以保证限幅算法的快速性以及稳定性,release_time为释放时间,单位为秒,在本实施例中,定义为0.2秒。
[0093]
[0094] 需要注意的是,此处对平均增益的计算采用的是一阶冲击-释放IIR滤波器,平滑系数α的时间常数attack_time选择得尽可能小,以保证对高于阈值的数字音频信号有最快的跟踪速度,可以在当前帧里实现增益控制,避免截顶失真,从而保证极低的延时。
[0095] 步骤5:增益应用:将所述的当前帧的平均增益值应用于该帧音频信号的每一个采样点上,并将结果进行输出。此处,将当前帧的平均增益,与当前帧的数字音频信号逐个进行点乘,得到极低延时音频限幅处理后的结果。
[0096] 本发明实施例提供的另一种音频限幅的方法,通过音频信号采集、信号数据统计、即时增益计算、增益平衡、增益应用这几个步骤实现极低延时的音频限幅。其中,音频信号采集时通过采集数字音频信号采样点,进行分帧,得到帧信号,或者是利用原有输入音频流的分帧;信号数据统计模块用于统计当前帧内的数字音频信号的幅值绝对值的最大值;即时增益计算模块计算出阈值与当前帧内的数字音频信号的幅值绝对值的最大值的比例,作为即时增益;增益平滑模块是将帧与帧之间的即时增益值进行平滑,得到平均增益,使得增益的增减不会突变;增益应用模块是将平均增益应用到当前帧的音频信号上,最为最后的输出,从而实现极低延时的音频限幅。本方法可以在不引入延时的情况下,对音频进行限幅控制,保证了音频处理以及音频输出的高实时性,同时避免输出音频超过阈值产生的截顶失真,进而保证了音频的高可懂度、低失真度以及高保真。
[0097] 一个实施例中,如图3所示,本发明还提供了一种音频限幅的系统300,包括:
[0098] 音频信号获取模块301,用于获取预设帧长的数字音频信号;
[0099] 其中,音频信号获取模块还用于接受外部的数字音频信号;
[0100] 对所述外部的数字音频信号的采样点数进行计数;
[0101] 当采样点数达到预设帧长时,完成预设帧长的数字音频信号的获取。
[0102] 平均增益值计算模块302,用于根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;
[0103] 具体的,平均增益值计算模块用于根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值;
[0104] 根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值。
[0105] 其中,所述根据所述数字音频信号计算得到每一帧数字音频信号对应的即时增益值包括:
[0106] 对当前帧的数字音频信号的幅值进行计算,得到当前帧的数字音频信号的幅值绝对值的最大值;
[0107] 将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值。
[0108] 所述将所述最大值与预设的阈值进行比较,得到当前帧的即时增益值包括:
[0109] 若当前帧的数字音频信号的幅值绝对值的最大值小于或者等于线性域标度的阈值时,设即时增益值为1;
[0110] 若当前帧的数字音频信号的幅值绝对值的最大值大于线性域标度的阈值时,即时增益值为线性域标度的阈值与当前帧的数字音频信号的幅值绝对值的最大值的比值。
[0111] 所述根据所述即时增益值计算得到每一帧数字音频信号对应的平均增益值包括:
[0112] 将当前帧的即时增益值与前一帧的平均增益值进行平滑比较,得到当前帧的平均增益值;计算公式为:
[0113]
[0114] 其中,n为正整数,代表当前帧为第n帧,gainavg(n)为当前帧的平均增益,gaininst为当前帧的即时增益,α和β为平滑系数。
[0115] 所述平滑系数α和β,计算方式如下:
[0116]
[0117]
[0118] 其中,fs为音频信号的采样率,attack_time为冲击时间,单位为秒,release_time为释放时间,单位为秒。
[0119] 一些优选实施例中,所述冲击时间为零。
[0120] 限幅信号获取模块303,用于根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。
[0121] 具体的,限幅信号获取模块用于将每一帧数字音频信号的幅值乘以每一帧数字音频信号对应的所述平均增益值得到限幅后的数字音频信号。
[0122] 本发明实施例提供的一种音频限幅的系统,音频信号获取模块获取预设帧长的数字音频信号;平均增益值计算模块根据所述数字音频信号计算得到每一帧数字音频信号对应的平均增益值;限幅信号获取模块根据所述平均增益值对所述预设帧长的数字音频信号进行处理获得限幅后的数字音频信号。本系统能够避免输出音频超过阈值产生的截顶失真,进而保证了音频的高可懂度、低失真度以及高保真。
[0123] 可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0124] 需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
[0125] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0126] 应当理解,本申请的各部分可以用硬件软件固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0127] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0128] 此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0129] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0130] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0131] 尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
QQ群二维码
意见反馈