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

基于语音端点检测的音频编码方法及装置、设备、介质与流程

2021-01-28 14:01:26|238|起点商标网
基于语音端点检测的音频编码方法及装置、设备、介质与流程

本发明涉及音频编码技术领域,尤其涉及一种基于语音端点检测的音频编码方法及装置、设备、介质。



背景技术:

mpeg(movingpictureexpertsgroup,运动图像专家组)音频编码标准是目前数字音频压缩技术的主流,通过mpeg音频编码可以将原始音频数据转换为压缩数据,压缩后的数据数据量更少,从而有利于节省存储空间以及减少网络传输所需要的网络带宽,mpeg音频标准定义了三种不同的压缩层次,即mpegaudiolayer-1、mpegaudiolayer-2、mpegaudiolayer-3,分别简称mp1、mp2和mp3,其中,层次越高压缩性能越好,但是编码的开销和译码的复杂度也随之增加,mp2编码均衡了性能和复杂度,便于在很多系统中实现。

目前,mpegaudiolayer-1/2/3音频编码方式主要采用心理声学模型对不同的子带进行位流分配,然而,由于固定的心理声学模型对各个子带使用固定预偏重的位流分配(即对整个编码过程使用固定偏重参考),而现实中的声音是不同种类的(如存在语音、音乐、乐器等不同种类的声音),由于不同种类的声音信号中,子带的信息分布情况是不同的,使得固定的心理声学模型很难兼顾不同种类的声音,例如,通常情况下,固定的心理声学模型会在低频优先分配位流,这样就会造成:在对频率比较丰富或高频较多的声音信号进行编码时,容易导致高频损失较为严重的问题。



技术实现要素:

基于上述现状,本发明的主要目的在于提供一种基于语音端点检测的音频编码方法及装置、设备、介质,有利于兼顾不同种类的声音信号。

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

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

步骤s2:对所述待编码音频数据分割得到的第k个活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,以及利用所述第k个活动音频段的每一个粒度中每一子带的能量值计算所述第k个活动音频段在每一子带上的能量分布值,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

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

p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])或(w(k,i)[sb]*dk[sb])正相关;

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,smr(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的信号掩蔽比,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值;

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

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

步骤s6:对所述待编码音频数据分割得到的非活动音频段进行编码。

进一步地,所述步骤s4包括:

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

进一步地,所述步骤s6包括:

步骤s61:对所述待编码音频数据分割得到的第h个非活动音频段进行分块处理,得到若干个粒度,h为1~v中的整数,v为所述待编码音频数据分割得到的非活动音频段的个数;

步骤s62:对所述第h个非活动音频段的每一个粒度进行子带分解操作;

步骤s63:根据所述第h个非活动音频段相邻的两个活动音频段在每一子带上的能量分布值确定所述第h个非活动音频段在每一子带上的能量分布值;

其中,对于每一子带,所述第h个非活动音频段在其上的能量分布值为所述第h个非活动音频段相邻的两个活动音频段在其上的能量分布值的均值;

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

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

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

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

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

进一步地,所述步骤s65包括:

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

进一步地,所述p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])正相关,包括:

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

c1为预设系数且为正值。

进一步地,所述p(k,i)[sb]与(w(k,i)[sb]*dk[sb])正相关,包括:

p(k,i)[sb]=c2*w(k,i)[sb]*dk[sb];

c2为预设系数且为正值。

进一步地,步骤s2包括:

步骤s21:对所述第k个活动音频段进行分块处理,得到若干个粒度;

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

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

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

其中,grs_k为所述第k个活动音频段分块处理后得到的粒度数量。

进一步地,所述活动音频段的编码码率大于所述非活动音频段的编码码率。

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

进一步地,若l不小于2,则在步骤s4之前,所述方法还包括:

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

根据l个所述活动音频段中每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,对于任意两个所述活动音频段,粒度平均能量较大的活动音频段的编码码率大于粒度平均能量较小的活动音频段的编码码率;

对于每一个所述活动音频段,根据其编码码率确定其每一个粒度的总比特数量。

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

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

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

