确定CVSD编解码中参数的方法和设备与流程

文档序号:16511956发布日期:2019-01-05 09:23阅读:519来源:国知局
确定CVSD编解码中参数的方法和设备与流程

本申请涉及数据处理领域,尤其涉及确定cvsd编解码中参数的方法和编解码设备。



背景技术:

随着移动物联网技术(iot)、人工智能(ai)、语音识别等技术的快速发展,人类的沟通方式、生活方式发生了巨大的变化,人与机器之间的交互方式也变得多样化。最近几年发展起来的语音交互最为引人关注。智能音响、智能穿戴设备、语音助手等人机交互产品呈现井喷式发展,这些产品的背后都离不开语音编解码等技术的支持。

语音编码主要包括波形编码、参数编码和混合编码。波形编码中的连续斜率可变增量调制(continuousvariableslopedeltamodulation,cvsd)语音编码是自适应增量调制算法的一种,擅长处理丢失和被损坏的语音采样,并且在要求较低速率传输语音的情况下具有较好的抗信道误码能力;对于工程实现而言,cvsd算法简单,占用的资源较少,硬件容易实现;在单路运用时无需采取码元和码组同步措施等优点,cvsd被广泛运用于各种场景中。

cvsd是一种量阶值随着输入信号平均斜率大小而连续变化的增量调制方式,采用多个连续变化斜率的线段来逼近音频信号。但在实际运用中,若量阶值选取不合理,仍然会存在诸多问题和缺陷,如语音信号的编码解码误差较大,尤其在开始时间段,导致语音失真较为严重,例如会导致过载失真和颗粒失真。



技术实现要素:

本申请提供了一种确定cvsd编解码中参数的方法和编解码设备,具有较强的鲁棒性,尤其在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

第一方面,提供了一种确定cvsd编码中参数的方法,该方法包括:获取待编码数据中的第n个信号的编码值c(n),所述待编码数据中的第n-a个信号至第n-1个信号对应的a个编码值相等且等于第一值,n为大于1的正整数,a为小于n的正整数;若所述第n个信号的编码值c(n)为所述第一值,根据a的大小,确定所述待处理数据中第n+1个信号对应的增量步长δ,其中,δ>0;根据所述增量步长δ,确定所述第n+1个信号的量阶值b(n+1)。

结合第一方面,在第一方面的一种实现方式中,所述根据a的大小,确定所述待处理数据中第n+1个信号对应的增量步长δ,包括:若a小于第一阈值,确定增量步长δ为多个预设值中的第一预设值;若a大于或者等于所述第一阈值,确定增量步长δ为所述多个预设值中的第二预设值,所述第二预设值大于所述第一预设值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:若a大于或者等于第二阈值,确定所述增量步长δ不为0,所述第二阈值小于所述第一阈值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,若a小于第二所述阈值或者所述第n个信号的编码值c(n)为第二值,确定所述增量步长δ为0,所述第二值不等于所述第一值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,根据所述第n个信号的量阶值b(n)与所述增量步长δ,确定所述第n+1个信号的量阶值b(n+1)。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,确定所述第n个信号的量阶值b(n)与衰减因子的乘积;将所述乘积与所述增量步长δ的和确定为所述第n+1个信号的量阶值b(n+1)。

具体地,所述根据所述增量步长δ,确定所述第n+1个信号的量阶值b(n+1),包括:根据下面的公式(1),确定所述第n+1个信号的量阶值b(n+1):

其中,b(n)为所述第n个信号的量阶值,β为衰减因子,c为所述第二阈值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述根据所述第n个信号的量阶值b(n)与所述增量步长δ,确定所述第n+1个信号的量阶值b(n+1),包括:根据所述增量步长δ,确定增长倍数,所述增长倍数大于1;将所述增长倍数、衰减因子与所述第n个信号的量阶值b(n)的乘积确定为所述第n+1个信号的量阶值b(n+1)。

具体地,所述根据所述增量步长δ,确定所述第n+1个信号的量阶值b(n+1),包括:根据下面的公式(2),确定所述第n+1个信号的量阶值b(n+1):

其中,b(n)为所述第n个信号的量阶值,β为衰减因子,c为所述第二阈值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述待编码数据为语音数据,所述衰减因子β满足β=1-t/τ,t为所述语音数据的周期,τ为所述语音数据的音节时间常数。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:根据所述第n个信号的编码值c(n)、所述第n个信号的估计值以及所述第n+1个信号的量阶值b(n+1),确定所述第n+1个信号的估计值确定所述第n+1个信号的采样值d(n+1)和所述第n+1个信号的估计值之间的差值e(n+1);根据所述差值e(n+1)的大小,确定所述第n+1个信号的编码值c(n+1)。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述根据所述差值e(n+1)的大小,确定所述第n+1个信号的编码值c(n+1),包括:若所述差值e(n+1)大于或者等于0,确定所述第n+1个信号的编码值c(n+1)为1;若所述差值e(n+1)小于0,确定所述第n+1个信号的编码值c(n+1)为0。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一值为1或0。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述根据所述第n个信号的编码值c(n)、所述第n个信号的估计值以及所述第n+1个信号的量阶值b(n+1),确定所述第n+1个信号的估计值包括:若所述第n个信号的编码值c(n)为1,将所述第n个信号的估计值与所述第n+1个信号的量阶值b(n+1)的和,确定为所述第n+1个信号的估计值若所述第n个信号的编码值c(n)为0,将所述第n个信号的估计值与所述第n+1个信号的量阶值b(n+1)的差,确定为所述第n+1个信号的估计值

具体地,根据下面的公式(3),确定所述第n+1个信号的估计值

其中,为所述第n个信号的估计值,b(n+1)为所述第n+1个信号的量阶值,c(n)为所述第n个信号的编码值。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,在所述获取待编码数据中的第n个信号的编码值c(n)之前,所述方法还包括:对原始数据进行上采样处理,获取所述待编码数据。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述对原始数据进行上采样处理,获取所述待编码数据,包括:按照插值算法,对所述原始数据进行上采样处理,获取所述待编码数据。

结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述对原始数据进行上采样处理,获取所述待编码数据,包括:在所述原始数据的相邻采样点之间补零,获取待处理数据;通过滤波器,对所述待处理数据进行滤波处理,获取所述待编码数据。

因此,本申请实施例的确定cvsd编码中参数方法,采用自适应步长的cvsd编码方法,可以基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。

