固定码书搜索方法及搜索器的制作方法

文档序号:2837314阅读:251来源:国知局

专利名称::固定码书搜索方法及搜索器的制作方法
技术领域
:本发明涉及矢量编码技术,特别是一种固定码书搜索方法及搜索器。技术背景众所周知,在语音编码领域基于CELP(CodeExcitedLinearPrediction)模型的语音编码器应用最为广泛,与其他类型的语音编码器(如波形编码器和参数编码器等)相比,它能够在极低码率情况下获得较好的语音质量,而在高码率情况下,表现依然优秀。它以码本作为激励源,具有,速率低、合成语音质量高、抗噪声性强及多次音频转接性能良好等优点。作为激励信号的自适应码书和固定码书在CELP编码器中起着非常重要的作用。其中,自适应滤波器的作用是去掉语音残差信号中的长时相关性,语音残差信号在去掉长时相关性之后,已经变得类白噪化,对其进行精确量化就显得非常困难。目前,对固定码书的目标信号进行有效量化一般有如下方法1、随机码书法;2、规则脉冲法;3、自相关算法;4、变换域算法;5、代数码书等方法。这些方法都各有特点,都充分利用的固定码书的一些特征进行量化,在语音合成质量、占用比特数、运算复杂度等方面各有缺点。其中,目前用的比较广泛的还是代数码书,它具有很多其他方法所没有的优点。它关注的是固定码书目标信号的脉冲位置,而对脉冲的幅度则默认为l,这样做的好处是,将大量的乘法运算转换为加减法运算,大幅度降低了运算复杂度。同时,只需要量化脉冲的符号和位置,减少了量化所需的比特,同时,保证了良好的语音质量。但是,在寻找脉冲最佳位置时,全搜索的运算复杂度很大,一般在脉冲个数较多时无法达到实时实现。因此,就出现了需要次优的搜索算法。一个次优搜索算法的好坏直接关系到最终合成语音的质量,因此,搜索算法在码书计算的过程中,具有非常重要的作用。现有技术中的固定码书搜索方法,其步骤主要包括(1)通过一种方法确定脉沖搜索的初始码书;(2)固定码书搜索器确定脉冲组(假设组内有n个脉冲),脉冲组至少包含l个初始码书脉冲;(3)从若干轨道中随机选取m个轨道,用这m个轨道中用其他位置替换上述选定的脉沖组中的脉冲,并计算代价函数Qk的值;(4)随机选取若干次,并取这若干次中使Qk增加最大的脉冲组位置替换初始码书中的相应脉冲的位置;(5)替换一组脉冲组的脉冲后,固定此脉冲组的脉冲位置并对其他轨道上的脉沖再重复上述(3)和(4)步骤替换初始码书中的剩余脉沖;(6)此过程可以重复进行。下面就以一个轨道l个脉冲的情形对固定码书搜索方法进行介绍,脉沖轨道划分如表一所示。<table>tableseeoriginaldocumentpage5</column></row><table>表一脉冲轨道划分表请参阅图l,为现有技术中一种固定码书搜索方法的流程图,其步骤包括一、确定初始码书初始码书选取的好坏对最终搜索结果的性能有一定的影响。初始码书的确定方法也有很多种。可以直接利用每个轨道上的脉冲位置似然估计信号绝对值最大值所在位置的组合作为初始码矢。也可以采用一种运算复杂度较低的搜索方法来确定初始码书。这里介绍一种集中搜索(focusedsearchmethod)的方法。1、利用脉冲位置似然估计信号b(n),对每个位置上的脉冲符号进行判断,假定最终最佳脉冲的符号与b(n)在对应位置上的符号相同。即<formula>formulaseeoriginaldocumentpage5</formula>Sign[dn(n)]表示位置n处dn(n)的符号,Sign[b(n)]表示位置n处b(n)的符号.且将每个轨道上的脉冲位置重新按照以b(n)的绝对值大小从大到小的顺序进行排序。假设经过排序后的bn(n)为pos—max[n].2、从每个轨道重新排序后的脉冲位置pos—max[n]中取出前4个位置,然后在每个轨道的4个位置上进行全搜索。需要搜索4x4x4x4=256次。确定初始码书。二、搜索脉冲1、从4个轨道中随机选取2个轨道,不妨假设初始码书为(32,33,2,35),假设随机选取的2个轨道为track0,trackl,则将track0和trackl上的2个脉冲组成一个联合脉冲组,固定初始码书另夕卜2个轨道上的脉冲,假设pos—max[n]为Pos—max[64]={0,36,32,4,40,28,16,8,20,52,44,48,12,56,24,60,1,33,37,5,29,41,17,9,49,21,53,25,13,45,57,61,34,2,38,30,6,18,42,50,26,14,10,22,54,46,58,62,35,3,31,39,7,19,27,51,15,43,55,47,23,11,59,63}2、假设将要被交换的联合脉沖组为(iO,il),通过替换联合脉冲组的2个脉冲,初始码书变为(0,1,2,35),(0,33,2,35),(0,37,2,35),…(36,1,2,35).......从中选择使初始脉冲代价函数Qk增加最大的码矢,不妨设为(32,17,2,35)。3、重复1和2步骤若干次,选择这若干次中使初始脉冲代价函数Qk最大的码矢。不妨设第二次循环选择的联合脉冲组在trackl和track2。则,保证初始码书在track0和track3上的脉冲位置不变,而与trackl和track2上的脉沖位置交换初始码书中的位置,则初始码书由(32,33,2,35)变为(32,33,34,35),(32,33,34,3),(32,33,34,31),...,(32,33,2,35)......。从中选择使初始脉冲代价函数Qk增加最大的码矢,不妨设为(32,33,6,35)。重复若干次,则输出若干组结果,在这若干组结果中选择一个使初始脉冲代价函数Qk增加最大的码矢,不妨设为(32,33,6,35)。4、保证(32,33,6,35)中刚搜索到的(6,35)2个脉冲位置固定,对剩余的2个脉冲组成联合脉冲组进行替换。即码书(32,33,6,35)变为(0,1,6,35),(0,33,6,35),.......(36,1,6,35),...,从中选择使码书脉冲代价函数Qk增加最大的码矢,不妨设为(32,33,6,35)。则,最终的最佳码书即为(32,33,6,35)。这里也可以通过设定循环搜索次数,继续搜索最佳脉冲。总共的搜索次数为确定初始的4x4x4x4=256次,还有循环搜索次数:6x(4x12)+4x4=304次,总共256+304=560次。这种搜索方法运算复杂度很低,也考虑到了各个脉冲之间的相互关联性,性能也不错,但是,其搜索的循环次数是固定的,只有当把所有的循环都完成搜索以后,才能够得出最终的最佳脉冲位置,使得搜索方法运算效率较低。现有技术中另一种搜索固定码书的方法。它具有如下特点1、能够在很少搜索次数下提供和标准方法相同的性能;2、适用于任何ACELP固定码书结构的编码器,对脉冲的位置和轨道结构没有特殊要求。其搜索方法的主要步骤有a、计算脉冲位置似然估计函数的绝对值(用以提取有可能存在脉沖的位置信息);b、临时获得一个码本矢量(初始码书);c、替换初始码书中的一个脉冲,并计算代价函数Qk;d、判断经过替换后的码书的代价函数Qk是否增大;e、如果增大,则用新的脉冲替换以前的脉冲,得到新的码书;f、如果变小,则仍然使用前一个码书。具体搜索方法,如下为了便于理解,假设每个轨道上只有一个脉冲,分别为P0、Pl、P2和P3。假设初始码书为{i0,il,i2,i3}={20,33,42,7},括号中的数字表示脉冲位置。具体码书结构如表二所示<table>tableseeoriginaldocumentpage7</column></row><table>表二码书结构步骤一保持初始码书中的il,i2,i3位置保持不变,用轨道TO中的其他位置{0,4,8,12,16,24,28,3236,40,44,48,52,56,60}依次替换i0的初始值20,得到新码书({0,33,42,7}、{4,33,42,7}、…{60,33,42,7}),并计算新的码书的代价函数Qk。如果新的Qk比初始码书的Qk大,则用新的码书脉冲位置替换初始码书,并将新的码书作为初始码书,重复上述过程,直到轨道上的所有位置都完成了替换工作为止,最终会得到一个最大的Qk值和其对应的新码书。不妨设为{4,33,42,7}对应的Qk是上面替换过程中最大的Qk。保存此Qk值Y0和对应的新码书{4,33,42,7}。步骤二保持初始码书中的i0,i2,i3位置不变(注意,此处的初始码书还是原来的初始码书即为{20,33,42,7}),用Tl轨道上的其他15个位置{1,5,9,13,17,21,25,29,37,41,45,49,53,57,6U—次替换il的初始值33,得到新码书({20,1,42,7}、{20,5,42,7}、...{20,61,42,7}),并计算新码书的代价函数Qk。如果新的Qk比初始值大,则用新的码书脉冲位置替换初始码书,并将新的码书作为初始码书,重复上述过程,直到轨道上的所有位置都完成了替换工作为止,最终会得到一个最大的Qk值和其对应的新码书。不妨设为{20,21,42,7}对应的Qk是上面替换过程中最大的Qk。保存此Qk值Yl和对应的新码书{20,21,42,7}。步骤三重复类似步骤一和二的过程,对T2和T3轨道上的脉冲做类似的处理,不妨设最终的结果为,对于T2轨道,最终的最大Qk值为Y2,码书为(20,33,18,7》;对于T3轨道,最终的最大Qk值为Y3,码书为{20,33,42,11};步骤四把从上述3个步骤中得到的4个Qk(YO、Yl、Y2和Y3)中最大的一个Qk作为此次搜索的全局最优值,并将对应的码书作为此次搜索的最佳码书,不妨设Y2为四个中最大的,则最佳码书为{20,21,42,7}。此时,初始码书已经从{20,33,42,7}变为{20,21,42,7}。步骤五将{20,21,42,7}作为新一轮搜索的初始码书,继续重复上述4个步骤,直到达到搜索次数的门限值或者循环次数的门限值位置。一般循环次数i殳为4次。这种搜索方法搜索的循环次数也是固定的,只有当把所有的循环都完成搜索以后,才能够得出最终的最佳脉冲位置,使得搜索方法运算效率较低。
发明内容本发明的目的在于提供一种运算效率较高的固定码书搜索方法和固定码书4臾索器。一种固定码书搜索方法,其包括初始化一个计数器;进行脉冲搜索,计算代价函数Qk的值;当Qk增加时,初始化所述计数器;当Qk未增加时,增加所述计数器的值;判断所述计数器的值是否大于门卩艮值,否,继续进行搜索流程;是,结束整个搜索流程。一种固定码书搜索方法,其包括初始化状态标识;进行脉冲搜索,计算Qk;当Qk增加时,修改所述状态标识为非初始状态;判断所述状态标识是否为初始状态;否,继续进行搜索流程;是,结束整个搜索流程。一种固定码书搜索器,其包括脉冲搜索单元,用于脉冲搜索;计数器,用于在Qk增加时初始化,在Qk未增加时,增加所述计数器的值;判断单元,用于在所述计数器的值大于门限值时,结束整个搜索流程。一种固定码书搜索器,其包括脉沖搜索单元,用于脉沖搜索;标识单元,用于标识初始状态及在Qk增加时标识为非初始状态;判断单元,用于判断所述标识单元是否为初始状态时,是,结束整个搜索流程。上述方法或装置,通过计数器或标识单元来记录Qk未增加的搜索次数或Qk已增加,使得当符合预订条件时,跳出搜索循环,进而减少了搜索次数,提高了搜索效率。图1是现有技术中一种固定码书搜索方法的流程图;图2是本发明实施例一固定码书搜索方法流程示意图;图3是本发明实施例二固定码书搜索方法流程示意图;图4是本发明实施例三固定码书搜索方法流程示意图;图5是本发明实施例四固定码书搜索方法流程示意图;图6是本发明实施例五固定码书搜索方法流程示意图;图7是本发明实施例六固定码书搜索器结构示意图;图8是本发明实施例七固定码书搜索器结构示意图。具体实施方式.实施例一、一种固定码书搜索方法,如图2所示,包括Al、确定初始码书;i殳定外循环次凄tn;为了便于理解,假设每个轨道上只有一个脉冲,分别为P0、Pl、P2和P3。假设初始码书为{i0,il,i2,i3}={20,33,42,7},括号中的数字表示脉冲位置。具体码书结构如表三所示<table>tableseeoriginaldocumentpage10</column></row><table>表三码书结构对于初始码书的确定方式,本实施例不作限定。例如可以通过"脉沖位置最大似然函数"方式获得。A2、初始化计数器cnt;初始化具体可以为置零或-1,也可以为某一固定值;设置计数器的目的是为了计数连续未发生脉冲替换的搜索次数,所述脉冲替换具体为在Qk增加时,将原脉冲组合替换为使Qk增加的脉冲组合;A3、脉沖搜索,计算Qk;具体为确定一个脉冲组合,替换相应轨道上的脉冲,计算Qk;对于脉沖搜索的方法,本实施例不作限定。例如可以通过如下方式以全局脉冲替换的方法为例保持初始码书中的il,i2,i3位置保持不变,用轨道T0中的其他位置{0,4,8,12,16,24,28,3236,40,44,48,52,56,60}依次替换i0的初始值20,得到新码书({0,33,42,7}、{4,33,42,7}、...{60,33,42,7}),并计算新"码书的代价函数Qk;上述这种在选定轨道上进行不同脉冲位置的脉冲搜索,即为内循环搜索;A4、Qk判断;判断Qk的值是否增加;是,执行步骤A5;否,执行步骤A6;A5、替换使Qk增加的脉冲,得到新的码书;计数器初始化;如果新的Qk比初始码书的Qk大,则用新的码书脉沖位置替换初始码书,并将新的码书作为初始码书。不妨设为{4,33,42,7}对应的Qk是上面替换过程中最大的Qk。保存此Qk值YO和对应的新码书{4,33,42,7};A6、计数器cnt增加;具体可以为cnt加1;A7、判断内循环是否结束;否,返回步骤A3;是,执行步骤A8;A8、判断计数器cnt是否大于门限值;是,执行步骤A9;否,继续进行搜索流程;如判断外循环是否结束,返回步骤A2;进行下一个轨道的搜索,即,重复步骤A2、A3、A4、A5等步骤,直至T0-T3四个轨道全搜索完毕结束整个流程;上述这种选择不同轨道进行的搜索,即外循环搜索;上述门限值可以根据需要设置,如果一次内循环次数是a,门限值可以是的a倍数、a-l、a+l等值;A9、结束整个搜索流程。如果cnt超过门卩艮值thr,则说明在超过门卩艮值thr次数内并没有发生脉冲替换,也就是说没有找到更好的脉冲组合,则可以认为已经搜索到最佳脉冲,整个搜索过程结束。实施例二、另一种固定码书搜索方法,如图3所示,该实施例与实施例一不同之处在于该实施例的一次外循环中嵌套两个内循环,如内循环l和内循环2。当然也可以嵌套多个内循环。该实施例具体步骤如下Bl、确定初始码书;i殳定外循环次凄tn;B2、初始化计数器cnt;B3、内循环l脉冲搜索,计算Qk;确定一个脉冲组合,替换相应轨道上的脉冲,计算Qk;B4、Qk判断;判断Qk的值是否增加;是,执行步骤B5,否执行步骤B6;B5、替换使Qk增加的脉冲,得到新的码书;计数器cnt初始化;B6、计凄t器cnt增加;具体可以为cnt加1;B7、判断内循环l是否结束;否,返回步骤B3;是,执行步骤B8;B8、内循环2脉沖搜索,计算Qk;确定一个脉沖组合,替换相应轨道上的脉冲,计算Qk;B9、Qk判断;判断Qk的值是否增加;是,执行步骤BIO,否,执行步骤Bll。BIO、替换使Qk增加的脉沖,得到新的码书;计^t器初始化;Bll、计数器cnt增加;具体可以为cnt加l;B12、判断内循环2是否结束;否,返回步骤B8;是,执行步骤B13;B13、判断计数器cnt是否大于门限值;是,执行步骤B14;否,继续进行搜索流程;如判断外循环是否结束,返回步骤B2;B14、结束整个搜索流程。实施例三、又一种固定码书:l叟索方法,如图4所示,该实施例与实施例一不同之处在于该实施例在的判断计数器cnt是否大于门限值后进行内循环是否结束的判断。该实施例具体步骤如下Cl、确定初始码书;设定外循环次数n;C2、初始化计数器cnt;C3、脉冲搜索,计算Qk;确定一个脉冲组合,替换相应轨道上的脉冲,计算Qk;C4、Qk判断;判断Qk的值是否增加;是,执行步骤C5,否,执行步骤C6;C5、替换使Qk增加的脉冲,得到新的码书;计数器初始化;C6、计数器cnt增加;具体可以为cnt加1;C7、判断计数器cnt是否大于门限值;是,执行步骤C9;否,执行步骤C8;C8、判断内循环是否结束;否,返回步骤C3;是,执行步骤C9;C9、判断外循环是否结束;否,返回步骤C2;是,执行步骤C10;CIO、结束整个搜索流程。实施例四、还一种固定码书搜索方法,如图5所示,该实施例与实施例三不同之处在于该实施例的一次外循环中嵌套两个内循环,即内循环l和内循环2;在每个内循环结束前判断计数器cnt是否大于门限值。当然也可以嵌套多个内循环。另外,作为可选方案,还可以在内循环结束后判断计数器cnt是否大于门限值。该实施例具体步骤如下Dl、确定初始码书;设定外循环次数n;D2、初始化计数器cnt;D3、内循环l脉冲搜索,计算Qk;确定一个脉沖组合,替换相应轨道上的脉冲,计算Qk;D4、Qk判断;判断Qk的值是否增加;是,执行步骤D5,否执行步骤D6;D5、替换使Qk增加的脉冲,得到新的码书;计数器cnt初始化;D6、计数器cnt增加;具体可以为cnt加1;D7、判断计数器cnt是否大于门限值;是,执行步骤D17;否,执行步骤D8;D8、判断内循环l是否结束;否,返回步骤D3;是,执行步骤D9;D9、内循环2脉冲搜索,计算Qk;确定一个脉冲组合,替换相应轨道上的脉冲,计算Qk;DIO、Qk判断;判断Qk的值是否增加;是,执行步骤Dll,否执行步骤D12;Dll、替换使Qk增加的脉冲,得到新的码书;计数器cnt置零;D12、计数器cnt增加;具体可以为cnt加1;D13、判断计数器cnt是否大于门限值;是,执行步骤D13;否,执行步骤D14;D14、判断内循环2是否结束;否,返回步骤D9;是,执行步骤D15;D15、判断计数器cnt是否大于门限值;是,执行步骤D17;否,执行步骤D16;D16、判断外循环是否结束;否,返回步骤D2;是,执行步骤D17;D17、结束整个搜索流程。实施例五、还一种固定码书搜索方法,如图6所示,该实施例通过设置一个标识flag,用以标识在一次循环中是否有更好的脉冲组合出现,如果有,则将标识flag设置为0,如果没有则此flag的值仍然为-l。在一次循环结束之前,判断flag是否为O,如果为0,则说明在一次循环替换过程中有更优的脉冲组合出现,则将flag重新置为-l,开始新一轮的循环替换,重复上述过程。该实施例的具体步骤为El、确定初始码书;设定外循环次数n;E2、初始化状态标识;设置一个初始状态值,可以为-1、0、l等值;E3、内循环脉冲搜索,计算Qk;确定一个脉沖组合,替换相应轨道上的脉冲,计算Qk;E4、Qk判断;判断Qk的值是否增加;是,执行步骤E5;E5、替换使Qk增加的脉沖,得到新的码书;修改所述状态标识为非初始状态,确保与初始状态值不同;E6、判断内循环是否结束;否,返回步骤E3;是,执行步骤E7;E7、判断状态标识是否为初始状态;否,执行E8;是,执行步骤E9;E8、判断外循环是否结束;是,返回步骤E3;E9、结束整个搜索流程。实施例六、一种固定码书搜索器,如图7所示,该固定码书搜索器包括脉冲搜索单元、计数器及判断单元,其中,所述脉冲搜索单元用于脉冲搜索;所述计数器用于在Qk增加时初始化,在Qk未增加时,增加所述计数器的值;所述判断单元用于在所述计数器的值大于门限值时,结束整个搜索流程。实施例七、另一种固定码书搜索器,如图8所示,该固定码书搜索器包括脉冲搜索单元、标识单元及判断单元,其中,所述脉冲搜索单元用于脉冲搜索;所述标识单元,用于标识初始状态及在Qk增加时标识为非初始状态;所述判断单元用于在所述标识单元为初始状态时,结束整个搜索流程。上述方法或装置,通过计数器或标识单元来记录Qk未增加的搜索次数或Qk已增加,使得当符合预订条件时,跳出搜索循环,进而减少了搜索次数,提高了搜索效率。以上对本发明所提供的固定码书搜索方法及固定码书搜索器进行了详细施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。权利要求1、一种固定码书搜索方法,其特征在于,包括初始化一个计数器;进行脉冲搜索,计算代价函数Qk的值;当Qk增加时,初始化所述计数器;当Qk未增加时,增加所述计数器的值;判断所述计数器的值是否大于门限值,否,继续进行搜索流程;是,结束整个搜索流程。2、根据权利要求l所述的方法,其特征在于所述初始化为置零或-1。3、根据权利要求l所述的方法,其特征在于增加所述计数器的值具体为所述计数器加l。4、根据权利要求l所述的方法,其特征在于所述脉沖搜索为外循环的脉冲搜索。5、根据权利要求4所述的方法,其特征在于在每次外循环搜索开始时执行所述初始化一个计数器的步骤。6、根据权利要求4所述的方法,其特征在于其特征在于执行所述初始化一个计数器的步骤后进行外循环的脉冲搜索。7、根据权利要求l所述的方法,其特征在于所述脉冲搜索包括至少一个内循环。8、根据权利要求7所述的方法,其特征在于在所述内循环每次脉冲搜索完毕后判断所述计数器的值是否大于门P艮值。9、根据权利要求7所述的方法,其特征在于在所述内循环结束后判断所述计数器的值是否大于门限值。10、一种固定码书搜索方法,其特征在于,包括初始化状态标识;进行脉沖搜索,计算Qk;当Qk增加时,修改所述状态标识为非初始状态;判断所述状态标识是否为初始状态;否,继续进行搜索流程;是,结束整个搜索流程。11、根据权利要求10所述的方法,其特征在于所述脉冲搜索包括至少一个内循环。12、根据权利要求ll所述的方法,其特征在于在所述内循环结束后判断所述状态标识是否为初始状态;是,结束整个搜索流程。13、一种固定码书搜索器,其特征在于,包括脉沖搜索单元,用于脉冲搜索;计数器,用于在Qk增加时初始化,在Qk未增加时,增加所述计数器的值;判断单元,用于在所述计数器的值大于门限值时,结束整个搜索流程。14、一种固定码书搜索器,其特征在于,包括脉冲搜索单元,用于脉冲搜索;标识单元,用于标识初始状态及在Qk增加时标识为非初始状态;判断单元,用于判断所述标识单元是否为初始状态时,是,结束整个搜索流程。全文摘要本发明实施例提供了一种固定码书搜索方法及搜索器。一种固定码书搜索方法,其包括初始化一个计数器;进行脉冲搜索,计算代价函数Qk的值;当Qk增加时,初始化所述计数器;当Qk未增加时,增加所述计数器的值;判断所述计数器的值是否大于门限值,否,继续进行搜索流程;是,结束整个搜索流程。所述固定码书搜索方法的搜索效率较高。文档编号G10L19/10GK101303859SQ20071012450公开日2008年11月12日申请日期2007年11月12日优先权日2007年11月12日发明者吴文海,亮张,张德军,李立雄,王庭红,玥郎申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1