CN101673547B - 编码方法、解码方法及其装置 - Google Patents

编码方法、解码方法及其装置 Download PDF

Info

Publication number
CN101673547B
CN101673547B CN2008101984163A CN200810198416A CN101673547B CN 101673547 B CN101673547 B CN 101673547B CN 2008101984163 A CN2008101984163 A CN 2008101984163A CN 200810198416 A CN200810198416 A CN 200810198416A CN 101673547 B CN101673547 B CN 101673547B
Authority
CN
China
Prior art keywords
vector
code book
layer
coding
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101984163A
Other languages
English (en)
Other versions
CN101673547A (zh
Inventor
胡瑞敏
张勇
刘霖
马付伟
王庭红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Wuhan University WHU
Original Assignee
Huawei Technologies Co Ltd
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Wuhan University WHU filed Critical Huawei Technologies Co Ltd
Priority to CN2008101984163A priority Critical patent/CN101673547B/zh
Publication of CN101673547A publication Critical patent/CN101673547A/zh
Application granted granted Critical
Publication of CN101673547B publication Critical patent/CN101673547B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明实施例公开了一种编码方法,包括:根据数据帧的能量以及所述数据帧的编码比特数,对所述数据帧进行缩放;将缩放后的数量帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量;对所述待编码矢量分层进行编码,获得编码码流。本发明实施例还公开了一种解码方法、一种编码装置及一种解码装置。采用本发明实施例,在保证编解码质量的前提下,有效地降低运算复杂度,节约存储空间。

Description

编码方法、解码方法及其装置
技术领域
本发明涉及数字信号处理领域,尤其涉及一种编码方法、解码方法及其装置。 
背景技术
在当前的语音信号编码领域,一种非常重要的实现方法就是变换编码,其主要思想是将待编码语音信号划分成若干帧,采用快速傅立叶变换(Fast Fourier Transform,FFT)或是离散余弦变换(Discrete Cosine Transform,DCT)等将语音信号从时域转化到频域,并对频谱进行量化。而格型矢量量化方法是目前在量化领域的一种常用方法。格型矢量量化方法的设计主要包括两个方面的问题:选取恰当的格以及设计特定格结构的码本。 
现有技术提供了一种基于RE8格的格型矢量量化方法。根据待量化处理的语音数据帧的能量,将一定编码比特数分配给该语音数据帧,确定一个能量缩放因子,并以该能量缩放因子对所述语音数据帧中各待量化矢量进行能量缩放,其次,确定语音数据帧中各待量化矢量在基于RE8格配置的码本内索引,即将各待量化矢量从绝对引导项生成时的排列方式、符号分布方式、绝对引导项复合起来,生成语音数据帧中各待量化矢量的码本内索引,根据该码本内索引及对应码本的码本号即可在解码端恢复出语音数据帧中的矢量。 
但是现有技术中利用绝对引导项来产生数据帧中各待量化矢量的算法以及计算所述排列方式的运算复杂度高,且存储空间占用量大,不利于方案的扩展实施。 
发明内容
本发明实施例所要解决的技术问题在于,提供了一种编码方法、一种解码方法及装置,能在保证编解码质量的前提下,有效地降低编解码复杂度,节约存储空间。 
为了解决上述技术问题,本发明实施例提出了一种编码方法,包括: 
根据语音数据帧的能量以及所述数据帧的编码比特数,对所述语音数据帧进行缩放; 
将缩放后的语音数据帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量; 
对所述待编码矢量分层进行编码,获得编码码流; 
其中,对所述待编码矢量分层进行编码,获得编码码流的步骤包括: 
根据能量大小从所述待编码矢量中确定一个为当前处理层矢量; 
根据当前处理层矢量获得当前层码本号; 
采用所述当前层码本号所对应的码本对当前处理层矢量进行量化直到量化误差或编码比特数为0; 
其中,所述采用所述当前层码本号所对应的码本对当前处理层矢量进行量化的步骤后还包括: 
对当前层码本号进行差分编码获得差分码本号,以及获得当前处理层矢量的码本内索引。 
本发明实施例还提供了一种解码方法,包括: 
获得语音数据帧矢量的分层编码码流; 
从所述分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息; 
根据所述每一编码层的差分码本号解码得到所述编码层的码本号; 
根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号; 
依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的语音数据帧; 
其中,根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号的步骤包括: 
当解码得到的所述码本号为0时,在最终合成信号中该编码层的矢量对应的部分以舒适噪声进行填充。 
相应地,本发明实施例还提供了一种编码装置,包括: 
缩放单元,用于根据语音数据帧的能量以及所述数据帧的编码比特数,对 所述语音数据帧进行缩放; 
格点量化单元,用于将经缩放单元缩放后的语音数据帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量; 
编码处理单元,用于对所述待编码矢量分层进行编码,获得编码码流; 
其中,所述编码处理单元包括: 
选择单元,用于根据能量大小,从所述待编码矢量中确定一个当前处理层矢量; 
码本号获取单元,用于根据当前处理层矢量获得当前层码本号; 
量化处理单元,用于采用所述当前层码本号所对应的码本对当前处理层矢量进行量化直到量化误差或编码比特数为0; 
差分编码单元,用于对当前层码本号进行差分编码获得差分码本号,以及获得当前处理层矢量的码本内索引。 
相应地,本发明实施例还提供了一种解码装置,包括: 
获取单元,用于获得语音数据帧矢量的分层编码码流; 
解析单元,用于从所述分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息; 
解码处理单元,用于根据所述每一编码层的差分码本号解码得到所述编码层的码本号;并根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号; 
叠加单元,用于依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的语音数据帧; 
其中,所述解码处理单元包括: 
填充单元,用于在解码得到的所述码本号为0时,在最终合成信号中该编码层的矢量对应的部分填充舒适噪声。 
本发明实施例,通过利用RE8格型为基础,采用对待编码矢量逐层量化的方式,其将待编码矢量量化到RE8格点上,并将量化到RE8格点上的格点代数拆解成若干层,对每层分别选用某一码本进行量化。这样,通过采用代数的码本构成和索引方式,在保证编解码质量的前提下,有效地降低编解码复杂度,节约存储空间。 
附图说明
图1是本发明实施例的矢量量化方法的示意图; 
图2是本发明实施例的语音解码方法的示意图; 
图3是本发明实施例的矢量量化装置的示意图; 
图4是本发明实施例中量化处理单元的一个实施例的结构示意图; 
图5是本发明实施例中差分编码单元的一个实施例的结构示意图; 
图6是本发明实施例中码本号获取单元的一个实施例的结构示意图; 
图7是本发明实施例的语音解码装置的示意图。 
具体实施方式
本发明实施例提供了一种编码方法、一种解码方法、一种编码装置及一种解码装置,可实现采用代数的码本构成和索引方式,在保证编解码质量的前提下,有效地减小运算量、降低运算复杂度,节约存储空间。 
下面结合附图,对本发明实施例进行详细说明。 
RE8格是一种基于格型矢量量化的一种格型结构,即 
RE8=2D8∪{2D8+(1,1,1,1,1,1,1,1)}, 
其中,D8是由8维整数格Z8的格点v=(v1,v2,...,v8)组成,且其坐标满足 
Figure GDA0000083703750000041
即: 
D8={(x1,x2,...,x8)∈Z8|x1,x2,...,x8为偶数}, 
那么由上可知,RE8格具有如下性质: 
1、RE8格点代表的所有8维矢量,其8个分量的和为4的倍数; 
2、RE8格点代表的所有8维矢量,其8个分量全部为奇数或全部为偶数; 
在本发明实施例中,采用RE8格点作为格型矢量量化的基本单元。 
图1是本发明实施例的编码方法的示意图,参照该图,该方法主要包括: 
步骤101,根据语音数据帧中各待量化矢量的能量及分配给语音数据帧的编码比特数,对语音数据帧中的各个待量化矢量进行能量缩放,具体地,为了保证语音数据帧可以被分配的编码比特数量化,需要根据语音数据帧中各待量化矢量的能量以及分配的编码比特数对语音数据帧中各待量化矢量进行能量缩放,可包括: 
A、计算语音数据帧中各待量化矢量的能量: 
在一个实施例中,假设所述语音数据帧中包含K个8维待量化矢量,令Bk[i]为K个8维待量化矢量中第k个8维待量化矢量的第i个分量,Rk(1)为第k个8维待量化矢量的能量,计算如下: 
E k = max ( 2 , Σ i = 0 7 B k [ i ] B k [ i ] ) , k = 1,2 , . . . K , i = 0,1,2 , . . . , 7 ;
R k ( 1 ) = 5 log 2 ( E k 2 ) ;
B、根据语音数据帧中各待量化矢量的能量及分配给语音数据帧的编码比特数计算语音数据帧的缩放因子: 
首先,初始化变量fac、offset:fac=128,offset=0,NB_BITS是分配给语音数据帧的编码比特数; 
其次,按以下步骤迭代多次,直至offset变量不再变化,一般采用经验值10次: 
offset=offset+ fac 
nbits = Σ k = 1 K max ( 0 , R k ( 1 ) - offset )
if nbits≤NB_BITS,then offset=offset-fac 
fac=fac/2; 
迭代完成之后,计算缩放因子g: 
g = 10 offset × log 10 2 10 ;
C、利用所述缩放因子g对语音数据帧中待量化矢量进行能量缩放: 
xk[i]=Bk[i]/g,i=0,1,2,...,7,其中Bk[i]是语音数据帧中第k个8维待量化矢量第i个分量缩放前的数据,xk[i]是其缩放后的数据。 
步骤102,将经过所述能量缩放处理后的各个待量化矢量量化到最接近的RE8格点上,获得待编码矢量,具体地可包括如下流程: 
D、将xk量化为2D8上的格点yk: 
d1,计算yk[i]=int(xk[i]/2)×2,i=0,1,2,...,7,其中int表示取整运算(下同),xk[i]为语音数据帧中第k个8维待量化矢量第i个分量Bk[i]缩放后的数据,其数据类型为浮点数; 
d2,计算格点yk的8个分量的和S: 
Figure GDA0000083703750000055
d3,判断S是否为4的倍数,即判断格点yk是否满足RE8格的性质,若是,则量化完成,否则执行d4; 
d4,找出yk[i]中误差最大的分量yk[max_i],其中 
Figure GDA0000083703750000061
若yk[max_i]<xk[max_i],将yk[max_i]自加2,即yk[max_i]=yk[max_i]+2,否则将yk[max_i]自减2,即yk[max_i]=yk[max_i]-2(对于已经全为偶数的矢量来说,若其各分量之和不是4的倍数,将某一元素加/减2之后,一定会使其各分量之和变为4的倍数); 
E、将xk量化为2D8+(1,1,1,1,1,1,1,1)上的格点y′k: 
e1,计算y′k[i]=int((xk[i]-1)/2)×2,i=0,1,2,...,7,其中xk[i]为语音数据帧中第k个8维待量化矢量第i个分量Bk[i]缩放后的数据,其数据类型为浮点数; 
e2,计算格点y′k8个分量的和S’: 
Figure GDA0000083703750000062
e3,判断S’是否为4的倍数,即判断格点y′k是否满足RE8格的性质,若是,则量化完成,否则执行e4; 
e4,找出y′k[i]中误差最大的分量y′k[max_i],其中 
Figure GDA0000083703750000063
即若y′k[max_i]<xk[i],将y′k[max_i]自加2,即y′k[max_i]=y′k[max_i]+2,否则将y′k[max_i]自减2,即y′k[max_i]=y′k[max_i]-2; 
e5,将每个分量自加1,即y′k[i]=y′k[i]+1; 
F、计算上述D、E处理所得RE8格点的量化误差eA、eB: 
e A = Σ i = 0 7 ( y k [ i ] - x k [ i ] ) 2 , e B = Σ i = 0 7 ( y k ′ [ i ] - x k ′ [ i ] ) 2 ,
若eA≤eB,则将步骤D中处理所得yk[i]作为该xk所量化为的最接近的RE8格点,否则将步骤E中处理所得y′k[i]作为该xk所量化为的最接近的RE8格点; 
经过上述的量化处理,可以获得语音数据帧的待编码矢量,即当前帧所有量化到RE8格点上的8维矢量。 
之后,需要对这些待编码矢量分层进行编码,以获得编码码流,具体包括如下步骤: 
步骤104,根据能量大小,从所有待编码矢量中确定一个为当前处理层的矢量,例如可以选择重要性最高的未处理的RE8格点上的8维矢量作为当前处理层矢量; 
步骤105,所述当前层码本号所对应的码本对当前处理层矢量进行量化直到 所述量化误差或所述编码比特数为0。 
具体地,本发明实施例中提出了一种供上述量化使用的码本表,如下表1所示: 
码本号   可能的元素值
0   0
1   ±2,0,(1,1,1,1,1,1,1,1)
2   ±4,±2,0
3   ±8,±4,0
4   ±12,±6,0
.........   .........
n-1   ±4x((n-1)-1),±2x((n-1)-1),0
N   ±4x(N-1),±2x(N-1),0
.........   .........
21   ±80,±40,0
表1 
上表1中,码本号为0的码本包含元素0;码本号为1的码本包含元素±2,0以及元素(1,1,1,1,1,1,1,1);码本号为2及以上的码本包含元素±4×(码本号-1),±2×(码本号-1),0。 
假定当前处理层矢量为 
Figure GDA0000083703750000071
上述使用当前处理层矢量对应码本对该当前处理层矢量进行量化得到该当前处理层矢量的矢量编码信号、量化误差的步骤可包括如下流程: 
若该当前处理层矢量为最高层矢量时,当的8个分量全为奇数时,以该当前处理层矢量8个分量均减1所得矢量作为最高处理层矢量,并执行下述g1;当该当前处理层矢量的8个分量全为偶数时,以该当前处理层矢量作为最高处理层矢量,直接执行g1,以获得当前层码本号。该根据当前处理层适量获得当前层码本号的步骤具体为; 
g1,提取当前处理层矢量 
Figure GDA0000083703750000072
的8个分量的绝对值最大的分量(max_value); 
g2,根据该最大的分量(max_value),计算所述当前处理层矢量 对应码本的码本号cb_num: 
cb _ num = int ( max _ value + 4 5 ) + 1 ;
g3,使用所述码本号为cb_num的码本对所述当前层矢量 
Figure GDA0000083703750000075
的各分量进行量化: 
若所述当前处理层矢量 
Figure GDA0000083703750000076
的8个分量中第i个分量xi>0时,对其进行第一量 化,得到该分量xi的的第一量化结果,在一个实施例中,该第一量化公式为: 
y i = int ( x i + ( cb _ num - 1 ) ( cb _ num - 1 ) × 2 ) , i = 0,1,2 , . . . 7 ,
若所述当前处理层矢量 
Figure GDA0000083703750000082
个分量中第i个分量xi<0时,对其进行第一量化,得到该分量xi的第二量化结果,在一个实施例中,该第二量化公式为: 
y i = int ( x i - ( cb _ num - 1 ) ( cb _ num - 1 ) × 2 ) , i = 0,1,2 , . . . 7 ;
g4,根据对所述当前处理层矢量8个分量各分量及其量化结果,计算对所述当前处理层矢量进行量化得到的量化误差 
Figure GDA0000083703750000084
err → = ( x 1 - y 1 , x 2 - y 2 , x 3 - y 3 , . . . . . . , x 8 - y 8 ) ;
步骤106,判断是否满足所述量化误差 
Figure GDA0000083703750000086
不为0且分配给所述语音数据帧的编码比特数未用完的条件,当满足所述量化误差 
Figure GDA0000083703750000087
不为0以及编码比特数未用完的条件时,则以所述量化误差 
Figure GDA0000083703750000088
作为当前处理层矢量,并返回执行步骤105;当所述量化误差 或编码比特数用完时,则输出编码码流。 
上述确定所述当前处理层矢量 
Figure GDA00000837037500000810
在其对应码本中的索引的步骤可包括如下流程,其中索引一般包括码本号及码本内索引: 
h1、当所述当前处理层矢量 
Figure GDA00000837037500000811
为0时,确定所述当前处理层矢量 
Figure GDA00000837037500000812
对应码本号为0,即步骤g2中计算所得的码本号cb_num,当当前处理层矢量 
Figure GDA00000837037500000813
对应码本的码本号为0时,当前处理层矢量 
Figure GDA00000837037500000814
在其对应码本中的索引只包括其码本号0而不包括码本内索引; 
h2、当所述当前处理层矢量 
Figure GDA00000837037500000815
不为0时,确定所述当前处理层矢量 
Figure GDA00000837037500000816
对应码本的码本号,即g2中计算所得码本号cb_num,并确定所述当前处理层矢量 
Figure GDA00000837037500000817
个分量在其对应码本中的索引号(即xi在其对应码本中的索引号),以最高处理层编码索引标识位high_tag记录所述最高处理层矢量,以奇偶标识位记录所述初始矢量各分量全为奇数/偶数,索引中的码本内索引包括上述索引号、最高处理层编码索引标识(high_tag)以及奇偶标识位,其中: 
当当前处理层矢量 为初始矢量,即最高处理层矢量时,所述最高处理层编码索引标识位high_tag置1,否则置0,这样,在解码端,该最高处理层编码索引标识位high_tag指示某初始矢量的码流的开始,当然最高处理层编码索引标识位high_tag也可以采用其他的标示方式来实现其功能; 
当当前处理层矢量 
Figure GDA00000837037500000819
为初始矢量,即最高处理层矢量时,需要判断当前处理 层矢量 
Figure GDA0000083703750000091
各分量是否全为奇数/偶数,若全为奇数,则所述奇偶标识位置1,否则置0,这样,在解码端,该奇偶标识位可指示是否进行将所述初始矢量的各分量恢复成全奇数的处理; 
所述确定所述当前处理层矢量 
Figure GDA0000083703750000092
个分量在其对应码本中的索引号的步骤具体可包括如下流程: 
h21,针对使用码本号为1的码本进行量化的当前处理层矢量 
Figure GDA0000083703750000093
该当前处理层矢量 
Figure GDA0000083703750000094
中每个分量以一比特位指示其是否非零,当非零时以另一比特位指示其符号,由所述比特位的集合形成所述当前处理层矢量 
Figure GDA0000083703750000095
个分量在其对应码本号为1的码本中的索引号,具体地,对于当前处理层矢量 
Figure GDA0000083703750000096
个分量中前7个分量中的每个分量,用一个比特指示其为0或非零,若为非零再用一个比特指示其符号,经过前7个分量的分析并结合RE8格的性质,可以推断出第8个分量为0或非零,若为0,则第8个分量无需比特编码,否则用一比特指示其符号;另外,对于量化为(1,1,1,1,1,1,1,1)的当前处理层矢量 其索引号指定为7个0; 
h22,针对使用码本号为2及以上的码本进行量化的当前处理层矢量 
Figure GDA0000083703750000098
该当前处理层矢量 中每个分量yi,i=0,1,2,...,7先以1/(码本号-1)进行缩放得到 那么码本号为2及以上的码本中即转化为只包括-4,-2,0,2,4五种元素,那么可接着计算所述当前处理层矢量 
Figure GDA00000837037500000911
个分量中前7个分量在其对应码本中的索引号index0-6: 
i i = y i ′ 2 + 2 , i ∈ { 0,1,2,3,4,5,6 } , y′i∈{-4,-2,0,2,4},ii∈{0,1,2,3,4}’ 
index0-6=i6×56+i5×55+i4×54+i3×53+i2×52+i1×51+i0×50,index0-6∈[0,78124]; 
再次计算所述当前处理层矢量 
Figure GDA00000837037500000913
个分量中第8个分量在其对应码本中的索引号index7:当y′7∈{-4,0,4}时, 
Figure GDA00000837037500000914
当y′7∈{-2,2}时, 
Figure GDA00000837037500000915
Figure GDA00000837037500000916
另外,所述当前处理层矢量对应码本的码本号与该当前处理层矢量下一处理层矢量对应码本的码本号之间可以采用差分编码或其他编码方式进行处理,即: 
所述当前处理层矢量对应码本的码本号与该当前处理层矢量下一处理层矢 量对应码本的码本号之间采用差分编码,得到所述当前处理层矢量对应码本的差分码本号cb_num_diff为: 
Figure GDA0000083703750000101
其中cb_num′为当前处理层矢量的下一处理层矢量对应码本的码本号; 
对该获得的差分码本号进行编码,在具体的实施例中,可根据各码本在编码时所使用的统计概率大小对差分码本号进行编码,例如使用概率较大的码本对应差分码本号位数较少,使用概率较大的码本对应差分码本号位数较多,各差分码本号组成的码本号编码表如下表2所示,但不仅限于此编码形式: 
  差分码本号   编码
  0   0
  1   101
  2   1001
  3   10001
  4   10000
  5   11000
  6   11001
  7   11010
  8   11011
  9   11100
  10   11101
  11   1111000
  12   1111001
  13   1111010
  14   1111011
  15   1111100
  16   1111101
  17   1111110
  18   1111111
表2 
上表2中,从码本号为0的码本对应的差分码本号开始,前4个(差分码本号标示为0,1,2,3)差分码本号采用哈夫曼(huffman)编码方式编码,第6个至第11个差分码本号、第12个至19个差分码本号采用二进制编码方式编码,并以一比特位指示当前处理层矢量对应码本的差分码本号的编码方式; 
图2是本发明实施例的解码方法的示意图,该解码方法基于上述图1所示的本发明实施例的编码方法,参照图2,该方法主要包括: 
步骤201,获得前面对图1进行描述的编码方法所得到的数据帧矢量的分层编码码流;从该分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息,具体地,该码本内索引信息包括所述一个处理层矢量8个分量在其对应码本中的索引号、记录以所述初始矢量作为最高处理层矢量的最高处理层编码索引标识位high_tag、记录所述初始矢量8个分量全为奇数/偶数的奇偶标识位; 
步骤202,根据每一编码层差分码本号解码得到该编码层的码本号;并根据该码本号以及码本内索引信息,从相应的码本中获得该编码层的RE8格点矢量信号,该步骤具体可包括如下流程: 
当一个处理层矢量对应码本的码本号为0时,在所述最终合成信号中该当前处理层矢量对应的部分填充舒适噪声; 
当一个处理层矢量对应码本的码本号不为0时,接收到所述最高处理层编码索引标识位high_tag时,使用所述一个处理层矢量8个分量在其对应码本中的索引号,从所述码本号对应的码本中解码出该编码层的RE8格点矢量信号; 
步骤203,依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的数据帧,具体地,可叠加各处理层矢量解码所得RE8格点上的8维矢量信号,再根据所述奇偶标识位选择进行将所述初级合成信号各分量恢复成全奇数的处理,得到所述最终合成的数据帧,例如当奇偶标识位为1时,在叠加各处理层矢量解码所得RE8格点上的8维矢量信号(全为偶数)后,需要该信号各分量加1,即恢复为编码前的矢量信号。 
相应地,下面对本发明实施例的装置进行说明。 
图3是本发明实施例的编码装置的示意图,参照该图,该装置主要包括缩放单元1、格点量化单元2以及编码处理单元3,其中: 
缩放单元1,用于根据数据帧的能量以及该数据帧的编码比特数,对该数据帧进行缩放;可包括: 
能量计算单元10,计算语音数据帧中各待量化矢量的能量,例如,假设所述语音数据帧中包含K个8维待量化矢量,令Bk[i]为K个8维待量化矢量中第k个8维待量化矢量的第i个分量,Rk(1)为第k个8维待量化矢量的能量,计算: 
E k = max ( 2 , Σ i = 0 7 B k [ i ] B k [ i ] ) , , k = 1,2 , . . . K , i = 0,1,2 , . . . , 7 ; R k ( 1 ) = 5 log 2 ( E k 2 ) ;
缩放因子计算单元12,根据语音数据帧的能量及分配给语音数据帧的编码比特数计算语音数据帧的缩放因子,具体地,可进行如下处理: 
首先,初始化变量fac、offset:fac=128,offset=0,NB_BITS是分配给数据帧的编码比特数; 
其次,按以下步骤迭代10次: 
offset=offset+fac 
nbits = Σ k = 1 K max ( 0 , R k ( 1 ) - offset )
if nbits≤NB_BITS,then offset=offset-fac 
fac=fac/2 
迭代完成之后,计算缩放因子g: 
g = 10 offset × log 10 2 10 ;
能量缩放单元14,利用所述缩放因子g对语音数据帧中待量化矢量进行能量缩放,例如,可进行如下的缩放: 
xk[i]=Bk[i]/g,i=0,1,2,...,7,其中Bk[i]是语音数据帧中第k个8维待量化矢量第i个分量缩放前的数据,xk[i]是其缩放后的数据。 
格点量化单元2,用于将经缩放单元缩放后的数据帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量,例如,具体地可作如下处理: 
(一)将xk量化为2D8上的格点yk: 
首先,计算yk[i]=int(xk[i]/2)×2,i=0,1,2,...,7,xk[i]为语音数据帧中第k个8维待量化矢量第i个分量Bk[i]缩放后的数据,其数据类型为浮点数; 
其次,计算格点yk8个分量的和S: 
Figure GDA0000083703750000123
再次,判断S是否为4的倍数,即判断格点yk是否满足RE8格的性质,若是,则量化完成,否则继续进行下述处理; 
最后,找出yk[i]中误差最大的分量yk[max_i],其中 
Figure GDA0000083703750000124
若yk[max_i]<xk[max_i],yk[max_i]自加2,即yk[max_i]=yk[max_i]+2,否则yk[max_i]自减2,即yk[max_i]=yk[max_i]-2; 
(二)将xk量化为2D8+(1,1,1,1,1,1,1,1)上的格点y′k: 
首先,计算y′k[i]=int((xk[i]-1)/2)×2,i=0,1,2,...,7,其中xk[i]为语音数据帧中第k个8维待量化矢量第i个分量Bk[i]缩放后的数据,其数据类型为浮点数; 
然后,计算格点y′k8个分量的和S’: 
其次,判断S’是否为4的倍数,即判断格点y′k是否满足RE8格的性质,若是,则量化完成,否则继续进行下述处理; 
再次,找出y′k[i]中误差最大的分量y′k[max_i],其中 
Figure GDA0000083703750000132
即若y′k[max_i]<xk[i],y′k[max_i]自加2,即y′k[max_i]=y′k[max_i]+2,否则y′k[max_i]自减2,即y′k[max_i]=y′k[max_i]-2; 
最后,将每个分量自加1,即y′k[i]=y′k[i]+1; 
(三)计算上述处理所得RE8格点量化的误差: 
e A = Σ i = 0 7 ( y k [ i ] - x k [ i ] ) 2 , e B = Σ i = 0 7 ( y k ′ [ i ] - x k ′ [ i ] ) 2 ,
若eA≤eB,则将(一)处理所得所述yk[i]作为量化到RE8格点上的语音数据帧的初始矢量,否则将(二)处理所得所述y′k[i]量化到RE8格点上的语音数据帧的初始矢量; 
编码处理单元3,用于对格点量化单元量化到RE8格点上的待编码矢量分层进行编码,获得编码码流。具体可包括: 
码本提供单元31,提供对所述量化使用的码本表,如前文中的表1所示,此处不再赘述; 
选择单元38,用于根据能量大小,从待编码矢量中确定一个当前处理层矢量,例如,选择重要性最高的未处理的8维矢量作为当前处理层矢量; 
码本号获取单元32,用于根据当前处理层矢量获得当前层码本号; 
量化处理单元33,用于采用当前层码本号所对应的码本对当前处理层矢量进行量化直到所述量化误差或所述编码比特数为0。 
差分编码单元36,用于对当前层码本号进行差分编码获得差分码本号,以及获得当前处理层矢量的码本内索引。 
假定当前处理层矢量为 
Figure GDA0000083703750000135
编码处理单元33还可包括: 
预处理单元,当所述最高层处理矢量的8个分量全为奇数时,以该最高层处理矢量8个分量均减1所得矢量作为当前处理层矢量;当所述最高层处理矢量的8个分量全为偶数时,以该最高层处理矢量作为当前处理层矢量; 
如图4所示,是本发明实施例中量化处理单元33的一个实施例的结构示意图。 
该量化处理单元33包括: 
量化误差获取单元330,用于在码本表中根据当前层码本号所对应的码本对当前处理层矢量进行量化,获得量化误差; 
判断处理单元332,用于在判断所述量化误差不等于0或编码比特数不为0时,以所述量化误差作为当前处理层矢量。 
该量化误差获取单元330进一步包括: 
第一量化单元334,用于采用对应的码本对大于零的所述当前处理层矢量的各分量进行第一量化获得第一量化结果,例如,该第一量化所采用的公式可以为: 
y i = int ( x i + ( cb _ num - 1 ) ( cb _ num - 1 ) × 2 ) , i = 0,1,2 , . . . 7
第二量化单元336,用于采用所述对应的码本对小于零的所述当前处理层矢量的各分量进行第二量化获得第二量化结果,例如,该第二量化所采用的公式可以为: 
y i = int ( x i - ( cb _ num - 1 ) ( cb _ num - 1 ) × 2 ) , i = 0,1,2 , . . . 7
差值计算单元338,用于根据当前处理层矢量各分量及其所述第一量化结果和第二量化结果的差值,获得对当前处理层矢量进行量化的量化误差,例如,该量化误差可以为 err → = ( x 1 - y 1 , x 2 - y 2 , x 3 - y 3 , . . . . . . , x 8 - y 8 ) .
如图5所示,是本发明实施例中差分编码单元36的一个实施例的结构示意图。 
其中,该差分编码单元36包括: 
差分码本号确定单元360,用于根据当前处理层矢量的码本号以及下一处理层矢量对应码本的码本号,获得当前处理层矢量对应码本的差分码本号,例如,可以以下述方式获得差分码本号: 
Figure GDA0000083703750000144
其中,cb_num为所述当前处理层矢量的码本号;cb_num′为当前处理层矢量的下一处理层矢量对应码本的码本号,cb_num_diff为当前处理层矢量对应码本的差分码本号; 
差分码本号编码单元362,用于对所获得的差分码本号进行编码,在一个实 例中,可以对于前4个差分码本号采用哈夫曼编码方式进行编码,之后的差分码本号采用二进制编码方式进行编码。 
码本内索引确定单元364,用于获得当前处理层矢量的码本内索引,其中码本内索引包括最高层编码索引标识位、奇偶标识位以及索引号信息。 
如图6所示,是本发明实施例中码本号获取单元32的一个实施例的结构示意图。 
其中,该码本号获取单元32包括: 
提取单元320,用于提取当前处理层矢量中绝对值最大的分量;8维分量的绝对值中最大的值; 
计算单元322,用于根据分量绝对值计算获得到当前处理层矢量对应码本的码本号。 
图7是本发明实施例的解码装置4的示意图,参照该图,该装置主要包括获取单元41、合成单元42、叠加单元43,其中各单元功能如下述: 
获取单元41,用于数据帧矢量的分层编码码流; 
解析单元42,用于从该分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息。其中,该码本内索引信息包括:记录以所述初始矢量作为最高处理层矢量的最高处理层编码索引标识位、记录所述初始矢量8个分量全为奇数/偶数的奇偶标识位、以及索引号。 
解码处理单元44,用于根据所述每一编码层差分码本号解码得到所述编码层的码本号;并根据所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号; 
叠加单元46,用于依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的数据帧。 
所述解码处理单元44具体还可以包括: 
填充单元47,用于在解码到的码本号为0时,在所述最终合成信号中该编码层的矢量对应的部分填充舒适噪声。 
恢复处理单元48,根据所述码本内索引信息中奇偶标识位,选择进行将所述8维矢量信号各分量恢复成全奇数。 
作为一种实施方式,该解码处理单元44还可以包括: 
差分解码单元49,当所述一个处理层矢量对应码本的码本号与该处理层矢 量相邻的处理层矢量对应码本的码本号采用差分编码时,从所述差分编码得到的差分码本号中解码出所述一个处理层矢量对应码本的码本号(即实际码本号),再进行对应的处理。 
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。 
以上所述是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。 

Claims (18)

1.一种编码方法,其特征在于,包括:
根据语音数据帧的能量以及所述语音数据帧的编码比特数,对所述语音数据帧进行缩放;
将缩放后的语音数据帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量;
对所述待编码矢量分层进行编码,获得编码码流;
其中,对所述待编码矢量分层进行编码,获得编码码流的步骤包括:
根据能量大小从所述待编码矢量中确定一个为当前处理层矢量;
根据当前处理层矢量获得当前层码本号;
采用所述当前层码本号所对应的码本对当前处理层矢量进行量化直到量化误差或编码比特数为0;
其中,所述采用所述当前层码本号所对应的码本对当前处理层矢量进行量化的步骤后还包括:
对当前层码本号进行差分编码获得差分码本号,以及获得当前处理层矢量的码本内索引。
2.如权利要求1所述的编码方法,其特征在于,所述对所述待编码矢量分层进行编码,获得编码码流的步骤还包括:
采用所述当前层码本号所对应的码本对当前处理层矢量进行量化获得的量化误差不为0且所述编码比特数不为0时,以所述量化误差作为当前处理层矢量,并返回根据当前处理层矢量获得当前层码本号的步骤。
3.如权利要求1所述的编码方法,其特征在于,采用所述当前层码本号所对应的码本对当前处理层矢量进行量化时使用的码本表包括:
码本号为0的码本包含元素0;
码本号为1的码本包含元素:±2,0,以及(1,1,1,1,1,1,1,1);
码本号为2及以上的码本包含:±4×(码本号-1),±2×(码本号-1),0。 
4.如权利要求1所述的编码方法,其特征在于,所述码本内索引包括:
最高层编码索引标识位,用于标识待编码矢量的最高层;
奇偶标识位,用于记录所述最高层的各分量全为奇数或偶数;以及
索引号,用于记录所述当前处理层矢量在码本内的索引位置。
5.如权利要求1所述的编码方法,其特征在于,根据当前处理层矢量获得当前层码本号的步骤具体为:
提取当前处理层矢量中绝对值最大的分量;
根据所述分量计算获得当前处理层矢量对应码本的码本号。
6.如权利要求5所述的编码方法,其特征在于,采用所述当前层码本号所对应的码本对当前处理层矢量进行量化,获得量化误差的步骤具体为:
采用所述对应的码本对大于零的所述当前处理层矢量的各分量进行第一量化获得第一量化结果;
采用所述对应的码本对小于零的所述当前处理层矢量的各分量进行第二量化获得第二量化结果;
根据所述当前处理层矢量的各分量及其所述第一量化结果和第二量化结果的差值,获得对所述当前处理层矢量进行量化的量化误差。
7.如权利要求1所述的编码方法,其特征在于,所述对当前层码本号进行差分编码的步骤包括:
根据当前处理层矢量的当前层码本号以及下一处理层矢量对应码本的码本号,获得当前处理层矢量对应码本的差分码本号;
对所述获得的差分码本号进行编码。
8.一种解码方法,其特征在于,包括:
获得语音数据帧矢量的分层编码码流;
从所述分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息;
根据所述每一编码层的差分码本号解码得到所述编码层的码本号; 
根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号;
依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的语音数据帧;
其中,根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号的步骤包括:
当解码得到的所述码本号为0时,在最终合成信号中该编码层的矢量对应的部分以舒适噪声进行填充。
9.如权利要求8所述的解码方法,其特征在于,进一步包括:根据所述码本内索引信息中的奇偶标识位选择进行将所述RE8格点矢量信号的各分量恢复成全奇数的处理。
10.一种编码装置,其特征在于,包括:
缩放单元,用于根据语音数据帧的能量以及所述语音数据帧的编码比特数,对所述语音数据帧进行缩放;
格点量化单元,用于将经缩放单元缩放后的语音数据帧中各编码矢量量化为最接近的RE8格点,获得待编码矢量;
编码处理单元,用于对所述待编码矢量分层进行编码,获得编码码流;
其中,所述编码处理单元包括:
选择单元,用于根据能量大小,从所述待编码矢量中确定一个当前处理层矢量;
码本号获取单元,用于根据当前处理层矢量获得当前层码本号;
量化处理单元,用于采用所述当前层码本号所对应的码本对当前处理层矢量进行量化直到量化误差或编码比特数为0;
差分编码单元,用于对当前层码本号进行差分编码获得差分码本号,以及获得当前处理层矢量的码本内索引。
11.如权利要求10所述的编码装置,其特征在于,所述量化处理单元进一步包括: 
量化误差获取单元,用于在码本表中根据所述当前层码本号所对应的码本对当前处理层矢量进行量化,获得量化误差;
判断处理单元,用于在判断所述量化误差不等于0且编码比特数不为0时,以所述量化误差作为当前处理层矢量。
12.如权利要求10所述的编码装置,其特征在于,所述编码处理单元进一步包括:
码本提供单元,用于提供所述量化处理单元使用的码本表,所述码本表为:
码本号为0的码本包含元素0;
码本号为1的码本包含元素:±2,0,以及(1,1,1,1,1,1,1,1);
码本号为2及以上的码本包含:±4×(码本号-1),±2×(码本号-1),0。
13.如权利要求10所述的编码装置,其特征在于,所述码本号获取单元进一步包括:
提取单元,用于提取当前处理层矢量中绝对值最大的分量;
计算单元,用于根据所述分量计算获得当前处理层矢量对应码本的码本号。
14.如权利要求11所述的编码装置,其特征在于,所述量化误差获取单元进一步包括:
第一量化单元,用于采用所述对应的码本对大于零的所述当前处理层矢量的各分量进行第一量化获得第一量化结果;
第二量化单元,用于采用所述对应的码本对小于零的所述当前处理层矢量的各分量进行第二量化获得第二量化结果;
差值计算单元,用于根据所述当前处理层矢量的各分量及其所述第一量化结果和第二量化结果的差值,获得对所述当前处理层矢量进行量化的量化误差。
15.如权利要求10所述的编码装置,其特征在于,所述差分编码单元进一步包括:
差分码本号确定单元,用于根据当前处理层矢量的当前层码本号以及下一处理层矢量对应码本的码本号,获得当前处理层矢量对应码本的差分码本号; 
差分码本号编码单元,用于对所获得的差分码本号进行编码。
码本内索引确定单元,用于获得当前处理层矢量的码本内索引,其中码本内索引包括最高层编码索引标识位、奇偶标识位以及索引号信息。
16.一种解码装置,其特征在于,包括:
获取单元,用于获得语音数据帧矢量的分层编码码流;
解析单元,用于从所述分层编码码流中解析出每一编码层的差分码本号以及码本内索引信息;
解码处理单元,用于根据所述每一编码层的差分码本号解码得到所述编码层的码本号;并根据解码得到的所述码本号以及码本内索引信息,从相应的码本中获得所述编码层的RE8格点矢量信号;
叠加单元,用于依序对每一编码层的RE8格点矢量信号进行组合,获得解码后的语音数据帧;
其中,所述解码处理单元包括:
填充单元,用于在解码得到的所述码本号为0时,在最终合成信号中该编码层的矢量对应的部分填充舒适噪声。
17.如权利要求16所述的解码装置,其特征在于,所述码本内索引信息包括:记录以初始矢量作为最高处理层矢量的最高处理层编码索引标识位、记录所述初始矢量的8个分量全为奇数/偶数的奇偶标识位、以及索引号。
18.如权利要求16或者17所述的解码装置,其特征在于,所述解码处理单元进一步包括:
恢复处理单元,根据所述码本内索引信息中的奇偶标识位,选择进行将所述RE8格点矢量信号的各分量恢复成全奇数。 
CN2008101984163A 2008-09-08 2008-09-08 编码方法、解码方法及其装置 Expired - Fee Related CN101673547B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101984163A CN101673547B (zh) 2008-09-08 2008-09-08 编码方法、解码方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101984163A CN101673547B (zh) 2008-09-08 2008-09-08 编码方法、解码方法及其装置

Publications (2)

Publication Number Publication Date
CN101673547A CN101673547A (zh) 2010-03-17
CN101673547B true CN101673547B (zh) 2011-11-30

Family

ID=42020736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101984163A Expired - Fee Related CN101673547B (zh) 2008-09-08 2008-09-08 编码方法、解码方法及其装置

Country Status (1)

Country Link
CN (1) CN101673547B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2464649C1 (ru) * 2011-06-01 2012-10-20 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ обработки звукового сигнала

Also Published As

Publication number Publication date
CN101673547A (zh) 2010-03-17

Similar Documents

Publication Publication Date Title
CN101779377B (zh) 编码源信号/解码数据分组序列的设备和方法
KR100561869B1 (ko) 무손실 오디오 부호화/복호화 방법 및 장치
CN1659785B (zh) 信号多速率点阵矢量量化的方法和系统
CN101430881B (zh) 一种编码、解码、编解码方法、编解码系统以及相关装置
CA2610721A1 (en) Method and apparatus for adaptive tranforms for compressing data streams
CN104837026A (zh) 用于对视频进行解码的方法
EP2441049A2 (en) Method for encoding/decoding a 3d mesh model that comprises one or more components
US10049683B2 (en) Audio encoder and decoder
CN102201238B (zh) 用于编码和解码激励模式的方法和装置
CN101981618B (zh) 复杂度减少的矢量编制索引和去索引
CN100583649C (zh) 矢量编/解码方法、装置及流媒体播放器
CN103280221A (zh) 一种基于基追踪的音频无损压缩编码、解码方法及系统
US9991905B2 (en) Encoding method, decoding method, encoder and decoder
CN104067338A (zh) 改进的分层编码
WO2007052942A1 (en) Method and apparatus for signal processing and encoding and decoding method, and apparatus therefor
CN101673547B (zh) 编码方法、解码方法及其装置
CN102572426A (zh) 一种数据处理的方法和装置
CN102623012A (zh) 矢量联合编解码方法及编解码器
CN101266796A (zh) 一种量化编解码方法及装置
Blanes et al. Clustered reversible-KLT for progressive lossy-to-lossless 3d image coding
CN102959871A (zh) 编码方法、解码方法、编码装置、解码装置、程序及记录介质
CN102959623A (zh) 编码方法、解码方法、编码装置、解码装置、程序及记录介质
CN101308657B (zh) 一种基于先进音频编码器的码流合成方法
CN101771416B (zh) 位平面编码和解码方法、通信系统及相关设备
EP2428786A1 (en) Method for generating lattice vector quantization codebook and apparatus thereof

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111130

Termination date: 20190908

CF01 Termination of patent right due to non-payment of annual fee