对比传统的cvsd编码方法中在前一时刻的语音信号估计值上增加或者减小固定的增量步长,尤其是针对低速率的语音信号,由于其每次的增量步长都是固定的,在算法刚开始时,初始化状态值较小,而每次编码的增量有限,很难快速逼近语音的真实值,导致失真严重:步长太小,容易导致过载失真,步长太大,容易导致颗粒失真。

因此,本申请实施例的编码设备解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

第二方面,提供了一种确定cvsd解码中参数方法,该方法包括:获取待解码码流中的第n个码值c(n),所述待解码码流中的第n-a个码值至第n-1个码值相等且等于第一值,n为大于1的正整数,a为小于n的正整数;若所述第n个码值c(n)为所述第一值,根据a的大小,确定所述待解码码流中第n+1个码值c(n+1)对应的增量步长δ,其中,δ>0;根据所述增量步长δ,确定所述第n+1个码值c(n+1)对应的量阶值b(n+1)。

结合第二方面,在第二方面的一种实现方式中,所述根据a的大小,确定所述待解码码流中第n+1个码值c(n+1)对应的增量步长δ,包括:若a小于第一阈值,确定增量步长δ为多个预设值中的第一预设值;若a大于或者等于所述第一阈值,确定增量步长δ为所述多个预设值中的第二预设值,所述第二预设值大于所述第一预设值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述方法还包括:若a大于或者等于第二阈值,确定所述增量步长δ不为0,所述第二阈值小于所述第一阈值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,若a小于第二所述阈值或者所述第n个信号的编码值c(n)为第二值,确定所述增量步长δ为0,所述第二值不等于所述第一值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述根据所述增量步长δ,确定所述第n+1个码值c(n+1)对应的量阶值b(n+1),包括:根据所述第n个码值c(n)对应的量阶值b(n)与所述增量步长δ,确定所述第n+1个码值c(n+1)对应的量阶值b(n+1)。

所述根据所述增量步长δ,确定所述第n+1个码值c(n+1)对应的量阶值b(n+1),包括:根据下面的公式(1),确定所述第n+1个码值c(n+1)对应的量阶值b(n+1):

其中,b(n)为所述第n个码值c(n)对应的量阶值,β为衰减因子,c为所述第二阈值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述根据所述增量步长δ,确定所述第n+1个码值c(n+1)对应的量阶值b(n+1),包括:根据下面的公式(2),确定所述第n+1个码值c(n+1)对应的量阶值b(n+1):

其中,b(n)为所述第n个码值c(n)对应的量阶值,β为衰减因子,c为所述第二阈值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述待解码码流为语音数据的码流,β=1-t/τ,t为所述语音数据的周期,τ为所述语音数据的音节时间常数。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述根据所述第n个码值c(n)、所述第n个码值c(n)对应的解码信号y(n)以及所述第n+1个码值c(n+1)对应的量阶值b(n+1),确定所述第n+1个码值c(n+1)对应的解码信号y(n+1),包括:根据下面的公式(3),确定所述第n+1个码值c(n+1)对应的解码信号y(n+1):

其中,y(n)为所述第n个码值c(n)对应的解码信号,b(n+1)为所述第n+1个码值c(n+1)对应的量阶值,c(n)为所述待解码码流中所述第n个码值。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述方法还包括:根据所述第n个码值c(n)、所述第n个码值c(n)对应的解码信号y(n)以及所述第n+1个码值c(n+1)对应的量阶值b(n+1),确定所述第n+1个码值c(n+1)对应的解码信号y(n+1);对所述待解码码流对应的解码信号流进行滤波处理,获取滤波后的解码信号流;对所述滤波后的解码信号流进行下采样处理,输出解码数据。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述对所述待解码码流对应的解码信号流进行滤波处理,包括:通过带通滤波器,对所述待解码码流对应的解码信号流进行所述滤波处理。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述带通滤波器为无限脉冲响应iir滤波器。

结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述第一值为1或0。

因此,本申请实施例的确定cvsd解码中参数方法,参照编码过程,同样基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题;还通过设计一个带通滤波器,消除了编解码过程中存在的直流漂移问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

第三方面,提供了一种编码设备,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该编码设备包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。

第四方面,提供了一种解码设备,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该解码设备包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的单元。

第五方面,提供了一种编码设备,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。

第六方面,提供了一种解码设备,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。

第七方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。

第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。

第九方面,提供了一种包括指令的计算机程序产品,当计算机运行所述计算机程序产品的所述指时,所述计算机执行上述第一方面或第一方面的任意可能的实现方式中的确定cvsd编码中参数的方法。具体地,该计算机程序产品可以运行于上述第三方面的编码设备上。

第十方面,提供了一种包括指令的计算机程序产品,当计算机运行所述计算机程序产品的所述指时,所述计算机执行上述第二方面或第二方面的任意可能的实现方式中的确定cvsd解码中参数的方法。具体地,该计算机程序产品可以运行于上述第四方面的解码设备上。

附图说明

图1是根据本申请实施例的确定cvsd编码中参数的方法的示意性流程图。

图2是根据本申请实施例的数轴的示意图。

图3是根据本申请实施例的确定cvsd解码中参数的方法的示意性流程图。

图4是根据本申请实施例的基于cvsd的编解码方法的示意性流程图。

图5是根据本申请实施例的基于cvsd的编码方法的另一示意性流程图。

图6是根据本申请实施例的基于cvsd的解码方法的另一示意性流程图。

图7是根据本申请实施例的滤波器幅频响应的示意图。

图8是根据本申请实施例的编码设备的示意性框图。

图9是根据本申请实施例的解码设备的示意性框图。

图10是根据本申请实施例的编解码设备的示意性框图。

具体实施方式

下面将结合附图,对本申请实施例中的技术方案进行描述。

图1示出了根据本申请实施例的确定cvsd编码中参数的方法100的示意性流程图,该方法100可以由编码设备执行,如图1所示,该方法100包括:s110,获取待编码数据中的第n个信号的编码值c(n),该待编码数据中的第n-a个信号至第n-1个信号对应的a个编码值相等且等于第一值,n为大于1的正整数,a为小于n的正整数;s120,若该第n个信号的编码值c(n)为该第一值,根据a的大小,确定该待处理数据中第n+1个信号对应的增量步长δ,其中,δ>0;s130,根据该增量步长δ,确定该第n+1个信号的量阶值b(n+1)。

