HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

音频编码方法及装置、电子设备、存储介质与流程

2021-01-28 14:01:31|267|起点商标网
音频编码方法及装置、电子设备、存储介质与流程

本发明涉及音频编码技术领域,尤其涉及一种音频编码方法及装置、电子设备、存储介质。



背景技术:

目前,为了便于音频的网络传输和存储,通常需要采用音频编码技术将原始音频数据转换为压缩数据,压缩后的数据数据量更少,从而有利于节省存储空间以及减少网络传输所需要的网络带宽,但是,通常情况下,编码后容易造成音频失真。



技术实现要素:

基于上述现状,本发明的主要目的在于提供一种音频编码方法及装置、电子设备、存储介质,有利于减少编码后的音频失真。

为实现上述目的,本发明的技术方案提供了一种音频编码方法,包括:

步骤s1:对待编码音频数据进行语音端点检测处理,以将所述待编码音频数据中的活动音频段和非活动音频段相分割,得到若干音频段;

步骤s2:对每一个所述活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,之后对于每一个所述活动音频段,利用其每一个粒度中每一子带的能量值计算其粒度平均能量;

步骤s3:根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,活动音频段的编码码率与活动音频段的粒度平均能量正相关;

步骤s4:对于每一个所述活动音频段,按照其编码码率对其进行音频编码;

步骤s5:对所述待编码音频数据分割得到的非活动音频段进行编码,且每一个所述活动音频段的编码码率大于每一个所述非活动音频段的编码码率。

进一步地,步骤s2包括:

步骤s21:对所述待编码音频数据分割得到的第k个活动音频段进行分块处理,得到若干个粒度,k=1,2,3,…,l,l为所述待编码音频数据分割得到的活动音频段的数量;

步骤s22:对所述第k个活动音频段的每一个粒度进行子带分解操作,然后对于所述第k个活动音频段的每一个粒度,计算其每一子带的能量值;

其中,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,sp(k,i)[sb][j]为所述第k个活动音频段的第i个粒度中第sb子带的第j频率线的频谱值,sb表示子带号,sb=1,2,3,…,n,n为每一个粒度中的子带数量,j表示频率线号,z为每一子带的频率线数量,a为大于1的预设值;

步骤s23:计算所述第k个活动音频段在每一子带上的能量分布值;

其中,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值,grs_k为所述第k个活动音频段分块处理后得到的粒度数量;

步骤s24:确定所述第k个活动音频段的粒度平均能量edsk;

进一步地,所述根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,包括:

获取所述待编码音频数据的总体目标编码码率;

根据所述待编码音频数据的总体目标编码码率、每一个所述非活动音频段的编码码率、每一个所述活动音频段的粒度平均能量计算每一个所述活动音频段的编码码率。

进一步地,所述活动音频段的编码码率与活动音频段的粒度平均能量正相关,包括:

各所述活动音频段的编码码率之间的比例与各所述活动音频段的粒度平均能量之间的比例一致。

进一步地,所述非活动音频段的编码码率为所述音频编码方法对应的编码格式支持的最低编码码率。

为实现上述目的,本发明的技术方案还提供了一种音频编码装置,包括:

语音端点检测处理模块,用于对待编码音频数据进行语音端点检测处理,以将所述待编码音频数据中的活动音频段和非活动音频段相分割,得到若干音频段;

计算模块,用于对每一个所述活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,之后对于每一个所述活动音频段,利用其每一个粒度中每一子带的能量值计算其粒度平均能量;

码率确定模块,用于根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,活动音频段的编码码率与活动音频段的粒度平均能量正相关;

第一编码处理模块,用于对于每一个所述活动音频段,按照其编码码率对其进行音频编码;

第二编码处理模块,用于对所述待编码音频数据分割得到的非活动音频段进行编码,且每一个所述活动音频段的编码码率大于每一个所述非活动音频段的编码码率。

为实现上述目的,本发明的技术方案还提供了一种音频编码装置,包括处理器以及与所述处理器耦合的存储器,其中,所述存储器中存储有指令,以供所述处理器执行,当所述处理器执行所述指令时,能实现根据上述的音频编码方法。

