语音编码装置和语音编码方法

文档序号:2831797阅读:262来源:国知局
专利名称:语音编码装置和语音编码方法
技术领域
本发明涉及语音编码装置和语音编码方法,特别涉及进行固定码本搜索的语音编
码装置和语音编码方法。
背景技术
在移动通信中,为了有效地利用传输频带,必须对语音和图像的数字信息进行压 縮编码。其中,对于广泛应用在手机中的语音编解码器(编码/解码)技术的期待很大,针 对压縮率高的以往的高效率编码,音质方面的要求进一步增强。 近年来,在ITU-T (International Telecommunication UnionTelecomm皿ication Standardization Sector,国际电信联盟电信标准化部门)、MPEG(Moving Picture Expert Group,运动图像专家组)等组织探讨具有多层结构的可扩展编解码器的标准化,谋求更高 效且高品质的语音编解码器。 语音编码技术通过将语音的发声结构模型化并巧妙应用了矢量量化的基本方式 "CELP" (Code Excited Linear Prediction,码激励线性预测)使性能大幅提高,并且通过 利用像非专利文献l中记载的代数码本(AlgebraicCodebook)那样的少数脉冲的固定激 励的技术,使性能进一步提高。ITU-T标准G. 729和ETSI (European Telecommunications Standards Institute,欧洲电信标准协会)标准AMR (Adaptive Multi-Rate,自适应多速 率)是使用了代数码本的CELP的代表性编解码器,其在世界范围内被广泛使用。
在使用代数码本进行语音编码的情况下,优选考虑构成代数码本的每条脉冲的相 互影响,并搜索全部的脉冲的组合(以下称为整体搜索)。但是,如果脉冲数增多,那么搜索 所需的计算量会呈指数式增加。对此,在非专利文献2中公开了分割搜索、剪枝搜索、维特 比搜索等,作为可大致维持整体搜索时的性能,同时可大幅减少计算量的代数码本的搜索 方法。 其中,分割搜索是最简单且计算量的削减效果很大的方法。所谓分割搜索是指将 一个闭环搜索分割成多个更小的闭环,使其成为多个闭环搜索的开环搜索的方法。在分割 搜索中,可对应于分割数而大幅降低计算量。分割搜索也被用在国际标准方式中,在3G手 机的标准编解码器即ETSI标准AMR的代数码本的搜索中,将四条脉冲分成两个子集进行分 割搜索。 例如,考虑存在四条具有八个位置候选的脉冲的情况,如果由一个闭环对全部的 四条脉冲进行搜索,那么必须评估的脉冲的组合为8的4次方即4096个。与之相对,ETSI 标准AMR将四条脉冲两条两条地分割为两个子集,并以闭环对它们分别进行搜索。因此,在 ETSI标准AMR中,必须评估的脉冲的组合为8的2次方的2倍即128个,其计算量为整体搜 索时的计算量的1/32。而且,ETSI标准AMR中的各个评估因对比四条脉冲少的两条脉冲进 行,所以计算量进一步减少。非专利文献lSalami,Laflamme,Adoul,"8kbit/s ACELP Coding ofSpeech with 10ms Speech—Frame :a Candidate for CCITT Standardization,,, IEEEProc. ICASSP94,pp.II-97n非专利文献2野村等人,"CELP中的脉冲激振源的有效搜索法",日本声响学会春 季演讲论文集2-P-5, 1996年3月,pp. 311-31
发明内容
发明需要解决的问题 但是,利用代数码本的分割搜索的语音编码的性能一般低于整体搜索时的性能。
原因在于最先决定的两条脉冲的位置未必最佳。 因此,在分割搜索中,存在通过如何选择作为构成要先行搜索的子集的脉冲而改 善语音编码的性能的余地。例如,可考虑以下方法,即多次随机地选择四条脉冲中的两条 脉冲进行搜索,得到其中编码性能最佳的结果。例如,通过准备四种子集对,对四种子集对 分别进行搜索,从而可使语音编码的性能接近于整体搜索的编码性能。在此情况下,需要 128(8的2次方的2倍)的4倍即512次计算,但即便如此,其计算量仍仅为整体搜索时的 计算量的1/8。但是,在上述例子中,任意地构成子集,且对于四种子集对中的任意一个,均 不特别地存在先行进行搜索的理由。因此,针对多种情况进行搜索时实现的编码性能存在 偏差,综合而言,编码性能还不充分。 本发明的目的在于提供可对代数码本进行分割搜索且可提高编码性能的语音编
码装置和语音编码方法。 解决问题的方案 本发明的语音编码装置所采用的结构,包括计算单元,使用构成固定码本的多条
脉冲中的每一条脉冲和目标信号,计算各个脉冲候选位置的相关值,并针对每条脉冲,使用
所述相关值的最大值来计算与脉冲相关的代表值;排序单元,对针对每条脉冲而得到的所
述代表值进行排序,将与排序后的所述代表值对应的各条脉冲分组到预先设定的多个子集
中,从所述多个子集中决定要最先搜索的第一子集;以及搜索单元,使用所述第一子集来搜
索所述固定码本,得到表示编码失真最小的所述多条脉冲的位置和极性的代码。 本发明的语音编码方法包括以下步骤使用构成固定码本的多条脉冲中的每一条
脉冲和目标信号,计算各个脉冲候选位置的相关值,并针对每条脉冲,使用所述相关值的最
大值计算与脉冲相关的代表值;对针对每条脉冲而得到的所述代表值进行排序,将与排序
后的所述代表值对应的各条脉冲分组到预先设定的多个子集中,从所述多个子集中决定要 最先搜索的第一子集;以及使用所述第一子集搜索所述固定码本,生成表示编码失真最小
的所述多条脉冲的位置和极性的代码。 发明的效果 根据本发明,当在语音编码中对固定码本进行分割搜索时,由于使用例如像最大 相关值那样的、与脉冲相关的代表值决定要先搜索的子集,因此可对代数码本进行分割搜 索并可提高编码性能。