应理解,cvsd是一种量阶值随着输入信号平均斜率大小而连续变化的增量调制方式,采用多个连续变化斜率的线段来逼近音频信号,例如,当斜率为正时,对应的数字编码为1,当线段的斜率为负时,对应的数字编码为0。cvsd通过不断改变量阶值的大小来跟上信号的快速或者慢速的变化,它的量阶值的调整可以基于过去的3-4个样本值输出,如果检测到连续几个样本值都变大,则增加固定步长的量阶值,以快速跟踪信号的变化,否则,对量阶值进行自由衰减,而cvsd解码是其逆过程。

应理解,本申请实施例中的待编码数据可以为待编码的语言数据,或者也可以为其它待编码的数据。为了便于说明,本申请实施例以该待编码数据为语音数据为例进行说明,并且该方法100能够运用于对语音质量和安全性有要求的场合,并适用于低功耗语音增强、语音识别、语音交互产品中,包括但不限于耳机、音响、手机、电视、汽车、可穿戴设备、智能家居等。

可选地,该待编码数据可以为脉冲编码调制(pulsecodemodulation,pcm)数据流,或者还可以为其它类型的数据,例如,波形音频文件(waveaudiofiles,wav)音频数据,本申请实施例并不限于此。

在本申请实施例中,在对待编码数据进行编码处理之前,该方法100还包括:获取原始数据,并对该原始数据进行上采样处理,以获得该待编码数据。具体地,获取原始的数据,例如pcm数据流,该pcm数据流为语音数据,由于原始语音信号速率较低,相邻采样点之间语音变化情况会被淹没,为了保证编码后信号能够准确反映原始数据中的信号的特征,特别是快速变化部分和细节部分,这就需要较高采样速率,因此,可以对该原始数据进行上采样处理,以提高采样率。

可选地,对该原始数据进行上采样处理,可以通过多种方式实现,例如,可以通过插值算法,或者也可以通过补零的方式,进行上采样处理,本申请实施例并不限于此。

可选地,作为一个实施例,对原始数据进行上采样处理,获取待编码数据,可以包括:按照插值算法,对该原始数据进行上采样处理,获取该待编码数据。具体地,对原始数据进行上采样处理,上采样倍数可灵活选择,假设采样速率需提高p倍,插值算法是利用相邻采样点值,根据插值规则预测出相邻采样点之间p-1个点的值。其中,该插值规则可以为采用线性插值,或者,也可以采用样条插值、分段插值或者其它类型的插值规则,本申请实施例并不限于此。

可选地,作为一个实施例,对原始数据进行上采样处理,获取待编码数据,可以包括:在该原始数据的相邻采样点之间补零,获取待处理数据;通过滤波器,对该待处理数据进行滤波处理,获取该待编码数据。具体地,仍然假设对原始数据进行上采样处理时,采样速率需提高p倍,则可以通过在相邻采样点之间补p-1个零的方式,实现上采样。由于补零会带来一些高频干扰,因此还可以设计一个合适的滤波器,对补零之后的待处理数据进行滤波处理,以便于消除干扰,获得待编码数据。该滤波器设计可以根据不同运用场景,选择不同类型滤波器,例如,可选择有限长单位冲激响应(finiteimpulseresponse,fir)滤波器或者无限脉冲响应(infiniteimpulseresponse,iir)滤波器,两种滤波器的选择也是多种多样,比如iir滤波器有巴特沃兹滤波器、切比雪夫滤波器和椭圆滤波器等等,在实际设计中可灵活选择。

在s110中,获取待编码数据中的第n个信号的编码值c(n),例如,该第n个信号的编码值c(n)可以为第一值或者第二值,n为大于1的正整数。具体地,待编码数据中每个采样点对应一个信号,该待编码数据中的第n个信号为其中的任意一个信号,在该第n个信号之前的n-1个信号对应有n-1个编码值。获取待编码数据中的第n个信号的编码值c(n)可以包括:获取该待编码数据中第n个信号的采样值d(n)和该第n个信号的估计值并确定二者之间的差值e(n),即根据该差值e(n)的大小,按照编码规则,确定该第n个信号的编码值c(n)。

可选地,该编码规则可以包括:根据下面的公式(1),确定该第n个信号的编码值c(n):

应理解,在该第n个信号之前的n-1个信号对应的n-1个编码值均可以通过上述公式(1)确定。

在本申请实施例中,对于在该第n个信号之前的a个信号,a为小于n的正整数,即第n-a个信号至第n-1个信号,假设其对应的a个编码值相等,例如该a个编码值均等于第一值,那么在s120中,若该第n个信号的编码值c(n)也为该第一值,则根据a的大小,确定该待处理数据中第n+1个信号对应的增量步长δ,其中,δ>0。

应理解,在该待编码数据中第n-a个信号至第n-1个信号对应的a个编码值均为第一值时,对于该第n-a个信号之前的一个信号,即第n-a-1个信号,其对应的编码值不等于第一值,即a的取值为最大值,表示第n个信号之前且连续的编码值相同的全部信号的个数。

例如,根据公式(1)的编码规则,该第一值可以为1或0,假设取第一值为0,则a的值表示第n个信号之前的a个信号对应的a个编码值均为0,而第n-a-1个信号对应的编码值为1。

在本申请实施例中,如果待编码数据中连续a个采样点编码值连续为同一个值,则根据连续编码值的个数a的大小来选择相应的增量步长δ。这是由于如果有多个连续的相同值,例如均为1或者均为0时,则说明语音信号变化较快,因此,需要增加或减小额外的增量步长δ来快速跟踪信号的变化,具体地,该增量步长δ还需根据连续编码值的个数a来确定,如果连续编码值个数较多,说明之前选择的增量步长δ较小,需要加大增量步长δ;如果连续编码值个数较小,减小增量步长δ。

具体地,以图2所示的数轴为例,在待编码数据中第n-a个信号至第n-1个信号对应的a个编码值均为第一值的情况下,若该a小于第二阈值,例如,如图2所示,该a为0至第二阈值之间任意数值a,则可以将第n+1个信号对应的增量步长δ设置为0,或者若第n个信号的编码值c(n)等于第二值,该第二值不等于第一值,也可以将第n+1个信号对应的增量步长δ设置为0,或者,若该a大于或者等于第二阈值,例如,如图2所示,该a为大于第二阈值的任意数值b、c或者d,则可以将第n+1个信号对应的增量步长δ设置为不等于0的任意预设值。