进一步地,所述对于任意两个所述活动音频段,粒度平均能量较大的活动音频段的编码码率大于粒度平均能量较小的活动音频段的编码码率,包括:

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

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

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

第一计算模块,用于对所述待编码音频数据分割得到的第k个活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,以及利用所述第k个活动音频段的每一个粒度中每一子带的能量值计算所述第k个活动音频段在每一子带上的能量分布值,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

第二计算模块,用于根据所述第k个活动音频段的每一个粒度中每一子带的特征参数以及所述第k个活动音频段在每一子带上的能量分布值计算所述第k个活动音频段的每一个粒度中每一子带的比特分配权重值,所述特征参数为信号掩蔽比或能量值;

p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])或(w(k,i)[sb]*dk[sb])正相关;

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,smr(k,i)[sb]为所述第)个活动音频段的第i个粒度中第sb子带的信号掩蔽比,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值;

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

第一编码处理模块,用于对于所述第k个活动音频段的每一个粒度中的每一个子带,按照对其分配的比特数量对其频率线进行量化,并在量化后进行位流封装;

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

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

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

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

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

本发明提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,之后对于分割得到的活动音频段,统计其能量分布情况,并结合信号掩蔽信息或粒度的能量分布情况进行比特分配,不但相比现有技术有利于兼顾不同种类的声音信号,有利于实现不同种类的声音信号在编码后的信号恢复,并且还有利于实现较为平稳的量化水平以及及时的频谱跟踪。

附图说明

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

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

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

具体实施方式

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

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

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

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

实施例一

参见图1,图1是本发明实施例提供的一种基于语音端点检测的音频编码方法的流程图,该方法包括:

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

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

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

步骤s102:对所述待编码音频数据分割得到的第k个活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,以及利用所述第k个活动音频段的每一个粒度中每一子带的能量值计算所述第k个活动音频段在每一子带上的能量分布值,为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

步骤s103:根据所述第k个活动音频段的每一个粒度中每一子带的信号掩蔽比以及所述第k个活动音频段在每一子带上的能量分布值计算所述第k个活动音频段的每一个粒度中每一子带的比特分配权重值,即本实施例中,特征参数为信号掩蔽比;

p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])正相关;

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,smr(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的信号掩蔽比,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值;

其中,每一子带的信号掩蔽比可以通过心理声学模型分析得到;

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

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

步骤s106:对所述待编码音频数据分割得到的非活动音频段进行编码。

本发明实施例提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,之后对于分割得到的活动音频段,统计其能量分布情况,并结合信号掩蔽信息进行比特分配,不但相比现有技术有利于兼顾不同种类的声音信号,有利于实现不同种类的声音信号在编码后的信号恢复,并且还有利于实现较为平稳的量化水平以及及时的频谱跟踪。

例如,在一实施例中,所述p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])正相关,包括:

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

c1为预设系数且为正值。

例如,在一实施例中,步骤s102包括:

步骤s1021:对所述第k个活动音频段进行分块处理,得到若干个粒度,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

步骤s1022:对所述第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;

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

其中,grs_k为所述第k个活动音频段分块处理后得到的粒度数量。

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

优选地,在本实施例中,对于活动音频段的每一个粒度,可以按照其中各子带的比特分配权重值之间的比例进行比特分配,其中,所述步骤s104包括:

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

例如,在一实施例中,在上述的步骤s104中,对于所述第k个活动音频段在每一子带上的能量分布值,可以计算期望值,得到第k个活动音频段的信息量分布表,记作edf_k:edfk[sb:1~n],并确定所述第k个活动音频段的粒度平均能量edsk;

edfk[sb]=dk[sb]/grs_k;

其中,edfk[sb]表示所述第k个活动音频段在第sb子带上的能量分布期望,可以理解的是,第k个活动音频段中,能量分布值越大,则能量分布期望越大,因此,也可以根据信息量分布表计算比特分配权重值,具体地,可以先对信息量分布表做归一化处理edfk[sb]/edsk,然后依次乘以n、相应的信号掩蔽比;

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

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

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

