用DSP TMS320VC5416实现G.723.1编解码算法
曹 建, 肖俊颖, 丁家峰
(中南大学 物理科学与技术学院, 湖南 长沙, 410083)
摘要: 为了能在低码率下达到较高的合成语音质量, 对双速率语音编解码算法G.723.1进行研究, 并对该算法的高编码速率(6.3 kb/s)的源代码进行优化, 改卷积运算为加减运算, 改乘法运算为减法运算, 大大减小了运算量, 提高了运算速度; 解决了算法移植的问题, 即找到语音算法与开发板语音程序的切合点——将管道传输函数插入语音程序。 研究结果表明, 该实时系统在6.3 kb/s有较好的语音回放效果, 除音量略有降低外, 语音信号的失真度在人耳分辨范围之外; 语音波形从时域变换到频域, 解码后波形相对原波形幅值降低, 波形保持不变。
关键词: 数字信号处理; 语音编码; 解码; G.723.1编码算法
中图分类号:TN912.3 文献标识码:A 文章编号: 1672-7207(2005)05-0868-04
Realization of algorithm of G.723.1 with DSP TMS320VC5416
CAO Jian, XIAO Jun-ying, DING Jia-feng
(School of Physics Science and Technology, Central South University, Changsha 410083, China)
Abstract: In order to get high-quality compound speech signal, the algorithm of G.723.1, encoding and decoding algorithm, was discussed and its source code was optimized. By changing the operation from cirrus to adding and from multiplication to subtraction, the quantity of operation was reduced and its speed was advanced. The algorithm was transplanted to digital signal processing successfully because the key technology was worked out, that the pipeline data transmission function was inserted to main function. The results of the experiment show the real-time system can ensure good voice replay quality at 6.3 kb/s coding speed: ears cannot distinguish the difference of voice except that the volume falls. When speech signals are transferred from time domain to frequent domain, the amplitude of decoded wave is lower than that of encoded wave and the form of waves remains the same.
Key words: digital signal processing; speech encode; decode; algorithm of G.723.1
语音编码技术是目前移动通信和个人通信的支撑技术。 如何在中低速率上获得高质量的语音,一直是语音编码技术的主要内容[1]。 G.723.1语音压缩标准是ITU-T建议的应用于低速率多媒体服务中语音或其他音频信号的压缩算法。 G.723.1是一种双速率语音编解码标准, 能够将8 kHz采样16 bit的线性PCM语音信号压缩5.3 kbit/s或6.3 kbit/s的比特率。 该算法相对于传统的编码脉冲调制(PCM)以及自适应编码脉冲调制(ADPCM)有着速码率低, 压缩比大的优点[2-4]。 本文作者研究了G.723.1算法原理, 改高速率算法的卷积运算为加减运算, 并阐述了该算法在数字信号处理(DSP)上的实现以及移植情况。
1 语音算法原理
G.723.1算法基于线性预测理论, 采用合成分析、 矢量量化等方法, 以经过感觉加权后的残差信号能量最小为准则进行编码。 G.723.1编码器将输入的PCM16bit码流分成长度为240样点的语音帧。 每帧语音长度为30 ms, 以帧为单位编码[5]。
编解码框图如图1所示, 其原理是: 首先进行高通滤波, 去掉直流分量; 接着把1帧信号分成4个长度为60样点的子帧, 分别进行10阶线性预测(LPC)分析, 得到各子帧的LPC参数, 并把最后一个子帧的LPC参数转化成线谱对(LSP)参数, 进行矢量量化编码, 送到解码器。 利用未量化的LPC参数构造短时感觉加权滤波器, 对信号滤波后得到感觉加权的语音信号。 每2个子帧(120样点)搜索一个开环基音值, 并以此为依据为每一个子帧构造一个谐波噪声成形滤波器, 对感觉加权的语音信号进行滤波。 每一子帧的LPC综合滤波器、 感觉加权滤波器和谐波噪声成形滤波器联起来, 构成一个联合滤波器, 利用它的冲击响应和开环基音周期, 对每一子帧进行闭环基音搜索, 对开环搜索的结果进行修正。 同时通过一个五阶基音预测器对信号进行预测, 得到相应子帧的残差信号。 最后进行固定码本搜索, 也就是对每一子帧的残差信号进行矢量量化, 采用2种不同的方法, 对应着2种不同的编码速率。 编码速率为6.3 kb/s时, 采用多脉冲最大似然量化(MPMLQ)的方法, 具有较高的重建语音质量; 编码速率为5.3kb/s时, 采用代数码本激励线性预测(ACELP)的方法, 算法的计算复杂度则较低, 与一般的低码率语音编码算法一样[6-9]。 本研究采用MPMLQ方法。
G.723.1解码器是以帧为单位进行解码的, 如
图 1 编码模块
Fig. 1 Encode model
图2所示。 读入一帧码流后, 分别进行LSP参数、 基音周期和激励脉冲信号解码, 对LSP参数插值, 然后转化成各子帧的线性预测系数, 构成LPC综合滤波器。 通过基音周期和激励脉冲得到每一子帧的残差信号, 经过基音后滤波, 输入到LPC综合滤波器, 可产生合成语音信号。 在经过共振峰后滤波和增益控制, 形成高质量的重建语音信号[9, 10]。
图 2 解码模块
Fig. 2 Decode model
2 语音算法的优化
G.723.1语音编解码算法运算量大而且不均衡, 高码率的多脉冲最大似然量化要比低码率的代数码本激励线性预测算法复杂得多。 要在TMS320VC5416上实时实现G.723.1编解码算法, 必须对6.3 kb/s码率时编码算法进行改进。 算法优化的原则是尽量减少不必要的计算。
对于高速率码本搜索算法的优化在此算法中要计算预测残差信号r(n), 需进行复杂的卷积运算, 这时可根据算式的特点把卷积运算变为简单的加减运算, 大大减少了不必要的乘法运算。 由于当前激励系列v[n]除了M个幅度相等的脉冲外, 其余位置全为零, 因此, 有:
由于
则有:
式中: h[j]为冲激响应系列; G是脉冲的幅度; αk和mk分别表示脉冲的符号和位置; δ[n-mk]为单位脉冲序列。 先算出[DD(]M-1[]k=0[DD)]αkh[n-mk], 然后只需根据脉冲符号做360次加减运算, 最后进行1次乘法运算即可, 而不必每次都进行乘法运算。 此外当n〈M时, r[n]的值恒为零, 此时可直接将r[n]赋零值, 不必计算r[n], 进一步减少了计算量。 在码本搜索中计算当前插入脉冲的响应时, 需要从互相关信号中减去前一个插入脉冲的响应。 由于所有脉冲的幅度都相同, 所以, 可事先计算出G·R[j](0≤j≤59), R[j]为h[j]的自相关。 这样, 在由当前脉冲的位置来确定后面脉冲的位置时, 可直接从当前位置k的互相关值中减去R[k-j], 而不必每次都计算G·R[k-j], 减少了大量的乘法运算[11, 12]。
3 TMS320VC5416试验平台的模块结构和功能
本设计采用德州仪器公司数字信号处理器 (DSP)入门套件 (TMS320VC5416DSK)作为实验平台, 该平台有如下模块: 带有TMS320VC5416芯片的核心运算模块; 语音处理模块; 外存储模块(SRAM,FLASH);调试模块。 该套件主要特点是采用了通用串行总线 (USB)通信方式, 并凭借实时数据交换(RTDX)及用真正的即插即用功能来实现更快速的数据吞吐[13]。 该平台的特殊之处是: 有语音处理模块(Audio Out PCM3002)产生PCM的输入码, 并且带有USB在线调试器; 其语音模块带有滤波功能。
4 算法移植
4.1 关键技术
了解DSP的数据传输的方法, 找到语音算法的入口点。 DSK5416的数据输入和输出由管道来处理, 数据管道用来缓冲输入输出数据。 这些数据管道提供一个稳定的软件数据结构来驱动DSP和各种实时外设之间的FIO[14]。 编写一段用管道传送数据程序。 程序的流程框图3所示, 其中语音算法嵌入数据处理的程序段。
4.2 移植情况
移植回放效果好, 但音量略有降低。 其原始频域波形图以及经G.723.1算法处理后的波形图如图4和图5所示。 从图中可以看出, 频域能保持与源文件相同的波形, 只是幅值略有降低。
4.3 分 析
PCM3002每个输入和输出通道均有低通滤波器, 分别称为抗浑叠滤波器和镜像滤波器。 输入低通滤波器把输入信号中高于半取样频率的成分过滤掉, 以防止混叠。 输出低通滤波器也同样必须把高于半取样频率的成分过滤掉, 把脉冲阶梯波转变为平滑的连续波形, 再输出原来的通过抗浑叠滤波器之后的信号。 滤波器避免了相移和非线性失真[15]。 而在移植之前在PC机上运行的语音算法没有编写滤波部分, 失真较大, 所以, 移植文件的波形图失真度小。 可见, 滤波器对于语音处理有着很重要的作用。
图 3 管道传送数据程序框图
Fig. 3 Program chart for data transmission in pipe
图 4 源文件频域波形
Fig. 4 Waveform in frequent domain for source file
图 5 DSK输出文件频域波形
Fig. 5 Waveform in frequent domain for DSK output file
5 结 语
a. 按照G.723.1算法, 从编码、 解码处理信号的流程研究了G.723.1算法原理。 通过改算法的卷积运算为加减运算, 利用差残信号为因果信号的特点, 以及使用当前位置的互相关减去冲激响应的互相关这3种方法, 减少了该算法的乘法运算量, 实现了对G.723.1高速率源代码的优化。
b. 移植G.723.1算法至TMS320VC5416DSK实验平台, 除幅值略有降低外, 语音信号编码速率为6.3 kbit/s时, 语音信号失真度人耳辨别不出, 语音清晰度较高。
参考文献:
[1]戴明桢, 周建江. TMS320C54X结构、 原理及应用[M]. 北京: 北京航空航天大学出版社, 2001.
DAI Ming-zhen, ZHOU Jian-jiang. A Structure, Principle and Application of TMS320C54x DSP[M]. Beijing: Beijing University of Aviation Aerospace Press, 2001.
[2]刘生权, 王芙蓉, 黄本雄. G.723.1双速率语音编解码算法在TMS320VC5402上的实现[J]. 微电子技术, 2001, 30(2): 37-41.
LIU Sheng-quan, WANG Fu-rong, HUANG Ben-xiong. Implement of G.723.1 dual rate codec algorithm in TMS320VC5402[J]. Micro-electronic Technology, 2001, 30(2): 37-41.
[3]ZHANG Shao-hua, LI Cheng-zhou. Research of G.723.1 speech coder[J]. Control & Automation, 2002, 18(8): 72-74.
[4]陆侃芸, 季晓勇, 章德. G.723.1标准的DSP全汇编实现[J]. 微处理机, 2002, 3(8): 41-43, 46.
LU Kan-yun, JI Xiao-yong, ZHANG De. DSP assemble language realization of G.723.1 protocol[J]. Microprocessors, 2002, 3(8): 41-43, 46.
[5]胡航. 语音信号处理[M]. 哈尔滨: 哈尔滨工业大学出版社, 2002.
HU Hang. Speech Signal Processing[M]. Harbin:Harbin University of Science and Technology Press, 2002.
[6]Telecommunication Standardization Sector of International Telecommunication Union. ITU966-1995. Recommendation G.723.1 Dual Rate Speech Code for Multimedia Telecommunications Transmitting at 5.3 & 6.3 kb/s[M]. Geneva: Telecommunication Standardization Sector of ITU, 1996.
[7]Telecommunication standardization sector of International Telecommunication Union. ITU966-1995. Annex A to Recommendation G.723.1 Silence Compression Scheme for Dual Rate Communications Transmitting at 5.3 & 6.3 kb/s[M]. Geneva: Telecommunication Standardization Sector of ITU, 1996.
[8]杜娟, 邓德样. G.723.1编译码算法的实现[J].电子工程师, 2002, 28(4): 24-26.
DU Juan, DENG De-xiang. Realization of ITU-T G.723.1 encoding operation based on DSP[J]. Electronic Engineer, 2002, 28(4): 24-26.
[9]何兵. 基于单片机的16通道全双工G.723.1编解码系统[J]. 计算机工程, 2001, 29(10): 146-148.
HE bing. Real-time Implementation of 16-channel G.723.1 Vocoder on TMS320C6201[J]. Computer Engineering, 2001, 29(10): 146-148.
[10]胡剑凌, 徐盛. G.723.1声码器的DSPl6k实现[J]. 应用声学, 1999, 19(5): 15-19.
HU Jian-lin, XU Sheng. Real-time implementation of G.723.1 speech vocoder on DSPl6k[J]. Applied Acoustics, 1999, 19(5): 15-19.
[11]刘伟豪, 胡瑞敏, 艾浩军, 等. 基于TM1300的G.723.1语音编解码器的实时实现[J]. 武汉大学学报, 2002, 27(1): 28-33.
LIU Wei-hao, HU Rui-min, AI Hao-jun, et al. Real time implementation of G.723.1 speech coder based on TM1300[J]. Geomatics and Information Science of Wuhan University, 2002, 27(1): 28-33.
[12]Schroeder M R, Bishnu S A. Code-excited linear prediction(CELP): high-quality speech at very low bit rate[A]. Proceeding of the IEEE Conference on Acoustics, Speech and Signal Processing[C]. Tampa: IEEE, 1985, 10: 937-940.
[13]TI公司. TMS320VC5416数据手册[R]. 德克萨斯: TI公司, 2000.
TI Co. The Database of TMS320VC5416[R]. Texas: TI Co. 2000.
[14]任丽香. TMS320C6000系列DSP的原理与应用[M]. 北京: 电子工业出版社, 2000.
REN Li-xiang. The Principle and Application of TMS320C6000 Series[M]. Beijing: Electronics Industry Press, 2000.
[15]易克初, 田斌, 付强. 语音信号处理著[M]. 北京: 国防工业出版社, 2000.
YI Ke-chu, TIAN Bin, FU Qiang. Speech Signal Processing[M]. Beijing: National Defense Industry Press, 2000.
收稿日期:2004-12-20
基金项目:国家自然科学基金资助项目(50277039)
作者简介:曹 建(1955-), 男, 湖南常德人, 教授, 从事信号与信息处理的研究
论文联系人: 曹 建, 男, 教授; 电话: 0731-8631228(O); E-mail: whuihai@etang.com