其中,该第二阈值可以根据实际应用进行设置,例如,根据经验值,一般可以将该第二阈值设置为3或4,本申请实施例并不限于此。

例如,将第二阈值设置为3,取第一值为1。若第n个信号的编码值c(n)等于0,第n-1个信号的编码值为第一值,即为1,则将第n+1个信号对应的增量步长设置为0。若第n个信号的编码值c(n)等于1,第n-1个信号的编码值也为1,而第n-2个信号的编码值为0,则a=1,即a<3,也可以将该增量步长δ设置为0。若第n个信号的编码值c(n)等于1,第n-1个信号至第n-4个信号的编码值也为1,而第n-5个信号的编码值为0,则a=4,即a>3,可以将该增量步长δ设置为不等于0的任意预设值。

另外,仍然以图2为例,对于a大于或者等于第二阈值的情况,即取δ>0的情况,该根据a的大小,确定该待处理数据中第n+1个信号对应的增量步长δ,可以包括:若a小于第一阈值,例如,如图2所示,该a为大于第二阈值且小于第一阈值的任意数值b,确定第n+1个信号对应的增量步长δ为多个预设值中的第一预设值;若a大于或者等于该第一阈值,例如,如图2所示,该a为大于或者等于第一阈值的任意数值c或者d,则确定第n+1个信号对应的增量步长δ为该多个预设值中的第二预设值,该第二预设值大于该第一预设值。

可选地,在a大于或者等于第二阈值的基础上,除了上述的第一阈值以外,还可以为a设置更多个阈值,根据a的不同大小,对应取不同的增量步长。例如,若a小于该第一阈值,例如,如图2所示,该a为大于第二阈值且小于第一阈值的任意数值b,确定第n+1个信号对应的增量步长δ为该多个预设值中的第一预设值;若a大于或者等于第一阈值且小于第三阈值,例如,如图2所示,该a为大于或者等于第一阈值且小于第三阈值的任意数值c,确定第n+1个信号对应的增量步长δ为多个预设值中的第二预设值,该第二预设值大于该第一预设值;若a大于或者等于第三阈值,例如,如图2所示,该a为大于或者等于第三阈值的任意数值d,则确定第n+1个信号对应的增量步长δ为多个预设值中的第三预设值,该第三预设值大于该第二预设值,依次类推,可以根据a的大小,对应取不同的增量步长。

应理解,可以为该增量步长δ设置有限个数的预设值,或者为该增量步长δ设置最大值和/或最小值,例如,当a取值较大时,该增量步长δ的取值存在上限值,本申请实施例并不限于此。

在s130中,根据该第n+1个信号的增量步长δ,确定该第n+1个信号的量阶值b(n+1),该增量步长δ可以表示相邻两个信号的量阶值之间的差值的大小。具体地,当该增量步长δ不为0时,该第n+1个信号的量阶值b(n+1)与该增量步长δ的大小有关,另外,还与第n个信号的量阶值b(n)有关;若该增量步长δ等于0,则该第n+1个信号的量阶值b(n+1)与该增量步长δ的大小无关,而与第n个信号的量阶值b(n)有关。

可选地,可以通过多种公式或规则,根据该第n+1个信号的增量步长δ,确定该第n+1个信号的量阶值b(n+1),例如,确定该第n个信号的量阶值b(n)与衰减因子的乘积,进而将该乘积与该增量步长δ的和确定为该第n+1个信号的量阶值b(n+1),即对应下面的公式(2);或者,根据该增量步长δ,确定增长倍数,该增长倍数大于1,再将该增长倍数、衰减因子与该第n个信号的量阶值b(n)的乘积确定为该第n+1个信号的量阶值b(n+1),即,即对应下面的公式(3)。具体地,根据下面的公式(2)或者公式(3),确定该第n+1个信号的量阶值b(n+1):

其中,对于上述的公式(2)和(3),b(n)为第n个信号的量阶值,β为衰减因子,c为上述的第二阈值。以待编码数据为语音数据为例,衰减因子β满足β=1-t/τ,其中,t表示语音数据的周期,τ表示语音数据的音节时间常数,例如τ一般可以取5-10ms。

应理解,为了防止量阶值b(n+1)超出有效数据范围,可以对其的取值进行限制,如果b(n+1)大于最大值bmax,则令b(n+1)=bmax。

在本申请实施例中,该方法100还可以包括:s140,根据该第n个信号的编码值c(n)、该第n个信号的估计值以及该第n+1个信号的量阶值b(n+1),确定该第n+1个信号的估计值其中,该第n+1个信号的量阶值b(n+1)可以表征该第n+1个信号的估计值与第n个信号的估计值之间的差值和大小关系,而第n个信号的估计值可以表示对该第n个信号进行编码后,通过解码而获得的估计信号,同样的,第n+1个信号的估计值即为第n+1个信号的估计信号。

可选地,作为一个实施例,可以根据该第n个信号的编码值c(n)的大小,将该第n个信号的估计值以及该第n+1个信号的量阶值b(n+1)之间的和或差,确定为该第n+1个信号的估计值具体地,可以通过下面的公式(4),确定该第n+1个信号的估计值

可选地,也可以通过其他公式确定该第n+1个信号的估计值例如,在上述公式(4)中,在该第n个信号的估计值之前可以乘以相关系数,或者,在该第n+1个信号的量阶值b(n+1)之前也可以乘以相关系数,本申请实施例并不限于此。

在本申请实施例中,该方法100还包括:获取该第n+1个信号的采样值d(n+1),并确定该第n+1个信号的采样值d(n+1)和确定的该第n+1个信号的估计值之间的差值e(n+1);根据该差值e(n+1)的大小,确定该第n+1个信号的编码值c(n+1)。根据上述方法100的描述,根据该第n+1个信号的编码值c(n+1)的值,进而可以确定第n+2个信号的估计值,并确定该第n+2个信号的编码值c(n+2)的值,依次类推,即可对该待编码数据进行编码处理,获取对应的编码序列,以便于将该编码序列发送至解码设备,使得解码设备根据该编码序列,进行解码处理,即编码处理的逆过程,获得对应的数据流。