为实现上述目的,本发明的技术方案还提供了一种电子设备,包括上述的音频编码装置。

进一步地,所述电子设备为音箱、录音笔、手机、智能平板、笔记本电脑、台式电脑或电子玩具。

为实现上述目的,本发明的技术方案还提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述的音频编码方法。

本发明提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,并对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,同时使每一个活动音频段的编码码率大于每一个非活动音频段的编码码率,能够有效提高编码质量,减少编码后的音频失真。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本发明实施例提供的一种音频编码方法的流程图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

参见图1,图1是本发明实施例提供了一种音频编码方法的流程图,该音频编码方法包括:

步骤s1:对待编码音频数据进行语音端点检测处理,以将所述待编码音频数据中的活动音频段和非活动音频段相分割,得到若干音频段;

通过语音端点检测(vad)处理可以检测待编码音频数据中语音的起始和结束,例如,该步骤中,可以采用基于门限、统计模型或机器学习(如神经网络)的vad算法对待编码音频数据进行语音端点检测处理;

例如,所述活动音频段可以为音频特征满足预设条件的音频段,所述非活动音频段为音频特征不满足所述预设条件的音频段,上述预设条件可以根据具体需求进行设置,音频特征可以包括能量特征、频谱特征、谐波特征、子带信噪比、过零率中的一种或多种,即利用vad方法对待编码音频数据中提取的音频特征进行分析处理,实现活动音频段和非活动音频段的判决;

步骤s2:对每一个所述活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,之后对于每一个所述活动音频段,利用其每一个粒度中每一子带的能量值计算其粒度平均能量;

其中,对于每一个活动音频段,其粒度平均能量为其中各粒度的能量的平均值;

步骤s3:根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,活动音频段的编码码率与活动音频段的粒度平均能量正相关;

即,对于任意两个所述活动音频段,粒度平均能量较大的活动音频段的编码码率大于粒度平均能量较小的活动音频段的编码码率;

步骤s4:对于每一个所述活动音频段,按照其编码码率对其进行音频编码;

步骤s5:对所述待编码音频数据分割得到的非活动音频段进行编码,且每一个所述活动音频段的编码码率大于每一个所述非活动音频段的编码码率。

本发明实施例提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,并对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,同时使每一个活动音频段的编码码率大于每一个非活动音频段的编码码率,能够有效提高编码质量,减少编码后的音频失真。

例如,在一实施例中,上述的步骤s2可以具体包括:

步骤s21:对所述待编码音频数据分割得到的第k个活动音频段进行分块处理,得到若干个粒度,k=1,2,3,…,l,l为所述待编码音频数据分割得到的活动音频段的数量;

步骤s22:对所述第k个活动音频段的每一个粒度进行子带分解操作,然后对于所述第k个活动音频段的每一个粒度,计算其每一子带的能量值;

其中,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,sp(k,i)[sb][j]为所述第k个活动音频段的第i个粒度中第sb子带的第j频率线的频谱值,sb表示子带号,sb=1,2,3,…,n,n为每一个粒度中的子带数量,j表示频率线号,z为每一子带的频率线数量,a为大于1的预设值,例如,a的值为2或e或10;

步骤s23:计算所述第k个活动音频段在每一子带上的能量分布值;

其中,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值,grs_k为所述第k个活动音频段分块处理后得到的粒度数量;

步骤s24:确定所述第k个活动音频段的粒度平均能量edsk;

其中,本发明实施例中的上述音频编码方法可以应用在mp1(mpeg-1/2/2.5audiolayer-1)编码过程中或mp2(mpeg-1/2/2.5audiolayer-2)编码过程中或mp3(mpeg-1/2/2.5audiolayer-3)编码过程中,也可以应用在其他变换编码格式的编码过程中;

