王 苗,黄 冰,李 强
(桂林电子科技大学 信息与通信学院,广西 桂林541004)
增强型变速率语音编解码算法(EVRC)由于其较低的编码速率和较好的语音质量,在数字通信系统领域得到了广泛的应用。由于EVRC算法的复杂度较高,因此对硬件系统的性能要求很高。为了在低性能的硬件系统上实现该算法,对算法进行优化就显得非常必要。固定码本搜索是EVRC算法中比较重要的模块,它占用的空间是算法占用总空间的16%,运算量是全速率编解码算法总运算量的26%,因此成为算法优化的重点。
在码本搜索中,搜索的主要目的是使式(1)中的Tk最大:
其中d为目标信号Xw(n)和加权滤波器单位冲击响应hwq(n)的互相关函数,Ck为k序号的码矢量,Φ为加权滤波器单位冲击响应hwq(n)的自相关矩阵。
传统的码本搜索方法通过对2个track进行联合搜索来搜索8位最佳脉冲位置。首先将55个位置分为5个 track,分别为 T0、T1、T2、T3 和 T4,每个 track 包含 11个脉冲位置。先对T0-T1进行联合搜索求得两个脉冲位置,搜索量为 11×11;然后对 T2-T3,T4-T0,T1-T2 分别联合搜索求得其他6个最佳脉冲位置。可以看出,在T3和T4中各得到一个脉冲位置,在T0、T1和 T2中各得到2个脉冲位置,由此可以得到所需要的8个脉冲位置以及相应的码矢量,搜索量为 11×11×4。由于还有T0-T1、T4-T0、T1-T2为单脉冲 track等 3种情况,因此传统的码本搜索方法的搜索量为 11×11×4×4=1 936。
2000年1月,韩国学者Hochong Park提出了一种基于EVRC的高效码本搜索方法,利用二阶搜索方法来替代传统的码本搜索方法。这种算法将搜索量降低为传统搜索量的23%,但是它仅仅考虑了在符合脉冲联合规则的双脉冲track中删除脉冲的情况,而在单脉冲track和不符合脉冲联合规则的双脉冲trcak中删除脉冲的情况则没有考虑。新的搜索方法充分考虑了以上3种情况,利用分类处理的方法解决了这个问题。
二阶固定码本搜索方法是由两阶组成,在第一阶中,利用快速连续脉冲搜索方法搜索出低质量的码本矢量。先假定单脉冲 track是T0-T1,在T0中搜索出一个脉冲位置使Tk最大。然后在这个脉冲位置的基础上,在T1中搜索一个最佳位置使Tk最大,同理在前面得到的最佳脉冲位置的基础上,分别在双脉冲 track T2、T3、T4中各搜索出 2个脉冲位置。这样就得到了一个包含8个脉冲位置的低质量的码本矢量C1。然后对于单脉冲track为T1-T2、T2-T3和T4-T0等情况,分别按上述方法求得 C2、C3和 C4,选择 C1、C2、C3和 C4中 使 Tk最大的一个作为第一级搜索所得的低质量的码本矢量 C。
在第二阶中,首先对在第一阶中得到的8个脉冲进行搜索,得到对Tk影响最小的那个脉冲,然后用新的脉冲去替换这个最不重要的脉冲,这种方法叫做脉冲替换法。首先从8个脉冲中依次去掉一个,然后求剩余7个脉冲的Tk值。比较求得的8个Tk值,最大的那个Tk值所对应的去掉脉冲即为对Tk影响最小的脉冲。把它删除后,重新搜索新的脉冲来替换它的位置。根据单脉冲track联合规则,只存在单脉冲 track为T0-T1、T1-T2、T2-T3和T4-T0这4种情况。因此对Tk贡献最小的脉冲位置只有以下3种情况:
(1)贡献最小的脉冲在单脉冲track中;
(2)贡献最小的脉冲在符合单脉冲track联合规则的双脉冲track中;
(3)贡献最小的脉冲在不符合单脉冲track联合规则的双脉冲track中。
对于第一种情况,贡献最小的脉冲在单脉冲track中,则新的脉冲搜索范围被限制在原单脉冲track中,通过搜索该单脉冲track中剩余的10个脉冲,求得更新后的脉冲位置;对于第二种情况,贡献最小的脉冲在符合单脉冲track联合规则的双脉冲track中,新的脉冲搜索只在2个符合联合规则的track中进行,例如在T0-T1为单脉冲track的情况下,如果贡献最小的脉冲在T2中,则新脉冲必须在T0和T2中搜索;第三种情况,贡献最小的脉冲在不符合单脉冲track联合规则的双脉冲track中,同样将新的脉冲搜索范围限制在原单脉冲中。具体的替换规则如表1所示。
表1 脉冲替换规则表
由前面描述可知,传统固定码本搜索方法的搜索量为1 936。在二阶固定码本搜索方法第一阶中,对于每个包含11个有效脉冲位置的track来说,搜索最佳脉冲需要的搜索量为11。由于8个脉冲是连续搜索的,并且有4种不同的 track组合,因此第一阶的搜索量为 11×8×4。在第二阶中,可以假设8个脉冲位置中每个位置被删除的概率是一样的。首先以T0-T1为单脉冲track为例计算算法的搜索量。如果被删除的脉冲位置是在T0、T1或者T3中,则搜索量为8+10,其中8为搜索最小贡献脉冲的搜索量,10为搜索被删除后剩余10个位置的搜索量;如果被删除脉冲位置是在T2或者T4中,则搜索量为 8+11×2,其中 11×2为在 2个符合联合规则的脉冲track中搜索替换脉冲的搜索量。因此,在单脉冲track情况下,搜索量N1为:
同理可得,单脉冲track为 T1-T2、T3-T4和 T4-T0等情况下搜索量分别为:
又因为语音信号是随机的,这4种情况出现的概率相等,所以脉冲替换程序的搜索平均量为:
根据大量的语音测试可以得到,替换的脉冲数目越多,合成语音质量与标准算法得到的合成语音质量越接近。在综合考虑了算法的搜索量和对合成语音质量的要求后,选择进行3次脉冲替换,这样既保证了合成语音的信噪比和标准算法得到的合成语音信噪比差别在0.01 dB以下,又使搜索量最小。此时的搜索量为:
与传统固定码本搜索方法的搜索量相比较可得:
因此,二阶固定码本搜索方法的搜索量仅为传统搜索方法的21.5%,低于高效固定码本搜索方法的23%。
3GPP提供了EVRC浮点源代码,作者在不改变其他模块的前提下,对固定码本搜索模块进行修改,利用二阶固定码本搜索方法替代了传统固定码本搜索,并在Visual C++6.0环境下进行仿真测试。经过测试发现,固定码本搜索模块的运算量是传统搜索运算量的1/4,如表2所示,与上述搜索量对比情况相符。
表2 传统搜索与二阶搜索运算量对比
选用的语料来源于CMU语料库,该语料库包含各种语境的声音样本,具有广泛的代表性。选用的语音波形图如图1所示,图2和图3分别为采用传统固定码本搜索方法和二阶固定码本搜索方法得到的语音波形图。经过对比可以发现,采用2种固定码本搜索方法得到的语音波形有较高的相似度。
表3 传统方法与二阶方法所得语音信噪比
为了更客观地评价二阶固定码本搜索方法的性能,分别求得了以上3段语音的信噪比,如表3所示。原始语音信号经过二阶固定码本搜索方法所得语音的信噪比与传统固定码本搜索方法所得语音的信噪比仅相差0.01 dB。
二阶固定码本搜索方法使搜索量降低为传统搜索方法的21.5%,且获得语音的信噪比与传统固定码本搜索方法所得语音的信噪比仅相差0.01 dB,是一种比较理想的固定码本搜索方法。
[1]PARK H.Efficient codebook search method of EVRC speech codec[M].IEEE SIGNAL PROCESSING LETTERS,2000.
[2]王炳锡,王洪.变速率语音编码(第 1版)[M].西安:西安电子科技大学出版社,2004.
[3]赵力.语音信号处理(第1版)[M].北京:机械工业出版社,2003.
[4]鲍长春.低比特率数字语音编码基础(第1版)[M].北京:北京工业大学出版社,2001.
[5]姚天任.数字语音处理(第1版)[M].武汉:华中科技大学出版社,2003.