可选地,对于将待编码数据进行编码处理后获得的编码序列,该方法100还包括:对该编码序列进行语音增强处理。具体地,对于不同的运用场景,此步骤实现的功能不同,常见的语音增强包括波束成形、语音去噪、回声消除、语音活动性检测、语音唤醒和语音识别等,本申请实施例并不限于此。

因此,本申请实施例的确定cvsd编码中参数的方法,是一种自适应步长的cvsd编码方法,可以基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。

对比传统的cvsd编码方法中在前一时刻的语音信号估计值上增加或者减小固定的增量步长,尤其是针对低速率的语音信号,由于其每次的增量步长都是固定的,在算法刚开始时,初始化状态值较小,而每次编码的增量有限,很难快速逼近语音的真实值,导致失真严重:步长太小,容易导致过载失真,步长太大,容易导致颗粒失真。

因此,本申请实施例解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题。本申请实施例的方法,具有较强的鲁棒性,尤其在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

上文中结合图1,从编码的角度详细描述了根据本申请实施例的基于cvsd的编码方法,下面将结合图3,从解码的角度描述根据本申请实施例的基于cvsd的解码方法。

图3示出了根据本申请实施例的确定cvsd解码中参数的方法200的示意性流程图,该方法200可以由解码设备执行,该方法200可以为上述方法100的逆过程。

具体地,如图3所示,该方法200包括:s210,获取待解码码流中的第n个码值c(n),该待解码码流中的第n-a个码值至第n-1个码值均为第一值,n为大于1的正整数,a为小于n的正整数;s220,若该第n个码值c(n)为该第一值,根据a的大小,确定该待解码码流中第n+1个码值c(n+1)对应的增量步长δ,其中,δ>0;s230,根据该增量步长δ,确定该第n+1个码值c(n+1)对应的量阶值b(n+1)。

应理解,该待解码码流为编码设备将数据进行编码处理后,发送至该解码设备的编码序列。该待解码码流为采用上述方法100进行编码的码流,在此不再赘述。

在s210中,获取待解码码流中的第n个码值c(n),例如,该第n个码值c(n)可以为第一值或者第二值,n为大于1的正整数。另外,该待解码码流中的第n-a个码值至第n-1个码值均为第一值,a为小于n的正整数。

应理解,在该待解码码流中第n-a个码值至第n-1个码值均为第一值时,该第n-a个码值之前的一个码值不等于第一值,即第n-a-1个码值不等于第一值,即a的取值为最大值,表示第n个码值之前且连续的码值相同的全部码值的个数。

例如,根据上述公式(1)的编码规则,则解码设备接收到的码流包括1或0两种码值,即该第一值可以为1或0,假设取第一值为0,则a的值表示第n个码值之前的a个编码值均为0,而第n-a-1个码值为1。

参考编码方法100,对应的解码方法200的s220中,若该第n个码值c(n)为该第一值,根据a的大小,确定该待解码码流中第n+1个码值c(n+1)对应的增量步长δ,其中,δ>0。具体地,根据a的大小确定该待解码码流中第n+1个码值c(n+1)对应的增量步长δ,可以包括:在待解码码流中第n-a个码值至第n-1个码值均为第一值的情况下,若该a小于第二阈值,可以将第n+1个码值对应的增量步长δ设置为0,或者若第n个码值c(n)等于第二值,该第二值不等于第一值,也可以将该增量步长δ设置为0,或者,若该a大于或者等于第二阈值,则可以将该增量步长δ设置为不等于0的任意预设值。

其中,该第二阈值可以根据实际应用进行设置,例如,根据经验值,一般可以将该第二阈值设置为3或4,本申请实施例并不限于此。

另外,对于a大于或者等于第二阈值的情况,即取δ>0的情况,确定该待解码码流中第n+1个码值c(n+1)对应的增量步长δ,包括:若a小于第一阈值,确定增量步长δ为多个预设值中的第一预设值;若a大于或者等于该第一阈值,确定增量步长δ为该多个预设值中的第二预设值,该第二预设值大于该第一预设值。可选地,还可以为a设置多个阈值,根据a的不同大小,对应取不同的增量步长。

应理解,解码方法200中的s220可以与编码方法100中的s120相对应,可以互相参考,在此不再赘述。

在s230中,根据该增量步长δ,确定该第n+1个码值c(n+1)对应的量阶值b(n+1)。具体地,解码方法200中的s230可以与编码方法100中的s130相对应,可以互相参考,在此不再赘述。

例如,可以根据上述公式(2)或公式(3),确定该第n+1个码值c(n+1)对应的量阶值b(n+1)。

在本申请实施例中,该方法200还包括:s240,根据该第n个码值c(n)、该第n个码值c(n)对应的解码信号y(n)以及该第n+1个码值c(n+1)对应的量阶值b(n+1),确定该第n+1个码值c(n+1)对应的解码信号y(n+1),该第n+1个码值c(n+1)对应的量阶值b(n+1)可以表征该第n+1个码值对应的解码信号y(n+1)与该第n个码值对应的解码信号y(n)之间的差值和大小关系。

可选地,作为一个实施例,可以根据第n个码值c(n)的大小,将该第n个码值c(n)对应的解码信号y(n)以及该第n+1个码值c(n+1)对应的量阶值b(n+1)的和或者差,确定为该第n+1个码值c(n+1)对应的解码信号y(n+1)。具体地,可以通过下面的公式(5),确定该第n+1个码值c(n+1)对应的解码信号y(n+1):

应理解,解码方法200中的s240可以与编码方法100中的s140相对应,可以互相参考,例如,s240中的该第n+1个码值c(n+1)对应的解码信号y(n+1)与s140中的第n+1个信号的估计值相对应,s240中的该第n个码值c(n)对应的解码信号y(n)与s140中的第n个信号的估计值相对应,在此不再赘述。

在本申请实施例中,对待解码码流中每个码流,按照上述过程进行处理,获得每个码流对应的解码信号,即输出解码后的数据流。

应理解,该解码方法200还包括:对该待解码码流对应的解码信号流进行滤波处理,获取滤波后的解码信号流;对该滤波后的解码信号流进行下采样处理,输出解码数据。具体地,由于在编解码过程中,信号会出现直流漂移,这部分信号主要在低频;并且,真实语音信号采样速率较低,在编码前上采样以后,在解码后需要还原采样速率,因此在下采样前需要使用带通滤波器先滤波。

