多制式语音编码及其DSP实现
波。
根据插值这理,可以选择低通滤波器无失真地恢复原始信号。为了取得信号质量和运算量的折中,设计了5阶的椭圆型IIR滤波器。
1:2插值(16kbps)
分子多项式系数:
[1.02295e-01,1.14533e-01,2.41943e-01,
2.41943e-01,1.45325e-01,1.02295e-01]
每母多项式系数:
[1.00000e+00,-1.26125e+00,1.91846e+00,-1.21680+00,6.79321e+01,-1.54358e+01]
1:4插值(32kbps)
分子多项式系数:
[4.48200e+02,-6.9309e+02,4.68041e+02,4.6041e+02,-6.9309e+02,4.48200e+02]
分母多项式系数:
[1.00000e+00,-3.56926e+00,5.66631e+00,-4.83285e+00,2.20789e+00,-4.2822e+01]
另外,在对编解码后的信号进行频谱测试时,发现在3kHz处,信号的幅度超出要求3db左右。为此在编码端加入了谱调整的模块,使3kHz处频谱下降3db,作为补偿。
(2)G.729算法的回声抵消模块
G.729算法编码延时为15ms,回声现象比较明显,必须引入加声抵消算法加以抑制。
自适应回声抵消器的一般算法中,所需运算量最大的是更新参数部分。阶数越大,运算量越大。考虑到DSP的性能和算法的运算量要求,采用128阶的自适应滤波器进行回声抵消。
回声抵消模块的输入是当前一帧输入语音信号与以前解码器输出的一阶合成语音。回声抵消器利用解码器输出的合成语音信号对一帧输入信号进行回声抵消,然后将抵消掉回声的一帧输入语音信号提供给编码器作为输入信号。
(3)存储区的优化
①由于使用DP寻址,变量名仅指示偏移量;而4路信号分时处理,各路所用变量与程序代码相同,所以可以使用不同页上同名变量,在不混淆各路信号数据存储区的前提下,简化程序存储区大小。
对于ADPCM程序,编解码器的有状态变量各占25字,编解码器都使用的变量占14字。鉴于DP一页有128字,所以可以考虑前两路编解码器变量共用一页存储区;后两路编解码器变量共用一页存储区。这样,2路编解码器的存储量有25×2×2+14=114字<128字,可以存储在同一页上。
为了区分同一页上的2路变量以及同一路的编解码器变量,它们的名称应有不同。因此,编解码的程序模块各需要2个版本,即总的程序存储量=单路程序量×2。
②对CVSD和ADPCM算法,由于输入输出信号不分帧(逐样点处理),而码流格式又取得了一致,所以可以共享输入输出存储单元。
(4)代码的优化
TMS320C54xx提供了强大的硬件结构和指令体系以支持基本的数据处理操作。对汇编语言,充分挖掘指令集的潜力,能大幅度降低程序的复杂度,提高运行速度。如:使用乘累加指令MAC、MAS 《多制式语音编码及其DSP实现(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174716.html
根据插值这理,可以选择低通滤波器无失真地恢复原始信号。为了取得信号质量和运算量的折中,设计了5阶的椭圆型IIR滤波器。
1:2插值(16kbps)
分子多项式系数:
[1.02295e-01,1.14533e-01,2.41943e-01,
2.41943e-01,1.45325e-01,1.02295e-01]
每母多项式系数:
[1.00000e+00,-1.26125e+00,1.91846e+00,-1.21680+00,6.79321e+01,-1.54358e+01]
1:4插值(32kbps)
分子多项式系数:
[4.48200e+02,-6.9309e+02,4.68041e+02,4.6041e+02,-6.9309e+02,4.48200e+02]
分母多项式系数:
[1.00000e+00,-3.56926e+00,5.66631e+00,-4.83285e+00,2.20789e+00,-4.2822e+01]
另外,在对编解码后的信号进行频谱测试时,发现在3kHz处,信号的幅度超出要求3db左右。为此在编码端加入了谱调整的模块,使3kHz处频谱下降3db,作为补偿。
(2)G.729算法的回声抵消模块
G.729算法编码延时为15ms,回声现象比较明显,必须引入加声抵消算法加以抑制。
自适应回声抵消器的一般算法中,所需运算量最大的是更新参数部分。阶数越大,运算量越大。考虑到DSP的性能和算法的运算量要求,采用128阶的自适应滤波器进行回声抵消。
回声抵消模块的输入是当前一帧输入语音信号与以前解码器输出的一阶合成语音。回声抵消器利用解码器输出的合成语音信号对一帧输入信号进行回声抵消,然后将抵消掉回声的一帧输入语音信号提供给编码器作为输入信号。
(3)存储区的优化
①由于使用DP寻址,变量名仅指示偏移量;而4路信号分时处理,各路所用变量与程序代码相同,所以可以使用不同页上同名变量,在不混淆各路信号数据存储区的前提下,简化程序存储区大小。
对于ADPCM程序,编解码器的有状态变量各占25字,编解码器都使用的变量占14字。鉴于DP一页有128字,所以可以考虑前两路编解码器变量共用一页存储区;后两路编解码器变量共用一页存储区。这样,2路编解码器的存储量有25×2×2+14=114字<128字,可以存储在同一页上。
为了区分同一页上的2路变量以及同一路的编解码器变量,它们的名称应有不同。因此,编解码的程序模块各需要2个版本,即总的程序存储量=单路程序量×2。
②对CVSD和ADPCM算法,由于输入输出信号不分帧(逐样点处理),而码流格式又取得了一致,所以可以共享输入输出存储单元。
(4)代码的优化
TMS320C54xx提供了强大的硬件结构和指令体系以支持基本的数据处理操作。对汇编语言,充分挖掘指令集的潜力,能大幅度降低程序的复杂度,提高运行速度。如:使用乘累加指令MAC、MAS 《多制式语音编码及其DSP实现(第4页)》