优选地,在一实施例中,可以将非活动音频段的编码码率设为所述音频编码方法对应的编码格式能支持的最低编码码率,例如,在一实施例中,所述音频编码方法为mp2编码格式的编码方法,若所述待编码音频数据的采样率大于等于32khz,则每一所述非活动音频段的编码码率为32kbps;若所述待编码音频数据的采样率小于32khz,则每一所述非活动音频段的编码码率为8kbps。

本实施例中,通过对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,即对粒度平均能量较大的活动音频段分配较多的位流,对粒度平均能量较少的活动音频段分配较少的位流,并使每一个活动音频段的编码码率大于每一个非活动音频段的编码码率,在相同压缩率的情况下可以有效提高编码质量,相同编码质量的情况下可以获得更高的压缩率,。

例如,在一实施例中,根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,可以具体包括:

获取所述待编码音频数据的总体目标编码码率;

根据所述待编码音频数据的总体目标编码码率、每一个所述非活动音频段的编码码率、每一个活动音频段的粒度平均能量计算每一个所述活动音频段的编码码率。

例如,在一实施例中,将非活动音频段的编码码率设为当前编码的编码格式所能支持的最低编码码率,然后根据待编码音频数据的总体目标编码码率以及各所述活动音频段的粒度平均能量之间的比例计算各活动音频段的编码码率,各所述活动音频段的编码码率之间的比例与各所述活动音频段的粒度平均能量之间的比例一致,各音频段的比特数量之和等于待编码音频数据的比特数量(待编码音频数据的总体目标编码码率与待编码音频数据的音频时长之积)。

例如,本发明实施例提供的音频编码方法可以应用于mp2编码格式的编码,具体流程步骤包括如下:

步骤a:对待编码音频数据进行语音端点检测(vad)处理,将待编码音频数据中的活动音频段和非活动音频段(能量较低的近似静音段)相分割,其中,各活动音频段的信号长度均为384个采样点的整数倍,例如,待编码音频数据分割后得到两个活动音频段和一个非活动音频段;

对第1个活动音频段进行分块处理,得到若干个粒度,每块384个采样点,作为一个粒度进行mp2编码的子带分解操作,获得32个子带,每个子带包含12条频率线,即n=32,z=12;

步骤b:对该第1个活动音频段的每一个粒度进行子带分解操作,然后对于该第1个活动音频段的每一个粒度,计算其每一子带的能量值;

其中,w(1,i)[sb]为该第1个活动音频段的第i个粒度中第sb子带的能量值,sp(1,i)[sb][j]为该第1个活动音频段的第i个粒度中第sb子带的第j频率线的频谱值;

步骤c:计算该第1个活动音频段在每一子带上的能量分布值;

例如,该第1个活动音频段共有36个粒度(即grs_1=36),即,d1[1]的值为第1个粒度的第1子带的能量值w(1,1)[1]、第2个粒度的第1子带的能量值w(1,2)[1]、...、第36个粒度的第1子带的能量值w(1,36)[1]之和,同理,依次计算d1[1]、...、d1[32],共有能量分布值32个;

步骤d:对该第1个活动音频段子带的能量分布值,计算期望并求和;

edf1[sb]=d1[sb]/grs_1;

得到该第1个活动音频段的信息量分布表,记作edf_1:edf1[sb:1~32],以及该第1个活动音频段的粒度平均能量eds1;

其中,edfk[sb]表示第k个活动音频段在第sb子带上的能量分布期望;

步骤e:采用上述相同的方法对第2个活动音频段进行处理,得到第2个活动音频段的信息量分布表edf_2以及粒度平均能量eds2;

将非活动音频段的编码码率设为mp2编码所能支持的最低编码码率bitrate_min,再根据eds1、eds2之间的比例及待编码音频数据的总体目标编码码率计算第1个活动音频段的编码码率和第2个活动音频段的编码码率;

通过上述方式,可以减少非活动音频段消耗的位流,提高压缩比,并在活动音频段之间合理分配位流,有效提升活动音频段的编码质量;

步骤f:对所述若干音频段中的每一音频段,根据其编码码率对其进行mp2音频编码,例如,每一音频段可以采用心理声学模型进行编码;