应理解,可以根据应用场景不同,或其他因素,灵活选择滤波器,在下采样前对解码信号进行滤波处理。例如,可以选择iir带通滤波器,具体地,假设考虑兼顾资源消耗和解码性能,可以选择8阶椭圆iir滤波器,与fir滤波器相比,实现相同的幅频特性的情况下,fir滤波器阶数比较大;性能方面,在固定阶数为8的情况下,巴特沃兹过度带过宽,切比雪夫通带内有衰减且阻带衰减慢,在有效带内,真实语音信号会有损失,因此选择椭圆iir滤波器。

应理解,该方法200为上述方法100的逆过程,方法200中各个部分内容与方法100相对应,为了简洁,在此不再赘述。

因此,本申请实施例的本申请实施例的确定cvsd解码中参数的方法,是上述编码方法的逆过程,参照编码过程,同样基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题;还通过设计一个带通滤波器,消除了编解码过程中存在的直流漂移问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

为了便于理解,下面以一个具体实例进行说明。图4示出了根据本申请实施例的基于cvsd的编解码方法300的示意性流程图,具体地,如图4所示,该方法300包括如下步骤。

s310,上采样低通滤波。本实施例以输入pcm数据流为例进行说明,编码设备将输入的pcm数据流进行上采样处理,并进行低通滤波,其目的是将低速率语音信号上采到合适的速率,以提高编码的准确性和到达数据压缩的目的,低通滤波的功能主要是滤除有效带宽以外干扰信号。

例如,对采样速率为8000hz的语音信号进行处理,其中待处理的数据为pcm类型,每个采样点所占大小为2个byte,可得信号在1s内传可传输16000byte,8倍上采样以后,采样速率为64000hz;经过cvsd编码后,每个采样点编码为一个bit,因此编码后1s内可传输8000byte。由此可知,数据被压缩了一倍,减小了资源消耗。该方法300中的上采样实现方式是在相邻采样点之间补7个零,然后选择椭圆型设计低通滤波器,由于语音信号频率范围为300~3400hz,滤波器设计的通带截止频率为3500hz,阻带衰减为-60db,考虑资源消耗,滤波器阶数选择8阶。

s320,cvsd编码,即对上采样之后的信号,根据cvsd编码原理和自适应步长的方法进行编码。具体地,该编码过程可以与编码方法100中相关步骤一致,在此不再赘述。

例如,下面结合一个具体实例,以图5为例进行说明。假设基准的增量步长δ取10,初始量阶值b(0)=10,以及最大量阶值bmax=2560,另外,还可以设置增量步长δ的多个预设值,如设置增量向量v=[10,20,40,100,500],增量步长δ的取值在该增量向量中选择。

如图5所示,在s321中,计算任一采样点的差值e(n)。具体地,取任意一个采样点n,计算该第n个采样点的采样值d(n)与估计值之间的差值

s322,编码输出。根据差值e(n),对第n个采样点进行编码,获得第n个采样点的编码值c(n)。例如,根据上述公式(1),若e(n)大于等于0,则编码结果c(n)=1,反之,编码结果c(n)=0。

s323,判断是否连码。根据编码方法100中的描述,这里假设将第二阈值设置为3,则确定第n个采样点以及其在其之前的相邻的采样点的编码结果,是否是相同的编码结果,且相同的个数大于或者等于3,即确定是否第n-2至第n个采样点的3个编码结果均相同,若是,则继续执行s324,如果不是,则继续执行s325。

s324,根据连码次数,选择增量步长δ。具体地,这里假设将第一阈值设置为5。则首先确定连码个数,即确定第n个采样点以及在其之前且与其相邻的采样点对应的编码值中连码个数,即确定a个值。

若a小于5,则取步长增量δ=10,此时,等效于传统cvsd编码算法;若第n个采样点以及在其之前且与其相邻的采样点对应的编码值中,是否有连续5个或者5个以上编码值均为1或者均为0,即a大于或者等于5,则根据连续码元发生次数a,从增量向量v=[10,20,40,100,500]中选择合适的增量步长δ。

在语音信号刚开始时,数据流通常都是突然变大或者变小,假设语音初始值估计值量阶值每次最大变化为增量步长δ,如果δ值设置较大,则可以快速逼近原始语音信号,但是在编码过程中会带来颗粒失真,如果δ值设置较小,原始语音信号的逼近速度很慢,并且编码过程中会出现过载失真。采用自适应步长增量可以随语音信号变化快慢动态调整δ,降低颗粒失真和过载失真。

因此,如果a较大,此时说明语音信号连续多个采样点增大或者减小,并且预测值在缓慢逼近真实值d(n),此时应该取一个较大的步长增量以便快速跟踪语音的变化,具体的,如果a的值为10,说明连续10个连码,并且之前的增量步长δ也较小,此时可选择较大的增量步长δ,例如取100或者500等。如果连续码元个数较小,说明此时估计的量阶值与真实语音比较接近,可以选择小的增量步长δ。这样可以解决语音开始时间段估计量阶与真实语音差异比较大的问题,动态步长增量调整可以提高估计量阶跟踪真实语音的准确性和速度。

s325,增量步长δ=0。对于没有连码,或者连码个数a小于3,则将增量步长δ设置为0。

s326,根据编码结果和增量步长,更新编码量阶值。该s326可以与编码方法100中的s130相对应,例如,采用如公式(2)或(3),确定该第n+1个信号的量阶值b(n+1),其中,衰减因子可以设置为β=0.9687。

为了防止量阶值b(n+1)超出有效数据范围,可以对其的取值进行限制,如果b(n+1)大于最大值bmax=2560,则令b(n+1)=bmax。

最后,参考编码方法140,根据编码结果和量阶值估计语音信号值。

s330,语音增强。根据不同的运用场景和不同的产品进行语音增强处理,比如波束成形、回声消除、噪声抑制、语音活动性检测、自动增益控制等等。将处理后的码流输出至解码设备,以便于继续执行s340。

s340,cvsd解码。对语音增强后的信号进行解码,尽可能还原原始语音信号,该解码过程为前述的s320编码过程的逆过程,并与解码方法200步骤一致,在此不再赘述。

例如,结合s320中的具体实例,下面以图6为例对该解码过程进行说明。

s341,判断是否连码。对应s320,假设第一阈值为5,第二阈值为3。对于输入的码流进行连续码判断,判断是否有连续3个1或者3个0,如果有,则继续执行s342,并统计连续码值的个数a;如果没有,继续执行s343。