图1是表示本发明的实施方式1所涉及的CELP编码装置的结构的框图。
图2是表示本发明的实施方式1所涉及的失真最小化部的内部结构的框图。
图3是表示本发明的实施方式1所涉及的最大相关值计算部中的各脉冲的最大相 关值的计算流程的流程图。 图4是表示本发明的实施方式1所涉及的排序部中的、对于各脉冲的最大相关值 的排序处理的流程的流程图。 图5是表示本发明的实施方式1所涉及的搜索部中的固定码本的分割搜索流程的 流程图。 图6是表示本发明的实施方式1所涉及的搜索部中的固定码本的分割搜索流程的 流程图。 图7是表示本发明的实施方式2所涉及的排序部中的、对于各脉冲的最大相关值 的排序处理的流程的流程图。 图8是表示本发明的实施方式3所涉及的排序部中的、对于各脉冲的最大相关值 的排序处理的流程的流程图。 图9是表示本发明的实施方式3所涉及的排序部中的脉冲的顺序的重新排列处理 的流程的流程图。
具体实施例方式以下,参照附图详细说明本发明的实施方式。
(实施方式1) 图1是表示本发明的实施方式1所涉及的CELP编码装置100的结构的框图。这 里,例举CELP方式的编码装置作为本发明所涉及的语音编码装置进行说明。
在图1中,对于包含声道信息与激励信息的语音信号Sl 1 , CELP编码装置100通过 求取LPC参数(线性预测系数)对声道信息进行编码,并通过求取以下的索引对激励信息 进行编码,该索引用于确定使用预先存储的语音模型中的哪一个语音模型。即,通过求取以 下的索引对激励信息进行编码,该索引用于确定由自适应码本103和固定码本104生成何 种激励矢量(编码矢量)。 具体而言,CELP编码装置100的各部分进行以下的动作。 LPC分析部101对语音信号Sll实施线性预测分析,求频谱包络信息即LPC参数, 并将求出的LPC参数输出至LPC量化部102和听觉加权部111。 LPC量化部102量化从LPC分析部101输出的LPC参数,将得到的量化LPC参数输 出至LPC合成滤波器109,并向CELP编码装置100的外部输出量化LPC参数的索引。
另一方面,自适应码本103存储由LPC合成滤波器109使用的过去的驱动激励,并 根据与由下述的失真最小化部112所指示的索引对应的自适应码本延迟(lag),从所存储 的驱动激励生成相当于一个子帧的激励矢量。将该激励矢量输出至乘法器106作为自适应 码本矢量。 固定码本104预先存储着多个规定形状的激励矢量,将与由失真最小化部112指 示的索引对应的激励矢量输出至乘法器107作为固定码本矢量。这里,固定码本104是代 数激励,对使用代数码本的情况进行说明。所谓代数激励,是被许多标准编解码器采用的激 励。 此外,使用上述自适应码本103的目的在于表现出像浊音那样的周期性强的成分,另一方面,使用固定码本104的目的在于表现出像白噪声那样的周期性弱的成分。
增益码本105根据来自失真最小化部112的指示,生成用于从自适应码本103输 出的自适应码本矢量的增益(自适应码本增益)、和用于从固定码本104输出的固定码本矢 量的增益(固定码本增益),并将它们分别输出至乘法器106、 107。 乘法器106将从增益码本105输出的自适应码本增益乘以从自适应码本103输出 的自适应码本矢量,并将结果输出至加法器108。 乘法器107将从增益码本105输出的固定码本增益乘以从固定码本104输出的固 定码本矢量,并将结果输出至加法器108。 加法器108将从乘法器106输出的自适应码本矢量与从乘法器107输出的固定码
本矢量相加,将相加后的激励矢量输出至LPC合成滤波器109作为驱动激励。 LPC合成滤波器109使用滤波函数即LPC合成滤波器生成合成信号,该滤波函数是
将从LPC量化部102输出的量化LPC参数作为滤波系数的滤波函数,将由自适应码本103
和固定码本104生成的激励矢量作为驱动激励。该合成信号输出至加法器110。 加法器110从语音信号Sll中减去由LPC合成滤波器109生成的合成信号,从而
计算误差信号,并将该误差信号输出至听觉加权部111 。此外,该误差信号相当于编码失真。 听觉加权部111对于从加法器IIO输出的编码失真进行听觉加权,并将结果输出
至失真最小化部112。 失真最小化部112针对每个子帧求使从听觉加权部111输出的编码失真为最小的 自适应码本103、固定码本104和增益码本105的各索引,并将这些索引输出至CELP编码装 置100的外部作为编码信息。更详细而言,基于上述自适应码本103和固定码本104生成 合成信号,并求该信号的编码失真的一系列的处理为闭环控制(反馈控制),失真最小化部 112通过使指示各码本的索引在一个子帧内发生各种变化,对各码本进行搜索,并输出最终
得到的、使编码失真为最小的各码本的索引。 此外,针对每个子帧,向自适应码本103反馈编码失真为最小时的驱动激励。自适 应码本103通过该反馈更新所存储的驱动激励。 下面说明固定码本104的搜索方法。首先,通过搜索使以下的式(1)的编码失真
最小化的激励矢量,进行激励矢量的搜索和代码的导出。 E = |x-(pHa+qHs)卩…(1) E :编码失真,X :编码目标,p :自适应码本矢量的增益,H :听觉加权合成滤波器,a : 自适应码本矢量,q :固定码本矢量的增益,S :固定码本矢量 —般而言,自适应码本矢量与固定码本矢量是以开环(以不同的循环)搜索,因
此,通过搜索使以下的式(2)的编码失真最小化的固定码本矢量,来完成固定码本104的代
码的导出。 y = x-pHa …(2) E = | y-qHs |2 E :编码失真,X :编码目标(听觉加权语音信号),p :自适应码本矢量的最佳增益, H :听觉加权合成滤波器,a :自适应码本矢量,q :固定码本矢量的增益,S :固定码本矢量,y : 固定码本搜索的目标矢量
这里,由于在搜索出激励码之后才决定增益p、 q,因此,这里是以最佳增益推进搜 索。于是,上式(2)可写成以下的式(3)。
<formula>formula see original document page 7</formula>—-^~他