例如,在一实施例中,在步骤s106中,可采用现有的编码方式对所述待编码音频数据分割得到的非活动音频段进行编码,例如,对于每一个非活动音频段,可以采用心理声学模型进行比特分配,并按照比特分配的结果进行编码;

例如,在另一实施例中,对于每待编码音频数据分割得到的每一个非活动音频段,也可以采用与上述活动音频段相同的编码方式,即可以根据自身的子带能量分布情况以及信号掩蔽比进行编码,优选地,由于相邻音频段的子带能量分布情况存在相似性,因此,为减少数据运算量,对于任意一非活动音频段,可以根据其相邻的活动音频段的子带能量分布情况得到该非活动音频段的子带能量分布情况,例如,在一实施例中,所述步骤s106包括:

步骤s1061:对所述待编码音频数据分割得到的第h个非活动音频段进行分块处理,得到若干个粒度,h为1~v中的整数,v为所述待编码音频数据分割得到的非活动音频段的个数;

步骤s1062:对所述第h个非活动音频段的每一个粒度进行子带分解操作;

步骤s1063:根据所述第h个非活动音频段相邻的两个活动音频段在每一子带上的能量分布值确定所述第h个非活动音频段在每一子带上的能量分布值;

其中,对于每一子带,所述第h个非活动音频段在其上的能量分布值为所述第h个非活动音频段相邻的两个活动音频段在其上的能量分布值的均值;即,所述第h个非活动音频段在第1子带上的能量分布值为所述第h个非活动音频段相邻的两个活动音频段在第1子带上的能量分布值的均值,所述第h个非活动音频段在第2子带上的能量分布值为所述第h个非活动音频段相邻的两个活动音频段在第2子带上的能量分布值的均值,……;

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

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

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

其中,本实施例中,在得到非活动音频段的每一个粒度中每一子带的信号掩蔽比以及非活动音频段在每一子带上的能量分布值后,计算非活动音频段的每一个粒度中每一子带的比特分配权重值所采用的方式与活动音频段所采用的方式相同;

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

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

本实施例中,对于待编码音频数据中的非活动音频段,根据信号掩蔽信息以及相邻的两个活动音频段的能量分布情况进行编码,不但可以提高非活动音频段的编码质量,还可以有效减少数据的运算量。

优选地,在一实施例中,对于非活动音频段的每一个粒度,可以按照其中各子带的比特分配权重值之间的比例进行比特分配,其中,所述步骤s1065包括:对于所述第h个非活动音频段的每一个粒度,其中各子带分配得到的比特数量之间的比例与其中各子带的比特分配权重值之间的比例一致。

优选地,在一实施例中,可以使所述活动音频段的编码码率大于所述非活动音频段的编码码率,使得所述活动音频段的每一个粒度的总比特数量大于所述非活动音频段的每一个粒度的总比特数量,这样可以使得对于同样的待编码音频数据,在相同编码码率的情况下编码得到的数据失真更小,在相同编码质量的情况下可以获得更高的压缩率;

例如,在一实施例中,活动音频段的编码码率和非活动音频段的编码码率可以分别为预先存储在存储器中的第一预设值和第二预设值,且第一预设值大于第二预设值,当需要时,可以从存储器中获取活动音频段的编码码率和非活动音频段的编码码率;

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

本实施例中,通过对待编码音频数据进行语音端点检测处理,将待编码音频数据中的活动音频段和非活动音频段相分割,其中,非活动音频的能量较低,包含的信息量较少,即使采用较少的比特数量进行编码也不会对编码后信号的恢复造成较大影响,从而可以提高待编码音频数据的压缩比(压缩率),或者可以将比特(位流)资源平衡到其他的活动音频段,从而提高编码的质量。

例如,在一实施例中,若l不小于2(即待编码音频数据分割得到的活动音频段为多个),则在步骤s104之前,所述方法还包括:

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

根据l个所述活动音频段中每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,对于任意两个所述活动音频段,粒度平均能量较大的活动音频段的编码码率大于粒度平均能量较小的活动音频段的编码码率;