s342,自适应选择增量步长δ=0。与s324对应,确定连码个数a,若a大于或者等于3且小于5,则取步长增量δ=10,此时,等效于传统cvsd编码算法;若a大于或者等于5,则根据连续码元发生次数a,从增量向量v=[10,20,40,100,500]中选择合适的增量步长δ,具体选择规则与s324一致,在此不再赘述。

s343,增量步长δ=0。与s325对应,对于没有连码,或者连码个数a小于3,则将增量步长δ设置为0。

s344,根据解码输入和增量步长计算解码输出y(n)。该s344可以与解码方法200中的s230相对应,例如,采用如公式(2)或(3),确定该第n+1个码值的量阶值b(n+1),其中,衰减因子可以设置为β=0.9687。

为了防止量阶值b(n+1)超出有效数据范围,可以对其的取值进行限制,如果b(n+1)大于最大值bmax=2560,则令b(n+1)=bmax。

最后,参考解码方法240,根据解码输入和量阶值估计语音信号值。

s350,带通滤波和下采样。该步骤主要是完成解码后的高速率码流向低速率码流的转换,还原到原始语音的传输速率,带通滤波器主要功能是:第一,滤除编解码带来的直流偏移;第二、滤除语音信号带外的干扰及噪声。

具体地,可以通过8阶椭圆iir带通滤波器进行滤波,本方法300的方案主要兼顾资源消耗和解码性能,因此选择8阶椭圆iir滤波器,与fir滤波器相比,实现相同的幅频特性,fir滤波器阶数比较大。性能方面,在固定阶数为8的情况下,巴特沃兹过渡带过宽,切比雪夫通带内有衰减且阻带衰减慢,在有效带内,真实语音信号会有损失,因此选择椭圆iir滤波器。语音信号主要集中在300~3400hz的频谱范围内,因此带通滤波器的通带1截止频率可设置为200~300hz,本发明中设置为200,通带2截止频率可设置为大于3600hz,本实施例中设置为3800hz,通带波纹设置为0.5db,阻带衰减设置为60db,滤波器幅频响应如图7所示。

因此,本申请实施例的基于cvsd的编解码方法,是一种自适应步长的cvsd编解码方法,可以基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。

对比传统的cvsd编解码方法中在前一时刻的语音信号估计值上增加或者减小固定的增量步长,尤其是针对低速率的语音信号,由于其每次的增量步长都是固定的,在算法刚开始时,初始化状态值较小,而每次编码的增量有限,很难快速逼近语音的真实值,导致失真严重:步长太小,容易导致过载失真,步长太大,容易导致颗粒失真。

因此,本申请实施例解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

上文中结合图1至图7,详细描述了根据本申请实施例的确定cvsd编解码中参数的方法,下面将结合图8至图10,描述根据本申请实施例的编码设备和解码设备。

如图8所示,根据本申请实施例的编码设备400包括:获取单元410和确定单元420,可选地,还可以包括处理单元430。具体地,该获取单元410用于:获取待编码数据中的第n个信号的编码值c(n),该待编码数据中的第n-a个信号至第n-1个信号对应的a个编码值均为第一值,n为大于1的正整数,a为小于n的正整数;该确定单元420用于:若该第n个信号的编码值c(n)为该第一值,根据a的大小,确定该待处理数据中第n+1个信号对应的增量步长δ,其中,δ>0;该确定单元420还用于:根据该增量步长δ,确定该第n+1个信号的量阶值b(n+1)。

可选地,作为一个实施例,该确定单元420还用于:若a小于第一阈值,确定增量步长δ为多个预设值中的第一预设值;若a大于或者等于该第一阈值,确定增量步长δ为该多个预设值中的第二预设值,该第二预设值大于该第一预设值。

可选地,作为一个实施例,该确定单元420还用于:若a大于或者等于第二阈值,确定该增量步长δ不为0,该第二阈值小于该第一阈值;若a小于第二该阈值或者该第n个信号的编码值c(n)为第二值,确定该增量步长δ为0,该第二值不等于该第一值。

可选地,作为一个实施例,该确定单元420还用于:根据该第n个信号的量阶值b(n)与该增量步长δ,确定该第n+1个信号的量阶值b(n+1)。

可选地,作为一个实施例,该确定单元420还用于:确定该第n个信号的量阶值b(n)与衰减因子的乘积;将该乘积与该增量步长δ的和确定为该第n+1个信号的量阶值b(n+1)。

可选地,作为一个实施例,该确定单元420还用于:根据上述的公式(2),确定该第n+1个信号的量阶值b(n+1),其中,b(n)为该第n个信号的量阶值,β为衰减因子,c为该第二阈值。

可选地,作为一个实施例,该确定单元420还用于:根据该增量步长δ,确定增长倍数,该增长倍数大于1;将该增长倍数、衰减因子与该第n个信号的量阶值b(n)的乘积确定为该第n+1个信号的量阶值b(n+1)。

可选地,作为一个实施例,该确定单元420还用于:根据上述的公式(3),确定该第n+1个信号的量阶值b(n+1),其中,b(n)为该第n个信号的量阶值,β为衰减因子,c为该第二阈值。

可选地,作为一个实施例,该待编码数据为语音数据,β=1-tτ,t为该语音数据的周期,τ为该语音数据的音节时间常数。

可选地,作为一个实施例,该确定单元420还用于:根据所述第n个信号的编码值c(n)、所述第n个信号的估计值以及所述第n+1个信号的量阶值b(n+1),确定所述第n+1个信号的估计值确定该第n+1个信号的采样值d(n+1)和该第n+1个信号的估计值之间的差值e(n+1);根据该差值e(n+1)的大小,确定该第n+1个信号的编码值c(n+1)。

可选地,作为一个实施例,该确定单元420还用于:若该差值e(n+1)大于或者等于0,确定该第n+1个信号的编码值c(n+1)为0;若该差值e(n+1)小于1,确定该第n+1个信号的编码值c(n+1)为0。

可选地,作为一个实施例,该第一值为1或0。

可选地,作为一个实施例,该确定单元420还用于:若所述第n个信号的编码值c(n)为1,将所述第n个信号的估计值与所述第n+1个信号的量阶值b(n+1)的和,确定为所述第n+1个信号的估计值若所述第n个信号的编码值c(n)为0,将所述第n个信号的估计值与所述第n+1个信号的量阶值b(n+1)的差,确定为所述第n+1个信号的估计值