而且可知使该失真的式子最小化与使以下的式(4)的函数C最大化等效, C = ^^ ■ . ■ (4) 由此,当对像代数码本的激励那样的由少数脉冲构成的激励进行搜索时,只要预 先计算yH与HH,就能够以较小的计算量计算上述函数C。这里,矢量yH的要素相当于脉冲 单独的相关值。即,对目标y进行了时间倒序合成的yH的要素之一等于该位置的脉冲的合 成信号与目标信号之间的相关值。 图2是表示本实施方式所涉及的失真最小化部112的内部结构的框图。这里,列 举以下的情况进行说明,即,在失真最小化部112对固定码本的搜索中,将构成代数码本的 四条脉冲两条两条地分割为两个子集进行搜索。此外,各脉冲都具有八个位置候选。
在图2中,失真最小化部112包括自适应码本搜索部201、固定码本搜索部202和 增益码本搜索部203。固定码本搜索部202包括最大相关值计算部221、排序部222、预处理 部223和搜索部224。 自适应码本搜索部201使用在听觉加权部111中进行了听觉加权的编码失真,对 自适应码本103进行搜索。自适应码本搜索部201将搜索中得到的自适应码本矢量的代码 输出至自适应码本103,将作为搜索结果而得到的自适应码本矢量的代码输出至固定码本 搜索部202的最大相关值计算部221,并且向CELP编码装置100的外部输出。
固定码本搜索部202使用在听觉加权部111中进行了听觉加权的编码失真、以及 从自适应码本搜索部201输入的自适应码本矢量的代码,进行固定码本的分割搜索。固定 码本搜索部202将搜索中得到的固定码本矢量的码输出至固定码本104,将作为搜索结果 得到的固定码本矢量的代码输出至CELP编码装置100的外部,并且输出至增益码本搜索部 203。 增益码本搜索部203基于从固定码本搜索部202的搜索部224输入的固定码本矢 量的代码、在听觉加权部111中进行了听觉加权的编码失真、以及从自适应码本搜索部201 输入的自适应码本矢量的代码,对增益码本进行搜索。接着,增益码本搜索部203将搜索过 程中得到的自适应码本增益和固定码本增益输出至增益码本105,并将作为搜索结果得到 的自适应码本增益和固定码本增益输出至CELP编码装置100的外部。
最大相关值计算部221使用从自适应码本搜索部201输入的自适应码本矢量的代 码求自适应码本矢量,并计算式(2)所示的目标矢量y。而且,最大相关值计算部221使用 听觉加权部111中的合成滤波器的系数H,计算各候选位置的各脉冲单独的相关值yH并输 出至预处理部223。而且,最大相关值计算部221使用各候选位置的各脉冲单独的相关值 yH求各脉冲的最大相关值,并输出至排序部222。此外,关于在最大相关值计算部221中计算最大相关值的细节,在后面论述。 排序部222按照从大到小的顺序排列从最大相关值计算部221输入的各脉冲的最 大相关值(以下称为排序处理)。而且,排序部222基于排序结果将四条脉冲两条两条地分 割为两个子集,并将分割结果输出至搜索部224。此外,关于排序部222中的排序处理的细 节,在后面论述。 预处理部223使用听觉加权部111中的合成滤波器的系数H计算矩阵HH。而且, 预处理部223根据从最大相关值计算部221输入的矢量yH的要素的极性(+-)来决定脉冲 的极性pol,并将其输出至搜索部224。具体而言,预处理部223预先使存在于各位置的脉 冲的极性与yH的位置的值的极性相匹配,并将yH的值的极性存储到其它的排列中。预处 理部223预先将各位置的极性存储到其它的排列中后,对所有yH的值取绝对值而变换成正 值。而且,预处理部223预先结合所存储的各位置的极性,对HH的值也乘以极性从而进行 变换。求出的yH和HH输出至搜索部224。 搜索部224使用从排序部222输入的分割结果、在听觉加权部111中进行了听觉 加权的编码失真、以及从预处理部223输入的yH和HH,进行固定码本的分割搜索。搜索部 224将搜索中得到的固定码本矢量的代码输出至固定码本104,将作为搜索结果得到的固 定码本矢量的代码输出至CELP编码装置100的外部,并且输出至增益码本搜索部203。此 外,关于在搜索部224中的固定码本分割搜索的细节,在后面论述。 接下来,详细说明在最大相关值计算部221中计算各脉冲的最大相关值的处理。
图3是表示最大相关值计算部221中的各脉冲的最大相关值的计算流程的流程 图。这里,例举以下的处理进行说明,即,在最大相关值计算部221中求使脉冲O的相关值 (yH)的值最大的两个候选位置,并据此计算脉冲O的最大相关值。 首先,最大相关值计算部221确保将预定的脉冲0的候选位置的排列ici0[8]、以
及将用于搜索的相关值yH变换成正值而得到的排列yH[32] (ST1010)。 接下来,最大相关值计算部221进行最大值max00、准最大值(第二大的值)max01
和计数器i的初始化(ST1020),并转移到包括ST1030 ST1080的循环。 该循环中,最大相关值计算部221在计数器i的值为"8"以上时(ST1040 :"是"),
判断与各候选位置对应的所有的循环处理已结束,并结束处理。另一方面,当计数器i的值 小于"8"时(ST1040 :"否"),最大相关值计算部221判断所有的循环处理尚未结束,并使处 理转移到ST1050。 接下来,当计数器i所表示的位置的相关值yH[iciO[i]]大于最大值max00时 (ST1050 :"是"),最大相关值计算部221将最大值max00保存为准最大值max01,将计数 器i所表示的位置的相关值yH[iciO[i]]代入最大值maxOO之后(ST1060),使处理返回 ST1030。当计数器i所表示的位置的相关值yH[iciO[i]]为最大值max00以下时(ST1050 : "否"),最大相关值计算部221使处理转移到ST1070。 接下来,当计数器i所表示的位置的相关值yH[iciO[i]]大于准最大值max01时 (ST1070 :"是"),最大相关值计算部221将计数器i所表示的位置的相关值yH[iciO[i]]代 入准最大值max01,并使处理返回ST1030(ST1080)。另一方面,当计数器i所表示的位置的 相关值yH[ici0[i]]为准最大值max01以下时(ST1070 :"否"),最大相关值计算部221使 处理返回ST1030。
接下来,在ST1030中,最大相关值计算部221使计数器i增加1之后,使处理返回 ST1040。 这样,最大相关值计算部221求各候选位置的脉冲0单独的相关值的最大值max00 和准最大值maxOl。而且,最大相关值计算部221使用图3所示的流程,两个两个地求使脉 冲1、2、3单独的相关值(yH)的值为最大的候选位置。即,最大相关值计算部221求脉冲1、 2、 3各自的单独的相关值的最大值和准最大值max 10、 max 11 、 max20、 max21 、 max30、 max31 。
接下来,最大相关值计算部221使用脉冲0、1、2、3各自的单独的相关值的最大值 和准最大值并根据下述式(5),求各脉冲的最大相关值S
、S[1]、S[2]、S[3]。如式(5)所 示,最大相关值计算部221通过以规定的比例将准最大值与各脉冲单独的相关值的最大值 相加,得到与各脉冲对应的稳定的最大相关值。
S
= maxOO+max01X0.05
S[l] = maxlO+maxllX0. 05
S [2] = max20+max21X0.05
S [3] = max30+max31 X 0. 05. . . (5) 接下来,详细地说明排序部222中的、对于各脉冲的最大相关值的排序处理。
图4是表示排序部222中的、对于各脉冲的最大相关值的排序处理的流程的流程 图。 首先,排序部222从最大相关值计算部221输入各脉冲的最大相关值S[j] (j = 0, 1,2,3),将表示已排序至哪一位的计数器i重置为"O" (ST2010)。 接下来,排序部222在计数器i的值为"4"以上时(ST2030 :"是"),判断所有的排 序已结束,使处理转移到ST2100。另一方面,当计数器i的值小于4时(ST2030 :"否"),排 序部222将"O"代入脉冲序号N[i],将计数用于搜索i位的最大相关值S[N[i]]的循环的 次数的计数器j重置为"0",并将存储最大值的变量max重置为"0" (ST2040)。
接下来,当计数器j小于4时(ST2060 :"否"),排序部222使处理转移到ST2070。
接下来,当最大相关值S[j]大于变量max时(ST2070 :"是"),排序部222将最大 相关值S[j]代入变量max,将计数器j的值代入与i位的最大相关值S[N[i]]对应的脉冲 序号N[i](ST2080),并使处理转移到ST2050。另一方面,当最大相关值S[j]为变量max以 下时(ST2070 :"否"),排序部222使处理转移到ST2050。接下来,在ST2050中,排序部222 使计数器j增加1,并使处理返回ST2060。 另一方面,在ST2060中,当计数器j为4以上时(ST2060 :"是"),排序部222判断 用以搜索i位的最大相关值S[N[i]]的、包括ST2050 ST2080的循环已结束,并将"-l"代 入i位的最大相关值S[N[i]] (ST2090)。这样,从用于搜索i+l位的最大相关值S[N[i+l]] 的循环处理的对象中排除i位的最大相关值S[N[i]]。接下来,排序部222在ST2020中使 计数器i增加l,并使处理返回ST2030。 这样,排序部222按照从大到小的顺序排列各脉冲的最大相关值S
、 S[l]、 S[2]、S[3],并得到表示排序结果的N[i]。以下,例举排序部222得到N[i] = {2,0,3,1}的 情况进行说明。即,假设与最大的最大相关值S[N[O]]对应的脉冲的序号N[O]的值为2,后 续值依次为0、3、1。 接下来,在ST2100中,排序部222将与经排序的最大相关值对应的四条脉冲的序
9号N[i]分组到预先设定的两个子集中的分割模式,从而决定脉冲的搜索顺序,并将所得到 的搜索顺序输出至搜索部224。即,在搜索部224对固定码本进行分割搜索中,由排序部222 决定先搜索的两个脉冲的序号和后搜索的两个脉冲的序号。排序部222预先设定下述式 (6)所示的三个搜索顺序的候选。
{第一子集} {第二子集} 歸],N[1B 緣],N[3B 歸],N[2B {N[3],N[1]} 歸],N[3B(N[1],N[2B…(6) 在分割搜索中,存在多种要先搜索的子集(第一子集)和后搜索的子集(第二子 集)的分割模式。其中,如式(6)所示,当采用将最大相关值为最大的脉冲N[O]包含在要 先搜索的子集(第一子集)中的分割模式时,可得到良好的编码性能。
在式(6)的各搜索顺序候选中,按照要先搜索的子集(第一子集)、接着是后搜索 的子集(第二子集)这一顺序进行搜索。 若以通过排序得到的具体值来表示式(6)中的N[i],则得到下述的式(7),按照第 一候选、第二候选、第三候选的顺序进行搜索。



第一候选 第二候选 第三候选



} {第二子集} {3,1} {1,0}
{0,3}... (7)
序可归纳成下述的式(8)所示的M[3] [4]
这里,M[3]
第一候选 {2,0} 第二候选 {2,3} 第三候选 {2,1} 式(7)所示的三个〗 [4]表示对四条脉冲进行三次分割搜索时的脉冲的搜索顺序。
M[3][4] = {{2,0,3,1}, {2,3,1,0}, {2, 1, 0, 3}} (8)
S卩,排序部222将M[3] [4]作为搜索顺序而输出至搜索部224。
接下来,详细地说明搜索部224中的固定码本的分割搜索。 图5和图6是表示搜索部224中的固定码本的分割搜索的流程的流程图。在此,
将代数码本的条件表示于下。 (1)比牛寺数16比牛寺
(2) 处理单位(子帧长度)32
(3) 脉冲条数四条 可根据该条件设计以下的代数码本。 ici0[8] = {0,4,8,12,16,20,24,28} icil[8] = {1,5,9,13,17,21,25,29} ici2[8] = {2,6,10,14,18,22,26,30} ici3[8] = {3,7,11,15,19,23,27,31}
首先,搜索部224在ST3010中,准备表示固定码本的四条脉冲各自的候选位置的 排列ici0 [8] 、 ici 1 [8] 、 ici2 [8] 、 ici3 [8],制成将yH变换成正值而得到的排列yH[32]、调 整HH的极性而得到的排列HH[32] [32]、以及存储着将yH变换成正值之前的yH的极性值 (-l,+l)的矢量po1[32]。接下来,在ST3020中,将用于后续的搜索循环的变量初始化。
搜索部224在ST3030中将j与数值"3"作比较,当j为3以上时,为了结束搜索




10进入ST3250的处理,当j小于3时前进至ST3050的初始化。在ST3040中将j增加1。这 样,搜索部224与从排序部222输入的搜索顺序M[3] [4]所表示的三个搜索顺序对应地进 行三次由两个子集构成的分割搜索。 ST3050 ST3130表示第一子集的搜索循环处理。具体而言,在ST3050中进行第一 子集的搜索循环的初始化。接下来,搜索部224在判定ST3060中将i0与数值"8"作比较, 当i0为8以上时进入下一个搜索循环的初始化ST3140,当i0小于8时进入处理ST3070。 在ST3070中计算M[j]
(j = 0, 1,2)所表示的脉冲的相关值sy0和激励功率sh0。而且, 将计数器il初始化成0。此外,在ST3080中,将i0增加1。这样,搜索部224对应于M[j]
(j = 0, 1,2)所表示的脉冲的八个候选位置,进行八次循环处理。同样地,在ST3090 ST3130中,搜索部224与M[j] [1] (j = 0, 1,2)所表示的脉冲的八个候选位置对应地进行八 次循环处理。 首先,在判定ST3090中将il与数值"8"作比较,当il为8以上时进入增量处理 ST3080,当il小于8时进入处理ST3100。在ST3100中,搜索部224除了使用从预处理部 223输入的yH和HH之外,还使用在ST3070中计算出的相关值sy0和激励功率sh0来计算 M[j] [1] (j = 0, 1,2)所表示的脉冲的相关值syl和激励功率shl。 在ST3120中,搜索部224使用作为第一子集的处理对象的各脉冲的相关值与激励 功率,并依据式(4)计算和比较函数C的值,将表示更大的函数值时的iO、 il盖写存储于 iiO、iil,并盖写存储函数C的分子项与分母项(ST3130)。此外,在ST3120中,通过分母项 与分子项的叉乘运算(crossmultiply)进行计算和比较,以避免计算量大的除法运算。在 上述判定中,小于规定值,或大于规定值而进行处理ST3130之后进入增量处理ST3110。在 增量处理ST3110中,将il增加1。 ST3140 ST3220表示第二子集的搜索循环处理。此外,第二子集的搜索循环处理 具有与ST3050 ST3130所示的第一子集的搜索循环处理基本相同的步骤。这里,仅说明与 第一子集的搜索循环处理的不同点。首先,在ST3140中,使用第一子集的搜索循环处理的 结果进行第二子集的搜索循环处理的初始化。而且,第二子集的搜索循环处理的处理对象 是M[j][2](j =0,1,2)和M[j][3](j =0,1,2)各自所表示的脉冲。此外,在处理ST3160 中,使用在第一子集的搜索循环中经搜索并存储的计数器信息iiO、iil,计算脉冲2的相关 值sy2和激励功率sh2。同样地,在处理ST3190中,使用在第一子集的搜索循环中搜索并存 储的计数器信息ii0、 iil,计算脉冲3的相关值sy3和激励功率sh3。
接下来,在ST3230和ST3240中,搜索部224求在整个分割搜索中,使函数C的值 最大的脉冲的位置的组合。 接下来,在ST3250中,搜索部224将ii0、 iil、 ii2、 ii3作为各脉冲的位置信息。
而且,排列pol的值为极性(士l),搜索部224依据下述的式(9)将极性p0、pl、p2、p3变换
成0或1,并以1比特进行编码。p0 = (pol[ichi0[ii0]]+l)/2pl = (pol[ichil[iil]]+l)/2p2 = (pol[ichi2[ii2]]+l)/2p3 = (pol[ichi3[ii3]]+l)/2. (9) 这里,作为针对位置信息和极性的解码方法,通过ichi0 [ii0] 、 ichi 1 [ii 1]、ichi2[ii2]、 ichi3[ii3]解码脉冲的位置,使用解码所得的位置与极性来解码固定码本矢 如图5和图6所示,由于搜索部224进行由两个子集构成的分割搜索,因此与整体搜索的情况相比,可大幅减少计算量。具体而言,在整体搜索中,进行8的4次方即4096次循环处理,而根据图5和图6所示的方法,在两个子集各自的搜索中,各进行8的2次方即64次循环处理。而且,由于与M[3] [4]对应地进行三次由两个子集构成的分割搜索,因此,进行64X2个子集X3倍即共计384次循环处理。这是整体搜索的约1/10的计算量。
这样,根据本实施方式,由于对固定码本进行分割搜索,因此与对固定码本进行整体搜索的情况相比,可减少计算量。 进而,根据本实施方式,在分割搜索中,将构成固定码本的脉冲分割成先搜索的子集和后搜索的子集时,使用最大相关值为最大的脉冲构成先搜索的子集,因此,可抑制由于分割搜索引起的编码失真。即,即使在进行整体搜索的情况下,最大相关值高的位置的脉冲被采用的可能性很大,在分割搜索中,通过先搜索能够抑制编码失真。 此外,在本实施方式中说明了脉冲数为4、分割数为2的情况,但本发明并不依赖于脉冲数或分割数,只要基于各脉冲的最大相关值的排序结果决定要搜索的脉冲的顺序,就可得到与本实施方式相同的效果。 而且,在本实施方式中例举了以下的情况进行说明,S卩,最大相关值计算部221以
规定的比例将准最大值与各脉冲单独的相关值的最大值相加而计算最大相关值。但是,本
发明并不限定于此,以规定的比例加上各脉冲的第三大的单独的相关值而计算最大相关
值;或者直接将各脉冲单独的相关值的最大值作为最大相关值,也都是可以的。 而且,在本实施方式中,例举了不预先选择各脉冲的候选位置的情况进行说明,但
本发明并不限定于此,也可预先选择各脉冲的候选位置之后进行排序。这样,可提高排序的效率。 此外,虽在本实施方式中,例举了将代数码本用作固定码本的情况进行说明,但本发明并不限定于此,也可将多脉冲码本用作固定码本。即,可将多脉冲的位置信息和极性信息应用于本实施方式。 而且,虽在本实施方式中,例举了将CELP编码方式用作语音编码方法的情况进行说明,但本发明并不限定于此,语音编码方法只要是使用存储有已知条数的激励矢量的码本的编码方式即可。这是因为本发明所涉及的分割搜索仅对固定码本的搜索进行,与是否存在自适应码本,或频谱包络的分析方法是否为LPC、 FFT或滤波器库无关。
(实施方式2) 本发明的实施方式2与实施方式l基本相同,仅排序部222中的排序处理(参照
图4)与实施方式l不同。以下,对本实施方式所涉及的排序部标注"422"这一符号以代替
图2中的排序部222,并仅对排序部422(未图示)中的排序处理进行说明。 图7是表示本实施方式所涉及的排序部422中的、对于各脉冲的最大相关值的排
序处理的流程的流程图。此外,图7所示的流程具有与图4所示的流程基本相同的步骤,对
同一步骤标注同一符号,并省略其说明。 在ST4040中,排序部422将"0"代入脉冲序号N[i],将计数用于搜索i位的最大相关值S[N[i]]的循环的次数的计数器j重置为"O",将存储最大值的变量max重置为"O",将"O"代入用以保存i位的最大相关值S[N[i]]的变量L[i]。 在ST4090中,排序部422将i位的最大相关值S[N[i]]代入L[i],将"-l"代入
S[N[i]]。这样,将i位的最大相关值S[N[i]]保存于L[i],而且,从用于搜索i+l位的最大
相关值S[N[i+l]]的循环处理的对象中排除i位的最大相关值S[N[i]]。 通过从ST2010到ST4090的处理,排序部422按照从大到小的顺序排列各脉冲的
最大相关值S
、 S [1] 、 S [2] 、 S [3],从而得到表示排序结果的N[i]和L[i]。在ST4100中,排序部422将与经排序的最大相关值对应的四条脉冲序号N[i]分
组到预先设定的两个子集中的分割模式,从而决定脉冲的搜索顺序,并将得到的搜索顺序
输出至搜索部224。 S卩,排序部422在搜索部224对固定码本进行分割搜索中,决定先搜索
的两个脉冲的序号和后搜索的两个脉冲的序号。排序部422预先设定三个搜索顺序的候
选。这里,与实施方式l的排序部222的不同点在于,在第三候选中,使用存储有最大相关
值的L[i]决定搜索顺序。 具体而言,排序部422首先设定使用了排序结果N[i]的、下述式(10)所示的第一
候选和第二候选的这两个搜索顺序候选。即,如式(10)所示,排序部422在第一候选和第
二候选中,使要先搜索的子集中包含有最大相关值为最大的脉冲,从而提高编码性能。 {第一子集} {第二子集} 第一候选{N
,N[1]} {N[2],N[3]} 第二候选歸],N[2B 歸],N[1B…(10) 接下来,排序部422按照以下的方式使用排序结果N[i]和L[i]来设定第三个搜索顺序候选。即,排序部422判断L[2]+L[3]是否为(L
+L[1]) X0. 91以上,当L[2]+L[3]为(L
+L[1])X0.91以上时,适用緣],N[3B (N
,N[1]H乍为第三候选。当L[2]+L[3]小于(L
+L[1])X0.91时,排序部422接着判断L[1]+L[3]是否为(L
+L[2]) XO. 94以上。当L[1]+L[3]为(L
+L[2])X0. 94以上时,排序部422适用{N[1],N[3]}緣],N则作为第三候选。当L[1]+L[3]小于(L
+L[2])X0.94时,排序部422接着判断L
+L[3]是否为L[1]+L[2]以上。排序部422在L
+L[3]为L[1]+L[2]以上时,生成{N
,N[3]}(N[l], N[2]}作为第三候选,在L
+L[3]小于L[1]+L[2]时,适用{N[l], N[2]} {N[3],N
}作为第三候选。 排序部422在应用第三候选的搜索顺序时,为了减小随后的搜索部224的搜索的冗余度,在各脉冲的最大相关值之差微小的情况下,并不一定包含最大相关值为最大的脉冲来构成要先搜索的子集。即,排序部442基于排序结果N[i]构成多个各脉冲的最大相关值的组合,并基于将系数乘以所构成的多个组合之后进行比较所得的结果,将四个脉冲分组到两个子集中。 例如,当得到N[i] = {2,0,3,1}、 L[i] = {9. 5,9.0,8. 5,8.0}作为排序结果时,L[2]+L[3]小于(L
+L[1]) XO. 91, L[l]+L[3]为(L
+L[2]) XO. 94以上。因此,排序部422适用{N[1],N[3]}緣],N则作为第三候选。 当以具体值表示N[i]时,第一候选、第二候选、第三候选由下述的式(11)所表示。
{第一子集} {第二子集} 第一候选 {2,0} {3,1}
第二候选 {2,3} {1,0}
第三候选 {0,1} {3,2}...(11) 可将式(11)所示的三个搜索顺序候选归纳成下述的式(12)所示的M[3] [4]。M[3][4] = {{2,0,3,1}, {2,3,1,0}, {0, 1, 3, 2}} . (12) 排序部422将M[3] [4]输出至搜索部224作为搜索顺序候选。 这样,根据本实施方式,当在分割搜索中,将构成固定码本的脉冲分割成先搜索的
子集和后搜索的子集时,不仅基于各脉冲的最大相关值的位次,而且还基于各脉冲的最大
相关值的值来构成先搜索的子集,该子集并不一定包含最大相关值最大的脉冲。这样,可减
少分割搜索中的搜索的冗余度。 此外,在本实施方式中,例举了在适用第三个搜索顺序候选时使用0. 91、0. 94等系数的情况进行说明,但本发明并不限定于此,也可使用通过统计而预先决定的其它系数。
此外,虽在本实施方式中例举了以下的情况进行说明,S卩,在适用第三个搜索顺序候选时,除了 N[i]之外还使用L[i],但本发明并不限定于此,即使在适用第一个搜索顺序候选或第两个搜索顺序候选时,也可同时使用N[i]和L[i]。
(实施方式3) 本发明的实施方式3与实施方式1基本相同,与实施方式1的不同点仅在于,进一步根据规定的顺序重新排列分组到各子集中的脉冲。即,本实施方式与实施方式1的不同点仅在于图4所示的排序处理的一部分。以下,对本实施方式所涉及的排序部标注"522"这一符号以代替图2中的排序部222,并仅对排序部522(未图示)中的排序处理进行说明。
图8是表示在本实施方式所涉及的排序部522中,对于各脉冲的最大相关值进行排序处理的流程的流程图。此外,图8所示的流程具有与图4所示的流程基本相同的步骤,对同一步骤标注同一符号,并省略其说明。 在图8所示的ST5100中,排序部522进行的处理与实施方式1所涉及的排序部222在图4所示的ST2100中进行的处理基本相同,但不同点在于并不立即将得到的M[3] [4]输出至搜索部224,而是在进行以下的ST5110的处理之后,再输出至搜索部224。
在ST5110中,排序部522两个两个地归纳M[3][4]所含的要素以构成M'[6] [2],并进行调整,将M' [6] [2]所含的每两个脉冲的顺序编排成{0, 1} 、 {1, 2} 、 {2, 3} 、 {3, 0} 、 {0,2}、 {1,3}中的任一个。 图9是详细表示图8所示的ST5110中的排序部522的处理流程的流程图。
首先,在ST6010中,排序部522将变量"i"初始化为"0"。
接下来,在ST6020中,排序部522判定"i"是否等于"6"。 当在ST6020中判定出"i"等于"6"时(ST6020 :"是"),排序部522结束图9所示的处理(即ST5110的处理)。 另一方面,当在ST6020中判定出"i"不等于"6"时(ST6020 :"否"),排序部522使处理转移到ST6030。 在ST6030中,排序部522判定是否M' [i] [1]等于"2",且M' [i] [2]等于"1"。
当在ST6030中判定出M, [i] [1] 二"2"、且M' [i] [2] ="1"时(ST6030 :"是"),排序部522在ST6040中将M' [i] [1]设定成"1 ",并将M' [i] [2]设定成"2"之后,使处理转移到ST6150。 另一方面,当在ST6030中判定出M' [i] [1] 二"2"、且M' [i] [2] ="1"这两个条件并未同时成立时(ST6030 :"否"),排序部522使处理转移到ST6050。
在ST6050中,排序部522判定是否M' [i] [1]等于"3",且M' [i] [2]等于"2"。
当在ST6050中判定出M' [i] [1] 二"3"、且M' [i] [2] ="2"时(ST6050 :"是"),排序部522在ST6060中将M' [i] [1]设定为"2",并将M' [i] [2]设定为"3"之后,使处理转移到ST6150。 另一方面,当在ST6050中判定出M' [i] [1] 二"3"、且M' [i] [2] ="2"这两个条件并未同时成立时(ST6050 :"否"),排序部522使处理转移到ST6070。
在ST6070中,排序部522判定是否M' [i] [1]等于"4",且M' [i] [2]等于"3"。
当在ST6070中判定出M' [i] [1] 二"4"、且M, [i] [2] ="3"时(ST6070 :"是"),排序部522在ST6080中将M' [i] [1]设定为"3",并将M' [i] [2]设定为"4"之后,使处理转移到ST6150。 另一方面,当在ST6070中判定出M' [i] [1] 二"4"、且M' [i] [2] ="3"这两个条件并未同时成立时(ST6070 :"否"),排序部522使处理转移到ST6090。
在ST6090中,排序部522判定是否M' [i] [1]等于"1",且M' [i] [2]等于"4"。
当在ST6090中判定出M' [i] [1] 二"1"、且M' [i] [2] ="4"时(ST6090 :"是"),排序部522在ST6100中将M' [i] [1]设定为"4",并将M' [i] [2]设定为"1"之后,使处理转移到ST6150。 另一方面,当在ST6090中判定出M' [i] [1] 二"1"、且M' [i] [2] ="4"这两个条件并未同时成立时(ST6090 :"否"),排序部522使处理转移到ST6110。
在ST6110中,排序部522判定是否M' [i] [1]等于"3",且M' [i] [2]等于"l"。
当在ST6110中判定出M' [i][l] 二"3"、且M' [i] [2] = " 1"时(ST6110 :"是"),排序部522在ST6120中将M' [i] [1]设定为"1 ",并将M' [i] [2]设定为"3"之后,使处理转移到ST6150。 另一方面,当在ST6110中判定出M' [i][l] 二"3"、且M' [i] [2] ="1"这两个条件并未同时成立时(ST6110 :"否"),排序部522使处理转移到ST6130。
在ST6130中,排序部522判定是否M' [i] [1]等于"4",且M' [i] [2]等于"2"。
当在ST6130中判定出M' [i] [1] 二"4"、且M' [i] [2] ="2"时(ST6130 :"是"),排序部522在ST6140中将M' [i] [1]设定为"2",并将M' [i] [2]设定为"4"之后,使处理转移到ST6150。 另一方面,当在ST6130中判定出M' [i] [1] 二"4"、且M' [i] [2] ="2"这两个条件并未同时成立时(ST6130 :"否"),排序部522使处理转移到ST6150。
在ST6150中,排序部522将"i"增加1之后,使处理转移到ST6020。
例如排序部522在使用M[3] [4] = {{2,0,3,1}, {2,3,1,0}, {2,1,0,3}}构成M' [6] [2] = {{2,0}, {3,1}, {2,3}, {1,0}, {2, 1} , {0,3}}的情况下,进一步根据图9所示的流程,调整M' [6][2]所含的每两个脉冲的顺序之后,得到M' [6][2] = {{0,2}, {1,3},{2,3}, {0,1}, {1,2}, {3,0}}。排序部522使用通过调整而得到的M' [6] [2] = {{0,2},{1,3}, {2,3}, {0,1}, {1,2}, {3,0}}再次构成M[3] [4] = {{0,2,1,3}, {2,3,0,1}, {1,2,3,OH,并将其输出至搜索部224。 以下,说明图9所示的排序部522中的调整处理的效果。
15
通过搜索使上述的式(4)的函数C最大的脉冲位置和极性,来搜索构成固定码本的脉冲。因此,在搜索时,需要与式(4)的分母项的"HH"的矩阵对应的存储器(RAM:RandomAccess Memory)。例如在激励矢量的长度为32的情况下,需要与包含32X 32的对角矢量的一半的矩阵对应的存储器。即需要(32X32/2+16)字节=528字节的存储器。但是,为了在计算时减少存取指定索引的计算量,需要与全矩阵(32X32字节=1024字节)对应的存储器,因此需要更大的存储器。 相对于此,如果像本发明这样,将构成固定码本的脉冲分割成先搜索的子集和后搜索的子集(对),并针对每个对搜索脉冲,则有每对的条目(entry)数的2次方即8X8的矩阵即可,因此,可节约存储器至8X8X6字节=384字节。但是,由于该矩阵并非对称矩阵,所以一旦脉冲序号的顺序颠倒,那么矩阵就会变得不同,需要另外准备相反的矩阵(导致存储器翻倍),或改变搜索时的存取方法(导致计算量增加),或针对每个子集对的组合准备程序(导致存储器与计算量增加)。因此,在本实施方式中,在对每对进行搜索时,重新排列脉冲的顺序,将所有的搜索限定为六对。这样,能够将脉冲搜索所需的存储器限定为上述384字节,同时能够减少计算量。 这样,根据本实施方式,当将构成固定码本的脉冲分组为对时,按照规定的顺序重新排列经分组的脉冲,并针对每对搜索脉冲,因此,能够减小固定码本的搜索所需的存储器和计算量。 此外,在本实施方式中,例举了将搜索脉冲的对限定为{0,1}、 {1,2}、 {2,3}、 {3,0}、 {0,2}、 {1,3}的六种的情况进行说明,但本发明并不限定于此,也可颠倒上述各对所含的脉冲的顺序,这样,脉冲搜索的平均性能不会改变。
以上,对本发明的各实施方式进行了说明。 此外,上述各实施方式所涉及的固定码本有时也称为噪声码本、概率码本(stochastic codebook)或随机数码本(random codebook)。 而且,自适应码本有时也称为自适应激励码本,固定码本有时也称为固定激励码本。 此外,LSP有时也称为LSF(Line Spectral Frequency,线谱频率),且也可将LSP换成LSF。而且,有时也将ISP(Immittance Spectrum Pairs,导纳频谱对系)作为频谱参数来代替LSP而进行编码,在该情况下,若将LSP换用成ISP,则可利用上述各实施方式作为ISP编码装置。 而且,在上述各个实施方式中,举例说明了以硬件构成本发明的情况,但本发明也可通过软件来实现。 另外,上述实施方式的说明中使用的各功能块通常由作为集成电路的LSI来实现。这些功能块既可被单独地集成为一个芯片,也可以包含一部分或全部地被集成为一个芯片。虽然这里称为LSI,但根据集成程度的差异,可以被称为IC、系统LSI、超大LSI、或特大LSI。 另外,实现集成电路化的方法并不仅限于LSI,也可使用专用电路或通用处理器来实现。也可以使用可在LSI制造后编程的FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、或者可重构LSI内部的电路单元的连接和设定的可重构处理器。
再者,随着半导体的技术进步或随之派生的其它技术的出现,如果出现能够替代LSI的集成电路化的新技术,当然可利用该新技术进行功能块的集成化。还存在着适用生物技术等的可能性。 2007年7月27日提出的日本专利申请2007_196782、2007年10月3日提出的日本专利申请2007-260426和2008年1月16日提出的日本专利申请2008-007418所包含的
说明书、附图以及说明书摘要的公开内容都引用在本发明申请中。
工业实用性 本发明所涉及的语音编码装置和语音编码方法能够通过有效利用了比特的固定码本进行语音编码,例如,能够适用于移动通信系统中的手机等。
权利要求
语音编码装置,包括计算单元,使用构成固定码本的多条脉冲中的每一条脉冲和目标信号,计算各个脉冲候选位置的相关值,并针对每条脉冲,使用所述相关值的最大值来计算与脉冲相关的代表值;排序单元,对针对每条脉冲而得到的所述代表值进行排序,将与排序后的所述代表值对应的各条脉冲分组到预先设定的多个子集中,从所述多个子集中决定要最先搜索的第一子集;以及搜索单元,使用所述第一子集来搜索所述固定码本,得到表示编码失真最小的所述多条脉冲的位置和极性的代码。
2. 如权利要求1所述的语音编码装置,所述计算单元计算所述各脉冲的最大相关值 作为所述代表值,所述最大相关值是使用所述各脉冲的相关值的最大值计算出的最大相关 值,所述排序单元对所述最大相关值进行排序。
3. 如权利要求1所述的语音编码装置,所述排序单元将包含与针对每条脉冲而得到的 所述代表值中的最大代表值对应的脉冲的子集作为所述第一子集。
4. 如权利要求1所述的语音编码装置,所述排序单元针对预先设定的多个子集的多个 组合中的每一个组合,将与排序后的所述代表值对应的各条脉冲分组,并从所述多个组合 的每一个组合中分别决定所述第一子集,所述搜索单元使用每个所述第一子集搜索所述固 定码本,得到其中编码失真最小的所述代码。
5. 如权利要求2所述的语音编码装置,所述计算单元针对每条脉冲,将第二大的所述 相关值与规定的比例相乘所得的值、与所述相关值的最大值相加,计算所述各脉冲的最大 相关值。
6. 如权利要求1所述的语音编码装置,所述排序单元使用与经分组的脉冲对应的所述 代表值决定所述第一子集。
7. 如权利要求1所述的语音编码装置,所述排序单元生成多个与经分组的脉冲对应的 所述代表值的组合,并基于将预先设定的值乘以所述组合之后进行比较所得的结果,决定 所述第一子集。
8. 如权利要求1所述的语音编码装置,所述排序单元按照预先决定的顺序,重新排列 分组到所述多个子集中的脉冲。
9. 语音编码方法,包括以下步骤使用构成固定码本的多条脉冲中的每一条脉冲和目标信号,计算各个脉冲候选位置的 相关值,并针对每条脉冲,使用所述相关值的最大值计算与脉冲相关的代表值;对针对每条脉冲而得到的所述代表值进行排序,将与排序后的所述代表值对应的各条 脉冲分组到预先设定的多个子集中,从所述多个子集中决定要最先搜索的第一子集;以及使用所述第一子集搜索所述固定码本,生成表示编码失真最小的所述多条脉冲的位置 和极性的代码。
全文摘要
公开了可在语音编码中对代数码本进行分割搜索并提高编码性能的语音编码装置。在CELP编码装置的失真最小化部(112)中,最大相关值计算部(221)针对构成固定码本的四条脉冲,使用各候选位置的各脉冲与目标信号计算相关值,针对每条脉冲求出相关值的最大值,并计算使用了该相关值的最大值的最大相关值,排序部(222)将四条脉冲两条两条分割为两个子集,搜索部(224)对固定码本进行分割搜索,得到表示编码失真最小的四条脉冲的位置和极性的代码。
文档编号G10L19/00GK101765880SQ20088010080
公开日2010年6月30日 申请日期2008年7月25日 优先权日2007年7月27日
发明者森井利幸 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1