本实施例提供的音频编码方法,在相同编码码率上编码出来的mp2失真更小,可以很好的保证音频信号的恢复。

此外,由于固定的心理声学模型通常会在低频优先分配位流,而现实中的声音是不同种类的,由于不同种类的声音信号中,子带的信息分布情况是不同的,若采用固定的心理声学模型,在频率比较丰富或高频比较多的音频信号中容易导致高频损失较为严重的问题,优选地,在一实施例中,第k个活动音频段的编码过程包括:

步骤s41:获取所述第k个活动音频段的每一个粒度中每一子带的信号掩蔽比,然后根据所述第k个活动音频段的每一个粒度中每一子带的信号掩蔽比以及所述第k个活动音频段在每一子带上的能量分布值计算所述第k个活动音频段的每一个粒度中每一子带的比特分配权重值;

p(k,i)[sb]=c*smr(k,i)[sb]*dk[sb];

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,smr(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的信号掩蔽比,c为预设系数且为正值;

其中,对于每一个粒度,可以采用心理声学模型对该粒度对应帧进行分析处理,得到信号掩蔽表,包括粒度中每一子带的信号掩蔽比;

步骤s42:对于所述第k个活动音频段的每一个粒度,根据其中每一子带的比特分配权重值对其中每一子带进行比特分配,其中,同一粒度中的任意两子带,比特分配权重值较大的子带分配得到的比特数量大于比特分配权重值较小的子带分配得到的比特数量;

例如,对于所述第k个活动音频段的每一个粒度,其中各子带分配得到的比特数量之间的比例与其中各子带的比特分配权重值之间的比例一致。

步骤s43:对于所述第k个活动音频段的每一个粒度中的每一个子带,按照对其分配的比特数量对其频率线进行量化,并在量化后进行位流封装;

例如,在上述的步骤s41中,可以先对第k个活动音频段的信息量分布表做归一化处理edfk[sb]/edsk,然后依次乘以n、相应的信号掩蔽比;

p(k,i)[sb]=smr(k,i)[sb]*dk[sb]*n/(grs_k*edsk);

即对于第k个活动音频段:c=n/(grs_k*edsk);

例如,在一实施例中,所述待编码音频数据分割得到的每一个活动音频段,均采用上述的步骤s41-步骤s43进行编码,即,另k依次为1与l之间的各个整数。

通过上述方式,可以兼顾不同种类的声音信号,有利于实现不同种类的声音信号在编码后的信号恢复,并且还有利于实现较为平稳的量化水平以及及时的频谱跟踪。

本发明实施例还提供了一种音频编码装置,包括:

语音端点检测处理模块,用于对待编码音频数据进行语音端点检测处理,以将所述待编码音频数据中的活动音频段和非活动音频段相分割,得到若干音频段;

计算模块,用于对每一个所述活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,之后对于每一个所述活动音频段,利用其每一个粒度中每一子带的能量值计算其粒度平均能量;

码率确定模块,用于根据每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,活动音频段的编码码率与活动音频段的粒度平均能量正相关;

第一编码处理模块,用于对于每一个所述活动音频段,按照其编码码率对其进行音频编码;

第二编码处理模块,用于对所述待编码音频数据分割得到的非活动音频段进行编码,且每一个所述活动音频段的编码码率大于每一个所述非活动音频段的编码码率。

本发明实施例还提供了一种音频编码装置,包括处理器以及与所述处理器耦合的存储器,其中,所述存储器中存储有指令,以供所述处理器执行,当所述处理器执行所述指令时,能实现上述的音频编码方法。

本发明实施例提供的音频编码装置,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,并对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,同时使每一个活动音频段的码率大于每一个非活动音频段的码率,能够有效提高编码质量,减少编码后的音频失真。

本发明实施例还提供了一种电子设备,包括上述的音频编码装置。例如,所述电子设备可以为音箱、录音笔、手机、智能平板、笔记本电脑、台式电脑或电子玩具。

本发明实施例还提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述的音频编码方法。

本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。

应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

tips