对于每一个所述活动音频段,根据其编码码率确定其每一个粒度的总比特数量。

本实施例中,通过对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,即对粒度平均能量较大的活动音频段分配较多的位流,对粒度平均能量较少的活动音频段分配较少的位流,在相同压缩率的情况下有利于进一步提高编码质量。。

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

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

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

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

本发明实施例提供的音频编码方法,通过vad处理,每个音频段根据自身信息量分布情况采用相应的子带位流分配方式,可以实现段内短时平稳的量化水平以及段间及时的频谱跟踪。

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

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

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

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

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

步骤1c:计算该第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个;

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

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

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

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

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

通过上述方式,可以减少非活动音频段消耗的位流,提高压缩比,给活动音频段分配较多位流,提升活动音频段的压缩质量;

步骤1f:对于该第1个活动音频段的每一个粒度,结合其每一子带的信号掩蔽比(对应帧经过心理声学模型分析得到)、该第1个活动音频段的信息量分布表edf_1计算其每一子带的比特分配权重值,之后再根据第1个活动音频段的编码码率计算得到第1个活动音频段的子带位流分配表,然后对第1个活动音频段进行mp2编码的后续操作,将每个粒度32个子带对应的12条频率线按照其子带位流分配表中的子带位流分配信息进行量化,量化后拼接为最终编码位流信息;

对于该第2个活动音频段的每一个粒度,结合其每一子带的信号掩蔽比(对应帧经过心理声学模型分析得到)、该第2个活动音频段的信息量分布表edf_2计算其每一子带的比特分配权重值,之后再根据第2个活动音频段的编码码率计算得到第2个活动音频段的子带位流分配表,然后对第2个活动音频段进行mp2编码的后续操作,将每个粒度32个子带对应的12条频率线按照其子带位流分配表中的子带位流分配信息进行量化,量化后拼接为最终编码位流信息;

对于非活动音频段,首先可以根据第1个活动音频段以及第2个活动音频段在每一子带上的能量分布值确定该非活动音频段在每一子带上的能量分布值(或者能量分布期望),即得到该非活动音频段的信息量分布表,之后对于该非活动音频段的每一个粒度,结合其每一子带的信号掩蔽比(对应帧经过心理声学模型分析得到)、该非活动音频段的信息量分布表计算其每一子带的比特分配权重值,之后再根据该非活动音频段的编码码率计算得到该非活动音频段的子带位流分配表,然后对该非活动音频段进行mp2编码的后续操作,将每个粒度32个子带对应的12条频率线按照其子带位流分配表中的子带位流分配信息进行量化,量化后拼接为最终编码位流信息;

本实施例提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,每个音频段可以结合自身的子带信息情况以及信号掩蔽信息实现动态位流分配,使得段内位流分配相对平稳,减少时间轴上子带位流分配量突变带来的量化谱波动,有利于减少噪声,同时灵活跟踪谱变化,保证信息量大的子带多分配位流、信息量少的子带少分配或者不分配位流信息,相比现有技术可以能够实现更灵活的位流分配方式,相同质量的编码可以获得更高的压缩率,在相同编码码率上编码出来的mp2失真更小,可以很好的保证音频信号的恢复。

实施例二

参见图2,图2是本发明实施例提供的另一种基于语音端点检测的音频编码方法的流程图,该方法包括:

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

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

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

步骤s202:对所述待编码音频数据分割得到的第k个活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,以及利用所述第k个活动音频段的每一个粒度中每一子带的能量值计算所述第k个活动音频段在每一子带上的能量分布值,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

步骤s203:根据所述第k个活动音频段的每一个粒度中每一子带的能量值以及所述第k个活动音频段在每一子带上的能量分布值计算所述第k个活动音频段的每一个粒度中每一子带的比特分配权重值,即本实施例中,特征参数为能量值;

p(k,i)[sb]与(w(k,i)[sb]*dk[sb])正相关;

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值;

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

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

步骤s206:对所述待编码音频数据分割得到的非活动音频段进行编码。

