具体实施方式
本发明如下实施例提供了一种语音编码方法及装置。本申请实施例根据输入语音信号的输入总速率,以及输入语音信号中低带信号和高带信号的类型,自动调整为低带信号和高带信号分配的低带速率和高带速率,并根据分配的速率分别对低带信号和高带信号进行自适应编码,从而提升语音编码的整体性能。
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
数字信号处理领域,音频编解码器、视频编解码器广泛应用于各种电子设备中,例如:移动电话,无线装置,个人数据助理(PDA),手持式或便携式计算机,GPS接收机/导航器,照相机,音频/视频播放器,摄像机,录像机,监控设备等。通常,这类电子设备中包括音频编码器或音频解码器,音频编码器或者解码器可以直接由数字电路或芯片例如DSP(digital signalprocessor)实现,或者由软件代码驱动处理器执行软件代码中的流程而实现。
参见图1,为本申请语音编码方法的第一实施例流程图:
步骤101:将输入的音频信号分为低带信号和高带信号。
不住102:分别识别低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式。
其中,低带信号和高带信号根据其信号特点的不同进行类型划分,例如,低带信号可以包括语音信号和音乐audio信号,语音信号可以进一步分为清音段信号、稳定浊音段信号、一般语音帧和音频帧信号和过渡帧信号等;高带信号可以包括噪声类信号、时域陡变信号、谐波性较强的信号、具有一定谐波性的一般信号等。
所划分的不同类型的信号对应不同的编码模式,例如:
语音信号和音乐audio信号分别对应的编码模式为语音编码模式和音乐audio编码模式,其中语音编码模式包括但不限于如下模式:对清音段信号进行编码的UC(Unvoiced Coding mode,清音编码)模式、对稳定浊音段进行编码的VC(Voiced Coding mode,浊音编码)模式、对一般语音帧和音频帧进行编码的GC(Generic Coding mode,普通编码)模式、以及对过渡帧进行编码的TC(transition Coding mode过渡编码)模式。
高带信号对应的不同编码模式包括但不限于如下模式:对类噪声信号进行编码的Noise(噪声编码)模式,对时域陡变信号进行编码的Transient(瞬态编码)模式,对谐波性较强的信号进行编码的Harmonic(谐波编码)模式,对具有一定谐波性的其余信号进行编码的Normal(普通编码)模式。Normal模式也可根据需要和特定的编解码方法进一步分类处理。
需要说明的是,上述高带信号和低带信号的编码模式都是按照音频信号类型的不同进行分类的,实际应用过程中,可以不局限于上述的分类模式,即可以根据信号类型进一步细分更多的编码模式。
步骤103:按照低带信号和高带信号对应的不同编码模式,将音频信号的输入总速率自适应分配给低带信号和高带信号,其中,分配给低带信号的为低带速率,分配给高带信号的为高带速率。
具体的,可以将音频信号的输入总速率分别按照预设的低带速率或高带速率进行逐级调整后,分配给所述低带信号和所述高带信号。
在输入速率一定的情况下,优先保证低带信号的编码速率;当低带信号的类型对应的编码模式为UC模式时,则将预设的低带速率集合中的最低速率作为低带速率分配给所述低带信号;当输入总速率大于等于预设的第一速率时,首先将高带速率集合中的最低速率作为初始高带速率分配给所述高带信号;当高带信号对应的编码模式符合速率调整的类型时,对高带速率逐级调整,将高带信号编码模式对应的比初始高带速率高的调整速率作为高带速率分配给所述高带信号。在其他实施方式中,可以根据高带信号和低带信号对应的不同编码模式做其他的调整,满足优先保证低带信号的编码速率;在输入总速率较大时,以高带速率集合中的最低速率为起点对高带速率进行调整;在低带信号对应的编码模式为占用速率最低的编码模式时,为低带信号分配低带速率集合中的最低速率。
本申请实施例与现有技术的不同在于,不是按照预设的给定速率分别对低带信号和高带信号进行编码,而是根据低带信号和高带信号的类型,对其速率进行自适应调整,具体的调整过程在后续实施例中进行详细描述。
步骤104:通过低带信号对应的编码模式按照所分配的低带速率对低带信号进行编码,以及通过高带信号对应的编码模式按照所分配的高带速率对高带信号进行编码。
由上述实施例可见,由于在对低带信号和高带信号进行编码时,并非按照标准中给定或编码前设定的速率进行编码,而是根据信号类型的不同自适应调整编码速率,因此提高了音频编码的总体性能。
参见图2,为应用本申请语音编码方法实施例进行编码的一种编码器结构示意图:
该编码器包括:分带滤波模块、自适应比特分配模块、高带编码模块、低带核心编码模块、以及复用模块。其中,高带编码模块中进一步包括高带编码分类模块和NH个高带信号编码模块,低带核心编码模块中进一步包括低带核心编码分类模块和NL个低带信号编码模块。其中,NH个高带信号编码模块对应NH个高带信号类型,NL个低带信号编码模块对应NL个低带信号类型。
其中,输入的音频信号通过分带滤波模块处理后,分为高带信号和低带信号,其中,高带信号输入高带编码模块,由高带编码模块中的高带编码器分类模块识别高带信号的类型,以便根据高带信号的类型为其分配高带信号编码模块;低带信号输入低带核心编码模块,由低带核心编码模块中的低带编码器分类模块识别低带信号的类型,以便根据低带信号的类型为其分配低带信号编码模块;同时自适应比特分配模块根据识别出的低带信号和高带信号的类型,将输入总速率自适应分配给低带信号和高带信号。
下面结合具体应用实施例,对自适应分配低带速率和高带速率的过程进行详细描述。
为了方便应用实施例的描述,首先假设预先设置的音频编码输入总速率集合中的输入总速率包括:B1,B2,...,BM,共有M种输入总速率;
预先设置低带速率集合中的低带速率包括:BL1,BL2...BLP,共有P种低带速率,其中BL1<BL2...<BLP;预先设置高带速率集合中的高带速率包括:BH1,BH2...BHQ,共有Q种高带速率,其中BH1<BH2...<BHQ,BH1可以是0,即为了保证总体质量,可以只编码低带信号而不编码高带信号。上述任意低带速率和高带速率的组合后的总速率对应于总速率集合B1,B2,...,BM中的一个速率,即Bk=BLi+BHj,其中i=1,2,...,P;j=1,2,...,Q;k=1,2,...,M。另外也有,BM=BLP+BHQ,B1=BL1+BH1。
参见图3,为本申请语音编码方法的第二实施例流程图,该实施例示出了低带信号中仅包含语音信号的编码过程:
步骤301:将输入的音频信号分为低带信号和高带信号。
步骤302:分别识别低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式。
本申请实施例中,低带信号中仅使用语音(speech)编码模式,例如,CELP(Code Excited Linear Prediction,码激励线性预测)编码。其中,语音编码模式包括:对清音段信号进行编码的UC模式、对稳定浊音段进行编码的VC模式、对一般语音帧和音频帧进行编码的GC模式、以及对过渡帧进行编码的TC模式。
不同类型的高带信号对应的编码模式包括:对类噪声信号进行编码的Noise模式,对时域陡变信号进行编码的Transient编码模式,对谐波性较强的信号进行编码的Harmonic模式,对具有一定谐波性的其余信号进行编码的Normal模式。Normal模式也可根据需要和特定的编解码方法进一步分类处理。
步骤303:判断低带信号的类型对应的编码模式是否为UC,若是,则执行步骤304;否则,执行步骤305。
步骤304:将预设的低带速率集合中的最低速率作为低带速率分配给低带信号,将输入总速率减去低带速率后得到的剩余速率作为高带速率分配给高带信号,执行步骤311。
当低带信号的编码模式为UC时,假设输入总速率为Bi(其中i=1,...,M),则设置低带信号的低带速率为BL1,相应的高带信号的高带速率为Bi-BL1。
步骤305:判断输入总速率是否小于预设的第一速率,若是,则执行步骤306;否则,执行步骤307。
假设输入总速率为Bi(其中i=1,...,M),则判断Bi是否小于预设的第一速率,该预设的第一速率可以是输入总速率集合中所有总速率从低到高排列后,位于前三分之一位置处的输入总速率,例如,输入总速率集合中按照从低到高顺序排列的输入总速率为B1、B2、B3、B4、B5、B6,则该预设的第一速率可以设置为B2。
步骤306:将预设的高带速率集合中的最低速率作为高带速率分配给高带信号,将输入总速率减去高带速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤311。
当输入总速率Bi小于预设的第一速率时,则设置高带信号的高带速率为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤307:将高带速率集合中的最低速率作为初始高带速率分配给高带信号。
当低带信号的编码模式不为UC,且输入总速率Bi不小于预设的第一速率时,可以设置高带信号的高带速率为BH1,BH1是高带速率集合中的最低速率,由此可以保证低带分配较多的速率,从而更好地保证低带质量。
除了上述示出的设置高带信号的高带速率为BH1外,也可以设置初始高带速率为高带速率集合中与Bi*alpha1的结果临近的速率,其中alpha1可以是一预设值,例如可以为1/3;或者,也可以先设置低带速率为低带速率集合中与Bi*alpha2的结果临近的速率,其中alpha2可以是以预设值,例如可以为2/3,相应初始高带速率为Bi-Bi*alpha2。上述对于初始高带速率的设置方式可以有多种,对此本申请实施例不进行限制。
步骤308:判断高带信号的类型对应的编码模式是否为Harmonic模式,若是,则执行步骤309;否则,执行步骤310。
步骤309:将高带速率调整为高带速率集合中按照从低到高顺序排列时,初始高带速率的高一级速率,将输入总速率减去该高一级速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤311。
当高带信号的类型对应的编码模式为Harmonic模式时,将高带信号的高带速率从当前设置的BH1顺序向上调整到BH2,相应的低带信号的低带速率为Bi-BH2。
需要说明的是,当输入总速率Bi不小于预设的第一速率时,则在进行速率调整时,可以将高带速率从当前设置速率调整为高带速率集合中该当前设置速率的高一级速率。由此可知,本申请实施例的目的在于示出速率按级调整的方式,并不用于限制速率初始设置的具体值。
步骤310:将初始高带速率作为高带速率,并将输入总速率减去初始高带速率后得到的剩余速率作为低带速率分配给低带信号。
当高带信号的类型对应的编码模式不为Harmonic模式时,则高带信号的高带速率不进行调整,仍然为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤311:通过低带信号对应的编码模式按照所分配的低带速率对低带信号进行编码,以及通过高带信号对应的编码模式按照所分配的高带速率对高带信号进行编码。
本申请对高带信号和低带信号进行编码的过程与现有技术一致,在此不再赘述。后续,将对高带信号进行编码和对低带信号进行编码后的码流进行复用,然后输出合成的比特流,从而完成编码过程。
参见图4,为本申请语音编码方法的第三实施例流程图,该实施例示出了低带信号中包含语音信号和音乐信号的编码过程:
步骤401:将输入的音频信号分为低带信号和高带信号。
步骤402:分别识别低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式。
本申请实施例中,低带信号可以使用语音(speech)编码模式,例如,CELP编码。其中,语音编码模式包括:对清音段信号进行编码的UC模式、对稳定浊音段进行编码的VC模式、对一般语音帧和音频帧进行编码的GC模式、以及对过渡帧进行编码的TC模式。低带信号也可以使用音乐(audio)编码模式。
不同类型的高带信号对应的编码模式包括:对类噪声信号进行编码的Noise模式,对时域陡变信号进行编码的Transient编码模式,对谐波性较强的信号进行编码的Harmonic模式,对具有一定谐波性的信号进行编码的Normal模式。Normal模式也可根据需要和特定的编解码方法进一步分类处理。
步骤403:判断低带信号的类型对应的编码模式是否为UC,若是,则执行步骤404;否则,执行步骤405。
步骤404:将预设的低带速率集合中的最低速率作为低带速率分配给低带信号,将输入总速率减去低带速率后得到的剩余速率作为高带速率分配给高带信号,执行步骤413。
当低带信号的编码模式为UC时,假设输入总速率为Bi(其中i=1,...,M),则设置低带信号的低带速率为BL1,相应的高带信号的高带速率为Bi-BL1。
步骤405:判断输入总速率是否小于预设的第一速率,若是,则执行步骤406;否则,执行步骤407。
假设输入总速率为Bi(其中i=1,...,M),则判断Bi是否小于预设的第一速率,该预设的第一速率可以是输入总速率集合中所有总速率从低到高排列后,位于前三分之一位置处的输入总速率,例如,输入总速率集合中按照从低到高顺序排列的输入总速率为B1、B2、B3、B4、B5、B6,则该预设的第一速率可以设置为B2。
步骤406:将预设的高带速率集合中的最低速率作为高带速率分配给高带信号,将输入总速率减去高带速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤413。
当输入总速率Bi小于预设的第一速率时,则设置高带信号的高带速率为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤407:将高带速率集合中的最低速率作为初始高带速率分配给高带信号。
当低带信号的编码模式不为UC,且输入总速率Bi不小于预设的第一速率时,可以设置高带信号的高带速率为BH1,BH1是高带速率集合中的最低速率,由此可以保证低带分配较多的速率,从而更好地保证低带质量。
除了上述示出的设置高带信号的高带速率为BH1外,也可以设置初始高带速率为高带速率集合中与Bi*alpha1的结果临近的速率,其中alpha1可以是一预设值,例如可以为1/3;或者,也可以先设置低带速率为低带速率集合中与Bi*alpha2的结果临近的速率,其中alpha2可以是以预设值,例如可以为2/3,相应初始高带速率为Bi-Bi*alpha2。上述对于初始高带速率的设置方式可以有多种,对此本申请实施例不进行限制。
步骤408:判断是否高带信号的类型对应的编码模式为Harmonic模式,且低带信号的谐波性小于阈值及低带信号的类型对应的编码模式为audio编码模式,若是,则执行步骤409;否则,执行步骤410。
本实施例中判断低带信号的谐波性小于阈值是为了判断该低带信号的谐波性是否不强。低带信号的谐波性可以通过对其进行频谱分析得到,具体的可以通过峰均比参数得到,峰均比参数可以是当前子带频谱的最大值和平均值的比值,越大表示谐波性越强,上述谐波性强度的判断过程与现有技术一致,在此不再赘述。
步骤409:将高带速率调整为高带速率集合中按照从低到高顺序排列时,初始高带速率的高二级速率,将输入总速率减去高二级速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤413。
当高带信号的类型对应的编码模式为Harmonic模式,且低带信号的类型对应的编码模式为audio模式及该低带信号的谐波性小于阈值,则将高带信号的高带速率从当前设置的BH1顺序向上调整到BH3,相应的低带信号的低带速率为Bi-BH3。
需要说明的是,当输入总速率Bi不小于预设的第一速率时,则在进行速率调整时,可以将高带速率从当前设置速率调整为高带速率集合中该当前设置速率的高一级速率。由此可知,本申请实施例的目的在于示出速率按级调整的方式,并不用于限制速率初始设置的具体值。
步骤410:判断是否高带信号的类型对应的编码模式为Normal模式,且低带信号的谐波性小于阈值及低带信号的类型对应的编码模式为audio编码模式,若是,则执行步骤411;否则,执行步骤412。
步骤411:将高带速率调整为高带速率集合中按照从低到高顺序排列时,初始高带速率的高一级速率,将输入总速率减去高一级速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤413。
当高带信号的类型对应的编码模式为Normal模式,且低带信号的谐波性小于阈值及低带信号的类型对应的编码模式为audio编码模式时,则将高带信号的高带速率从当前设置的BH1顺序向上调整到BH2,相应的低带信号的低带速率为Bi-BH2。
步骤412:将初始高带速率作为高带速率,并将输入总速率减去初始高带速率后得到的剩余速率作为低带速率分配给低带信号。
步骤413:通过低带信号对应的编码模式按照所分配的低带速率对低带信号进行编码,以及通过高带信号对应的编码模式按照所分配的高带速率对高带信号进行编码。
本申请对高带信号和低带信号进行编码的过程与现有技术一致,在此不再赘述。后续,将对高带信号进行编码和对低带信号进行编码后的码流进行复用,然后输出合成的比特流,从而完成编码过程。
参见图5,为本申请语音编码方法的第四实施例流程图,该实施例示出了低带信号中仅包含语音信号的另一种编码过程:
步骤501:将输入的音频信号分为低带信号和高带信号。
步骤502:分别识别低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式。
本申请实施例中,低带信号中仅使用语音(speech)编码模式,例如,CELP编码。其中,语音编码模式包括:对清音段信号进行编码的UC模式、对稳定浊音段进行编码的VC模式、对一般语音帧和音频帧进行编码的GC模式、以及对过渡帧进行编码的TC模式。
不同类型的高带信号对应的编码模式包括:对类噪声信号进行编码的Noise模式,对时域陡变信号进行编码的Transient编码模式,对谐波性较强的信号进行编码的Harmonic模式,对具有一定谐波性的其余信号进行编码的Normal模式。Normal模式也可根据需要和特定的编解码方法进一步分类处理。
步骤503:判断低带信号的类型对应的编码模式是否为UC,若是,则执行步骤504;否则,执行步骤505。
步骤504:将预设的低带速率集合中的最低速率作为低带速率分配给低带信号,将输入总速率减去低带速率后得到的剩余速率作为高带速率分配给高带信号,执行步骤513。
当低带信号的编码模式为UC时,假设输入总速率为Bi(其中i=1,...,M),则设置低带信号的低带速率为BL1,相应的高带信号的高带速率为Bi-BL1。
步骤505:判断输入总速率是否小于预设的第一速率,若是,则执行步骤506;否则,执行步骤507。
假设输入总速率为Bi(其中i=1,...,M),则判断Bi是否小于预设的第一速率,该预设的第一速率可以是输入总速率集合中所有总速率从低到高排列后,位于前三分之一位置处的输入总速率,例如,输入总速率集合中按照从低到高顺序排列的输入总速率为B1、B2、B3、B4、B5、B6,则该预设的第一速率可以设置为B2。
步骤506:将预设的高带速率集合中的最低速率作为高带速率分配给高带信号,将输入总速率减去高带速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤513。
当输入总速率Bi小于预设的第一速率时,则设置高带信号的高带速率为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤507:将高带速率集合中的最低速率作为初始高带速率分配给高带信号。
当低带信号的编码模式不为UC,且输入总速率Bi不小于预设的第一速率时,可以设置高带信号的高带速率为BH1,BH1是高带速率集合中的最低速率,由此可以保证低带分配较多的速率,从而更好地保证低带质量。
除了上述示出的设置高带信号的高带速率为BH1外,也可以设置初始高带速率为高带速率集合中与Bi*alpha1的结果临近的速率,其中alpha1可以是一预设值,例如可以为1/3;或者,也可以先设置低带速率为低带速率集合中与Bi*alpha2的结果临近的速率,其中alpha2可以是以预设值,例如可以为2/3,相应初始高带速率为Bi-Bi*alpha2。上述对于初始高带速率的设置方式可以有多种,对此本申请实施例不进行限制。
步骤508:判断是否低带信号的类型对应的编码模式不为VC模式,且高带信号的类型对应的编码模式为Harmonic模式,若是,则执行步骤509;否则,执行步骤510。
步骤509:将高带速率调整为高带速率集合中按照从低到高顺序排列时,初始高带速率的高一级速率,将输入总速率减去高一级速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤513。
当低带信号的类型对应的编码模式不为VC模式,且高带信号的类型对应的编码模式为Harmonic模式时,将高带信号的高带速率从当前设置的BH1顺序向上调整到BH2,相应的低带信号的低带速率为Bi-BH2。
需要说明的是,当输入总速率Bi不小于预设的第一速率时,则在进行速率调整时,可以将高带速率从当前设置速率调整为高带速率集合中该当前设置速率的高一级速率。由此可知,本申请实施例的目的在于示出速率按级调整的方式,并不用于限制速率初始设置的具体值。
步骤510:判断是否低带信号的类型对应的编码模式为VC模式,且高带信号的类型对应的编码模式为Noise模式,若是,则返回步骤511;否则,执行步骤512。
步骤511:将高带速率调整为高带速率集合中按照从低到高顺序排列时,初始高带速率的高一级速率,将输入总速率减去高一级速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤513。
当低带信号的类型对应的编码模式为VC模式,且高带信号的类型对应的编码模式为Noise模式时,将高带信号的高带速率从当前设置的BH1顺序向上调整到BH2,相应的低带信号的低带速率为Bi-BH2。
需要说明的是,当初始设置的高带速率不是高带速率集合中的最低速率,则在进行速率调整时,可以将最高速率从当前设置速率调整为高带速率集合中该当前设置速率的高一级速率。由此可知,本申请实施例的目的在于示出速率按级调整的方式,并不用于限制速率初始设置的具体值。
步骤512:将输入总速率减去初始高带速率后得到的剩余速率作为低带速率分配给低带信号。
当低带信号的类型对应的编码模式为VC模式,且高带信号的类型对应的编码模式不为Harmonic模式也不为Noise模式时,则高带信号的高带速率不进行调整,仍然为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤513:通过低带信号对应的编码模式按照所分配的低带速率对低带信号进行编码,以及通过高带信号对应的编码模式按照所分配的高带速率对高带信号进行编码。
本申请对高带信号和低带信号进行编码的过程与现有技术一致,在此不再赘述。后续,将对高带信号进行编码和对低带信号进行编码后的码流进行复用,然后输出合成的比特流,从而完成编码过程。
参见图6,为本申请语音编码方法的第五实施例流程图,该实施例示出了低带信号中仅包含语音信号的另一种编码过程:
步骤601:将输入的音频信号分为低带信号和高带信号。
步骤602:分别识别低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式。
本申请实施例中,低带信号中仅使用语音(speech)编码模式,例如,CELP编码。其中,语音编码模式包括:对清音段信号进行编码的UC模式、对稳定浊音段进行编码的VC模式、对一般语音帧和音频帧进行编码的GC模式、以及对过渡帧进行编码的TC模式。
不同类型的高带信号对应的编码模式包括:对类噪声信号进行编码的Noise模式,对时域陡变信号进行编码的Transient编码模式,对谐波性较强的信号进行编码的Harmonic模式,对具有一定谐波性的其余信号进行编码的Normal模式。Normal模式也可根据需要和特定的编解码方法进一步分类处理。
步骤603:判断低带信号的类型对应的编码模式是否为UC,若是,则执行步骤604;否则,执行步骤605。
步骤604:将预设的低带速率集合中的最低速率作为低带速率分配给低带信号,将输入总速率减去低带速率后得到的剩余速率作为高带速率分配给高带信号,执行步骤614。
当低带信号的编码模式为UC时,假设输入总速率为Bi(其中i=1,...,M),则设置低带信号的低带速率为BL1,相应的高带信号的高带速率为Bi-BL1。
步骤605:判断输入总速率是否小于预设的第一速率,若是,则执行步骤606;否则,执行步骤607。
假设输入总速率为Bi(其中i=1,...,M),则判断Bi是否小于预设的第一速率,该预设的第一速率可以是输入总速率集合中所有总速率从低到高排列后,位于前三分之一位置处的输入总速率,例如,输入总速率集合中按照从低到高顺序排列的输入总速率为B1、B2、B3、B4、B5、B6,则该预设的第一速率可以设置为B2。
步骤606:将预设的高带速率集合中的最低速率作为高带速率分配给高带信号,将输入总速率减去高带速率后得到的剩余速率作为低带速率分配给低带信号,执行步骤614。
当输入总速率Bi小于预设的第一速率时,则设置高带信号的高带速率为BH1,相应的低带信号的低带速率为Bi-BH1。
步骤607:将高带速率集合中的最低速率作为当前高带速率分配给高带信号,相应当前低带速率为输入总速率减去当前高带速率。
当低带信号的编码模式不为UC,且输入总速率Bi不小于预设的第一速率时,可以设置高带信号的当前高带速率为BH1,BH1是高带速率集合中最低的速率,相应的低带信号的当前低带速率为Bi-BH1。
除了上述示出的设置高带信号的当前高带速率为BH1外,也可以设置当前高带速率为高带速率集合中与Bi*alpha1的结果临近的速率,其中alpha1可以是一预设值,例如可以为1/3;或者,也可以先设置当前低带速率为低带速率集合中与Bi*alpha2的结果临近的速率,其中alpha2可以是以预设值,例如可以为2/3,相应当前高带速率为Bi-Bi*alpha2。上述对于当前高带速率的设置方式可以有多种,对此本申请实施例不进行限制。
步骤608:通过低带信号对应的编码模式按照初始低带速率对低带信号进行编码,得到本地低带合成信号,并计算本地低带合成信号的信噪比SNR值。
步骤609:判断SNR值是否在预设范围内,若否,则执行步骤610;若是,执行步骤614。
步骤610:当SNR值小于预设范围的最小值时,将低带速率调整为低带速率集合中按照从低到高顺序排列时,当前低带速率的高一级速率,当SNR值大于预设范围的最大值时,将低带速率调整为低带速率集合中按照从低到高顺序排列时,当前低带速率的低一级速率。
步骤611:通过低带信号对应的编码模式按照调整后的低带速率对低带信号进行编码,得到本地低带合成信号,并重新计算该本地低带合成信号的SNR值。
步骤612:判断重新计算的SNR值是否在预设范围内,若否,返回步骤610;若是,则执行步骤613。
步骤613:将调整后的低带速率作为低带信号的低带速率,相应的输入总速率减去调整后的低带速率作为高带信号的高带速率。
步骤614:通过低带信号对应的编码模式按照所分配的低带速率对低带信号进行编码,以及通过高带信号对应的编码模式按照所分配的高带速率对高带信号进行编码。
本申请对高带信号和低带信号进行编码的过程与现有技术一致,在此不再赘述。后续,将对高带信号进行编码和对低带信号进行编码后的码流进行复用,然后输出合成的比特流,从而完成编码过程。
上述音频编码方法第二实施例至第五实施例中,在判断输入总速率不小于预设的第一速率后,还可以进一步判断输入总速率是否大于预设的第二速率,当大于该第二速率时,可以设置高带信号的高带速率为预设高带速率集合中最高的速率,将输入总速率减去设置的高带速率,得到的剩余速率作为低带速率分配给低带信号,对于输入总速率在由上述两个预设速率限定的范围内时,再进行原输入总速率小于预设的第一速率后的自适应调整过程。
与本申请音频编码方法的实施例相对应,本申请还提供了音频编码装置的实施例。
参见图7,为本申请音频编码装置的实施例框图。
该音频编码装置包括:分带单元710、识别单元720、自适应调整单元730和编码单元740。
其中,分带单元710,用于将输入的音频信号分为低带信号和高带信号;
识别单元720,用于分别识别所述低带信号和高带信号的类型,不同类型的低带信号和高带信号分别对应不同的编码模式;
自适应调整单元730,用于按照所述低带信号和高带信号对应的不同编码模式,将所述音频信号的输入总速率自适应分配给所述低带信号和高带信号,其中,分配给所述低带信号的为低带速率,分配给所述高带信号的为高带速率;
编码单元740,用于通过所述低带信号对应的编码模式按照所述低带速率对所述低带信号进行编码,以及通过所述高带信号对应的编码模式按照所述高带速率对所述高带信号进行编码。
其中,所述不同类型的低带信号对应的编码模式包括语音编码模式和音乐audio编码模式,其中语音编码模式包括:过渡编码TC模式、普通编码GC模式、浊音编码VC模式、清音编码UC模式;不同类型的高带信号对应的编码模式包括:噪声编码Noise模式、瞬态编码Transient模式,谐波编码Harmonic模式,普通编码Normal模式。另外,Normal模式也可根据需要和特定的编解码方法进一步分类处理。需要说明的是,上述高带信号和低带信号的编码模式都是按照音频信号类型的不同进行分类的,实际应用过程中,可以不局限于上述的分类模式,即可以根据信号类型进一步细分更多的编码模式。
进一步,自适应调整单元可以包括(图7中未示出):第一速率分配单元,用于将预设的高带速率集合中的最低速率作为高带速率分配给所述高带信号,将所述输入总速率减去所述高带速率后得到的剩余速率作为低带速率分配给所述低带信号;
所述第一速率分配单元,具体用于当所述低带信号的类型对应的编码模式不为UC模式时,将预设的高带速率集合中的最低速率作为高带速率分配给所述高带信号,当所述低带信号的类型对应的编码模式为UC模式时,将预设的低带速率集合中的最低速率作为低带速率分配给所述低带信号,将所述输入总速率减去所述高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
所述第一速率分配单元可以进一步包括:初始高带速率分配单元,用于当所述输入总速率大于等于预设的第一速率时,将所述高带速率集合中的最低速率作为初始高带速率分配给所述高带信号;速率分配调整单元,用于当高带信号对应的编码模式符合速率调整的类型时,将高带信号编码模式对应的比所述初始高带速率高的调整速率作为高带速率分配给所述高带信号,将所述输入总速率减去所述高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
进一步,自适应调整单元可以包括(图7中未示出):判断单元和速率分配单元,其中,所述速率分配单元,用于当所述判断单元判断所述低带信号的类型对应的编码模式为UC模式时,将预设的低带速率集合中的最低速率作为低带速率分配给所述低带信号,以及将所述输入总速率减去所述低带速率后得到的剩余速率作为高带速率分配给所述高带信号。
进一步,所述速率分配单元,还用于当所述判断单元判断所述低带信号的类型对应的编码模式不为UC模式,且所述输入总速率小于预设的第一速率时,将预设的高带速率集合中的最低速率作为高带速率分配给所述高带信号,以及将所述输入总速率减去所述高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
进一步,自适应调整单元还可以包括(图7中未示出):第一速率调整单元,其中,所述速率分配单元,还用于当所述判断单元判断所述输入总速率不小于所述第一速率时,将所述高带速率集合中的最低速率作为初始高带速率分配给所述高带信号;所述判断单元,还用于判断所述高带信号的类型对应的编码模式是否为Harmonic模式;所述第一速率调整单元,用于当所述判断单元判断为是时,将高带速率调整为所述高带速率集合中按照从低到高顺序排列时,所述初始高带速率的高一级速率,将所述输入总速率减去所述高一级速率后得到的剩余速率作为低带速率分配给所述低带信号;所述速率分配单元,还用于当所述判断单元判断为否时,将所述初始高带速率作为高带速率,并将所述输入总速率减去所述初始高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
进一步,自适应调整单元还可以包括(图7中未示出):第二速率调整单元,其中,所述速率分配单元,还用于当所述判断单元判断所述输入总速率不小于所述第一速率时,将所述高带速率集合中的最低速率作为初始高带速率分配给所述高带信号;所述判断单元,还用于判断是否所述高带信号的类型对应的编码模式为Harmonic模式,且所述低带信号的谐波性小于阈值及所述低带信号的类型对应的编码模式为audio编码模式;所述第二速率调整单元,用于当所述判断单元判断为是时,将高带速率调整为所述高带速率集合中按照从低到高顺序排列时,所述初始高带速率的高二级速率,将所述输入总速率减去所述高二级速率后得到的剩余速率作为低带速率分配给所述低带信号;所述判断单元,还用于当所述判断单元判断为否时,判断是否高带信号的类型对应的编码模式为Normal模式,且所述低带信号的谐波性小于阈值及所述低带信号的类型对应的编码模式为audio编码模式;所述第二速率调整单元,还用于当所述判断单元判断为是时,将高带速率调整为所述高带速率集合中按照从低到高顺序排列时,所述初始高带速率的高一级速率,将所述输入总速率减去所述高一级速率后得到的剩余速率作为低带速率分配给所述低带信号;所述速率分配单元,还用于当所述判断单元判断为否时,将所述初始高带速率作为高带速率,并将所述输入总速率减去所述初始高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
进一步,自适应调整单元还可以包括(图7中未示出):第三速率调整单元,其中,所述速率分配单元,还用于当所述判断单元判断所述输入总速率不小于所述第一速率时,将所述高带速率集合中的最低速率作为初始高带速率分配给所述高带信号;所述判断单元,还用于判断是否低带信号的类型对应的编码模式不为VC模式,且高带信号的类型对应的编码模式为Harmonic模式;所述第三速率调整单元,用于当所述判断单元判断为是时,将高带速率调整为所述高带速率集合中按照从低到高顺序排列时,所述初始高带速率的高一级速率,将所述输入总速率减去所述高一级速率后得到的剩余速率作为低带速率分配给所述低带信号;所述判断单元,还用于当所述判断单元判断为否时,判断是否低带信号的类型对应的编码模式为VC模式,且高带信号的类型对应的编码模式为Noise模式;所述第三速率调整单元,还用于当所述判断单元判断为是时,将高带速率调整为所述高带速率集合中按照从低到高顺序排列时,所述初始高带速率的高一级速率,将输入总速率减去所述高一级速率后得到的剩余速率作为低带速率分配给低带信号;所述速率分配单元,还用于当所述判断单元判断为否时,则将所述输入总速率减去所述初始高带速率后得到的剩余速率作为低带速率分配给所述低带信号。
进一步,自适应调整单元还可以包括(图7中未示出):第四速率调整单元和SNR计算单元,其中,所述速率分配单元,还用于当判断单元判断所述输入总速率不小于所述第一速率时,将高带速率集合中的最低速率作为当前高带速率分配给所述高带信号,相应当前低带速率为输入总速率减去所述当前高带速率;所述SNR计算单元,用于通过所述低带信号对应的编码模式按照所述初始低带速率对所述低带信号进行编码,得到本地低带合成信号,并计算所述本地低带合成信号的SNR值;所述判断单元,还用于判断所述SNR值是否在预设范围内;所述速率分配单元,还用于当所述判断单元判断为是时,将所述初始高带速率作为所述高带信号的高带速率,将所述初始低带速率作为所述低带信号的低带速率;所述第四速率调整单元,用于当所述SNR值小于所述预设范围的最小值时,将低带速率调整为低带速率集合中按照从低到高顺序排列时,当前低带速率的高一级速率,当所述SNR值大于所述预设范围的最大值时,将低带速率调整为低带速率集合中按照从低到高顺序排列时,当前低带速率的低一级速率;所述SNR计算单元,还用于通过低带信号对应的编码模式按照调整后的低带速率对低带信号进行编码,得到本地低带合成信号,并重新计算该本地低带合成信号的SNR值;所述判断单元,还用于判断重新计算的SNR值是否在所述预设范围内;所述速率分配单元,还用于当所述判断单元判断为是时,将调整后的低带速率作为低带信号的低带速率,相应的输入总速率减去调整后的低带速率作为高带信号的高带速率;所述第四速率调整单元,还用于当所述判断单元判断为否时,重复执行所述第四速率调整单元的功能。
进一步,所述判断单元,还用于在判断所述输入总速率不小于所述第一速率后,判断所述输入总速率是否大于预设的第二速率;以及,所述速率分配单元,还用于当所述判断单元判断为是时,将高带速率集合中的最高速率作为高带速率分配给高带信号,将所述输入总速率减去所述最高速率后得到的剩余速率作为低带速率分配给所述低带信号。
通过对以上实施方式的描述可知,本申请实施例中将输入的音频信号分为低带信号和高带信号,按照低带信号和高带信号对应的不同编码模式,将音频信号的输入总速率自适应分配给低带信号和高带信号,通过低带信号对应的编码模式按照低带速率对低带信号进行编码,并通过高带信号对应的编码模式按照高带速率对高带信号进行编码。由于本申请实施例中在对低带信号和高带信号进行编码时,并非按照标准中给定的速率进行编码,而是根据信号类型的不同自适应调整编码速率,因此提高了音频编码的总体性能。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。