可选地,作为一个实施例,该确定单元420还用于:根据上述公式(4),确定该第n+1个信号的估计值其中,为该第n个信号的估计值,b(n+1)为该第n+1个信号的量阶值,c(n)为该第n个信号的编码值。

可选地,作为一个实施例,该处理单元430用于:在该获取单元410获取待编码数据中的第n个信号的编码值c(n)之前,对原始数据进行上采样处理,获取该待编码数据。

可选地,作为一个实施例,该处理单元430还用于:按照插值算法,对该原始数据进行上采样处理,获取该待编码数据。

可选地,作为一个实施例,该处理单元430还用于:在该原始数据的相邻采样点之间补零,获取待处理数据;通过滤波器,对该待处理数据进行滤波处理,获取该待编码数据。

应理解,根据本申请实施例的编码设备400可对应于执行本申请实施例中的方法,并且编码设备400中的各个单元的上述和其它操作和/或功能分别为了实现图1至图7中的各个方法中编码设备的相应流程,为了简洁,在此不再赘述。

因此,本申请实施例的编码设备,采用自适应步长的cvsd编码方法,可以基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。

对比传统的cvsd编码方法中在前一时刻的语音信号估计值上增加或者减小固定的增量步长,尤其是针对低速率的语音信号,由于其每次的增量步长都是固定的,在算法刚开始时,初始化状态值较小,而每次编码的增量有限,很难快速逼近语音的真实值,导致失真严重:步长太小,容易导致过载失真,步长太大,容易导致颗粒失真。

因此,本申请实施例的编码设备解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

如图9所示,根据本申请实施例的解码设备500包括:获取单元510和确定单元520,可选地,还可以包括处理单元530。具体地,该获取单元510用于:获取待解码码流中的第n个码值c(n),该待解码码流中的第n-a个码值至第n-1个码值均为第一值,n为大于1的正整数,a为小于n的正整数;该确定单元520用于:若该第n个码值c(n)为该第一值,根据a的大小,确定该待解码码流中第n+1个码值c(n+1)对应的增量步长δ,其中,δ>0;该确定单元520还用于:根据该增量步长δ,确定该第n+1个码值c(n+1)对应的量阶值b(n+1)。

可选地,作为一个实施例,该确定单元520还用于:若a小于第一阈值,确定增量步长δ为多个预设值中的第一预设值;若a大于或者等于该第一阈值,确定增量步长δ为该多个预设值中的第二预设值,该第二预设值大于该第一预设值。

可选地,作为一个实施例,该确定单元520还用于:若a大于或者等于第二阈值,确定该增量步长δ不为0,该第二阈值小于该第一阈值;若a小于第二该阈值或者该第n个信号的编码值c(n)为第二值,确定该增量步长δ为0,该第二值不等于该第一值。

可选地,作为一个实施例,该确定单元520还用于:根据上述公式(2),确定该第n+1个码值c(n+1)对应的量阶值b(n+1),其中,b(n)为该第n个码值c(n)对应的量阶值,β为衰减因子,c为该第二阈值。

可选地,作为一个实施例,该确定单元520还用于:根据上述公式(3),确定该第n+1个码值c(n+1)对应的量阶值b(n+1),其中,b(n)为该第n个码值c(n)对应的量阶值,β为衰减因子,c为该第二阈值。

可选地,作为一个实施例,该待解码码流为语音数据的码流,β=1-t/τ,t为该语音数据的周期,τ为该语音数据的音节时间常数。

可选地,作为一个实施例,该确定单元520还用于:根据上述公式(5),确定该第n+1个码值c(n+1)对应的解码信号y(n+1),其中,y(n)为该第n个码值c(n)对应的解码信号,b(n+1)为该第n+1个码值c(n+1)对应的量阶值,c(n)为该待解码码流中该第n个码值。

可选地,作为一个实施例,该确定单元520还用于:根据该第n个码值c(n)、该第n个码值c(n)对应的解码信号y(n)以及该第n+1个码值c(n+1)对应的量阶值b(n+1),确定该第n+1个码值c(n+1)对应的解码信号y(n+1);该处理单元530用于:在该确定单元520确定该第n+1个码值c(n+1)对应的解码信号y(n+1)之后,对该待解码码流对应的解码信号流进行滤波处理,获取滤波后的解码信号流;对该滤波后的解码信号流进行下采样处理,输出解码数据。

可选地,作为一个实施例,该处理单元530还用于:通过带通滤波器,对该待解码码流对应的解码信号流进行该滤波处理。

可选地,作为一个实施例,该带通滤波器为无限脉冲响应iir滤波器。

可选地,作为一个实施例,该第一值为1或0。

应理解,根据本申请实施例的解码设备500可对应于执行本申请实施例中的方法,并且解码设备500中的各个单元的上述和其它操作和/或功能分别为了实现图1至图7中的各个方法中解码设备的相应流程,为了简洁,在此不再赘述。

因此,本申请实施例的解码设备,参照编码过程,同样基于连续相同的编码值的个数,选择不同的增量步长,以便于调整量阶值的大小,从而快速跟踪原始语音信号的快慢变化。解决了语音信号在开始时间段语音编码解码误差较大和失真严重的问题;还解决了由于增量步长选取不合理导致的过载失真和颗粒失真问题;还通过设计一个带通滤波器,消除了编解码过程中存在的直流漂移问题。本申请实施例的方法,具有较强的鲁棒性,尤其是在语音低速率传输场景中,具有较好的语音质量和较低的资源消耗。

图10是本申请实施例提供的一种用于cvsd编解码的设备600示意性结构图。图10所示的设备600包括处理器610,处理器610可以从存储器中调用并运行计算机程序,以实现本申请实施例中的方法。

可选地,如图10所示,设备600还可以包括存储器620。其中,处理器610可以从存储器620中调用并运行计算机程序,以实现本申请实施例中的方法。

其中,存储器620可以是独立于处理器610的一个单独的器件,也可以集成在处理器610中。

可选地,该设备600具体可为本申请实施例的编码设备,并且该设备600可以实现本申请实施例的各个方法中由编码设备实现的相应流程,为了简洁,在此不再赘述。

可选地,该设备600具体可为本申请实施例的解码设备,并且该设备600可以实现本申请实施例的各个方法中由解码设备实现的相应流程,为了简洁,在此不再赘述。

应注意,本申请上述方法实施例可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

应理解,在本申请实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1