本发明实施例提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,并统计活动音频段的能量分布情况,对于活动音频段的每一个粒度,结合粒度的能量分布情况以及音频段的能量分布情况进行比特分配,不但相比现有技术有利于兼顾不同种类的声音信号,有利于实现不同种类的声音信号在编码后的信号恢复,并且还有利于实现较为平稳的量化水平以及及时的频谱跟踪。

例如,在一实施例中,所述p(k,i)[sb]与(w(k,i)[sb]*dk[sb])正相关,包括:

p(k,i)[sb]=c2*w(k,i)[sb]*dk[sb];

c2为预设系数且为正值。

例如,在一实施例中,所述步骤s202可以具体包括:

步骤s2021:对所述第k个活动音频段进行分块处理,得到若干个粒度,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

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

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

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

其中,grs_k为所述第k个活动音频段分块处理后得到的粒度数量。

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

优选地,在一实施例中,对于活动音频段的每一个粒度,可以按照其中各子带的比特分配权重值之间的比例进行比特分配,其中,所述步骤s204包括:

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

例如,在一实施例中,在上述的步骤s204中,对于所述第k个活动音频段在每一子带上的能量分布值,可以计算期望值,得到第k个活动音频段的信息量分布表,记作edf_k:edfk[sb:1~n],并确定所述第k个活动音频段的粒度平均能量edsk;

edfk[sb]=dk[sb]/grs_k;

其中,edfk[sb]表示所述第k个活动音频段在第sb子带上的能量分布期望,可以理解的是,第k个活动音频段中,能量分布值越大,则能量分布期望越大,因此,也可以根据信息量分布表计算比特分配权重值,具体地,可以先对信息量分布表做归一化处理edfk[sb]/edsk,然后依次乘以n、粒度中相应子带的能量值;

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

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

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

例如,在一实施例中,在步骤s206中,可采用现有的音频编码方式对所述待编码音频数据分割得到的非活动音频段进行编码,例如,对于每一个非活动音频段,可以采用心理声学模型进行比特分配,并按照比特分配的结果进行编码,此外,也可以采用实施例一中步骤s1061~步骤s1066中的方式对非活动音频段进行编码;

优选地,在一实施例中,可以使所述活动音频段的编码码率大于所述非活动音频段的编码码率,使得所述活动音频段的每一个粒度的总比特数量大于所述非活动音频段的每一个粒度的总比特数量,这样可以使得对于同样的待编码音频数据,在相同编码码率的情况下编码得到的数据失真更小,在相同编码质量的情况下可以获得更高的压缩率;

例如,在一实施例中,活动音频段的编码码率和非活动音频段的编码码率可以分别为预先存储在存储器中的第一预设值和第二预设值,且第一预设值大于第二预设值,当需要时,可以从存储器中获取活动音频段的编码码率和非活动音频段的编码码率;

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

本实施例中,通过对待编码音频数据进行语音端点检测处理,将待编码音频数据中的活动音频段和非活动音频段相分割,其中,非活动音频的能量较低,包含的信息量较少,即使采用较少的比特数量进行编码也不会对编码后信号的恢复造成较大影响,从而可以提高待编码音频数据的压缩比,或者可以将比特(位流)资源平衡到其他的活动音频段,从而提高编码的质量。

例如,在一实施例中,若l不小于2(即待编码音频数据分割得到的活动音频段为多个),则在步骤s204之前,所述方法还包括:

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

根据l个所述活动音频段中每一个所述活动音频段的粒度平均能量确定每一个所述活动音频段的编码码率,其中,对于任意两个所述活动音频段,粒度平均能量较大的活动音频段的编码码率大于粒度平均能量较小的活动音频段的编码码率;

对于每一个所述活动音频段,根据其编码码率确定其每一个粒度的总比特数量。

本实施例中,通过对粒度平均能量较大的活动音频段设置较大的编码码率,对粒度平均能量较小的活动音频段设置较小的编码码率,即对粒度平均能量较大的活动音频段分配较多的位流,对粒度平均能量较少的活动音频段分配较少的位流,在相同压缩率的情况下有利于进一步提高编码质量。

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

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

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

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

本发明实施例提供的音频编码方法,通过vad处理,每个音频段根据自身信息量分布情况采用相应的子带位流分配方式,可以实现段内短时平稳的量化水平以及段间及时的频谱跟踪。

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

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

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

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

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

步骤2c:计算该第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个;

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

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

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

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

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

通过上述方式,可以减少非活动音频段消耗的位流,提高压缩比,给活动音频段分配较多位流,提升活动音频段的压缩质量;

步骤2f:对于该第1个活动音频段的每一个粒度,结合粒度的能量分布情况、该第1个活动音频段的信息量分布表edf_1计算其每一子带的比特分配权重值,之后再根据第1个活动音频段的编码码率计算得到第1个活动音频段的子带位流分配表,然后对第1个活动音频段进行mp2编码的后续操作,将每个粒度32个子带对应的12条频率线按照其子带位流分配表中的子带位流分配信息进行量化,量化后拼接为最终编码位流信息;

对于该第2个活动音频段的每一个粒度,结合粒度的能量分布情况、该第2个活动音频段的信息量分布表edf_2计算其每一子带的比特分配权重值,之后再根据第2个活动音频段的编码码率计算得到第2个活动音频段的子带位流分配表,然后对第2个活动音频段进行mp2编码的后续操作,将每个粒度32个子带对应的12条频率线按照其子带位流分配表中的子带位流分配信息进行量化,量化后拼接为最终编码位流信息;

对于非活动音频段,可以采用心理声学模型进行比特分配,并按照比特分配的结果进行编码;

本实施例提供的音频编码方法,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,对于活动音频段的每一个粒度,结合粒度的能量分布情况以及活动音频段的能量分布情况实现动态位流分配,使得段内位流分配相对平稳,减少时间轴上子带位流分配量突变带来的量化谱波动,有利于减少噪声,同时灵活跟踪谱变化,保证信息量大的子带多分配位流、信息量少的子带少分配或者不分配位流信息,相比现有技术可以能够实现更灵活的位流分配方式,相同质量的编码可以获得更高的压缩率,在相同编码码率上编码出来的mp2失真更小,可以很好的保证音频信号的恢复。

实施例三

本发明实施例还提供了一种基于语音端点检测的音频编码装置,包括:

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

第一计算模块,用于对所述待编码音频数据分割得到的第k个活动音频段进行分块处理得到若干个粒度,再对每一个粒度进行子带分解并计算每一个粒度中每一子带的能量值,以及利用所述第k个活动音频段的每一个粒度中每一子带的能量值计算所述第k个活动音频段在每一子带上的能量分布值,k为1~l中的任意整数,l为所述待编码音频数据分割得到的活动音频段的数量;

第二计算模块,用于根据所述第k个活动音频段的每一个粒度中每一子带的特征参数以及所述第k个活动音频段在每一子带上的能量分布值计算所述第k个活动音频段的每一个粒度中每一子带的比特分配权重值,所述特征参数为信号掩蔽比或能量值;

p(k,i)[sb]与(smr(k,i)[sb]*dk[sb])或(w(k,i)[sb]*dk[sb])正相关;

其中,p(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的比特分配权重值,smr(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的信号掩蔽比,w(k,i)[sb]为所述第k个活动音频段的第i个粒度中第sb子带的能量值,dk[sb]为所述第k个活动音频段在第sb子带上的能量分布值;

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

第一编码处理模块,用于对于所述第k个活动音频段的每一个粒度中的每一个子带,按照对其分配的比特数量对其频率线进行量化,并在量化后进行位流封装;

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

本发明实施例提供的音频编码装置,通过对待编码音频数据进行语音端点检测处理,将其中的活动音频段和非活动音频段相分割,之后对于分割得到的活动音频段,统计其能量分布情况,并结合信号掩蔽信息进行比特分配,不但相比现有技术有利于兼顾不同种类的声音信号,有利于实现不同种类的声音信号在编码后的信号恢复,并且还有利于实现较为平稳的量化水平以及及时的频谱跟踪。

实施例四

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

实施例五

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

实施例六

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

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

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

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

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

tips