6513|1

161

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

低速率语音编解码专用芯片的设计 [复制链接]

  为了满足可视电话系统对高质量,低成本语音编解码器的需要,采用数字信号处理器内核(DSP Core)的方法,设计了符合ITU-T G.723.1建议的5.3kbit/s和6.3kbit/s双速率语音编解码器专用芯片。针对G.723.1算法特点,进行算法优化,如变卷积运算为加/减运算,避开求余运算等,并对需要最大运算量的情况作了模拟,保证语音编解码器在最坏情况下也能正常工作。根据专用芯片的结构,设计了编解码器的流程和接口模块,用较少的运算量和较小的存储空间,实时实现了G.723.1建议及其附录A的全部功能和选项,并通过了全套测试序列的检验,而且留出足够多的资源实现自适应回声抵消、调制解调等其它功能。
  关键词 低速率语音编码;专用芯片;可视电话
  分类号 TN 912.3

ASIC design for low bit rate speech coding
JIA Zhike,CUI Huijuan,TANG Kun,FENG Chongxi
Department of Electronic Engineering,Tsinghua University,Beijing 100084,China
  Abstract In order to get a high quality and low cost speech coder for videophone system,an ASIC (Application Specific Integrated Circuit) was designed using DSP core. The speech coder complies with ITU-T Recommendation G.723.1 (dual rate speech coder for multimedia communications transmitting at 5.3 & 6.3kbit/s). According to the features of the G.723.1 algorthm and the architecture of the ASIC,some optimizations were used to reduce the computation complex and the memory size. The worst case which would cost maximum computation amount was simulated to ensure the coder can work properly in this case. The chart of the coder and its performance were presented. There is still enough resource left in this ASIC to implement the MODEM and the echo cancellator.
  Key words low bit rate speech coding; ASIC (Application Specific Integrated Circuit); videophone
  ITU-T H.324是运行在公用电话交换网(PSTN)上的可视电话标准建议。H.324可视电话系统选用ITU-T G.723.1建议作为语音压缩编码标准。G.723.1建议有两种可选速率,分别是5.3kbit/s和6.3kbit/s,它们都能提供很高的语音质量,MOS分均在3.5以上。G.723.1语音编码方案的算法复杂、运算量大、占用存储器多,延时较长,达37.5ms,在可视电话系统中需加入自适应回声抵消器,才能达到较高的听觉质量。
  为了降低成本和功耗,提高实时性和可靠性,使可视电话系统达到实用化的程度,最佳设计方案就是把G.723.1语音编解码器、V.34调制解调器和回声抵消器集成到一块芯片中,从而减少数据交换量,提高速度。由于运算速度和存储容量的限制,目前的通用DSP还无法满足要求,必须设计专用芯片来完成。
  本文在对G.723.1语音编解码算法做简单介绍后,针对专用芯片的特点,提出了算法优化措施,并对最大运算量作了估算。在此基础上给出了该语音编解码器的设计方案和各项性能指标。

1 G.723.1语音编解码算法简介
  G.723.1语音编解码器是基于线性预测理论,采用合成分析、矢量量化等方法,以经过感觉加权后的残差信号能量最小为准则进行编码的。
  G.723.1语音编码器将输入的16bit线性脉冲编码调制(PCM)码流分成长度为240样点的语音帧,以帧为单位进行编码,首先,进行高通滤波,去掉直流分量,接着,把1帧信号分成4个长度为60样点的子帧,分别进行10阶线性预测编码(LPC)分析,得到各子帧的LPC参数,并把最后一个子帧的LPC参数转化成线谱对(LSP)参数,进行矢量量化编码,送到解码器。利用未量化的LPC参数构造短时感觉加权滤波器,对信号滤波后得到感觉加权的语音信号。每两个子帧(120样点)搜索一个开环基音值,并以此为依据,为每一个子帧构造一个谐波噪声成形滤波器,对感觉加权的语音号进行滤波。每一子帧的LPC综合滤波器、感觉加权滤波器和谐波噪声成形滤波器级联起来,构成一个联合滤波器,利用它的冲击响应和开环基音周期,对每一子帧进行闭环基音搜索,对开环搜索的结果进行修正。同时通过一个五阶基音预测器对信号进行预测,得到相应子帧的残差信号。最后进行固定码本搜索,也就是对每一子帧的残差信号进行矢量量化。6.3kbit/s采用多脉冲最大似然量化(MP-MLQ)的方法;5.3kbit/s采用代数码本激励线性预测(ACELP)的方法。两种不同的方法,对应着两种不同的编码速率。
  G.723.1解码器是以帧为单位进行解码的。读入一帧码流后,分别进行线谱对(LSP)参数、基音周期和激励脉冲信号解码,对LSP参数插值,然后转化成各子帧的线性预测系数,构成LPC综合滤波器。通过基音周期和激励脉冲得到每一子帧的残差信号e(n),经过基音后滤波,输入到LPC综合滤波器,可产生合成语音信号。在经过共振峰后滤波和增益控制后,形成高质量的重建语音信号。由于解码器没有复杂的码本搜索过程,运算量要比编码器小得多,仅为编码器的20%左右。
  此外,G.723.1的附录A还增添了语音激活功能,自动检测语音存在与否,非语音帧的编码输出仅为4Byte或1Byte。据统计,在电话通话过程中,有约60%的时间没有语音,使用语音激活技术,可以进一步压缩语音码率。
点赞 关注
 

回复
举报

161

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

回复 楼主 的帖子

2 算法优化

2.1 变卷积运算为加/减运算

  卷积运算在G.723.1编解码运算中所占的比例很大,如果能根据变量的特点,变卷积运算为加/减运算,则可大大减少运算次数。
  比如,在用多脉冲最大似然量化的方法进行固定码本搜索时,为了计算预测残差信号r′
(n),就要进行卷积运算

r′(n)=v(n)*h(n)=h[j]v[n-j], 0≤n≤59        (1)

式中,h(n)是联合滤波器的冲击响应,v(n)是含M个脉冲的序列。
  如果硬性卷积,得到一个预测残差信号矢量就需要1+2+3+……+58+59=1770次乘累加运算。每个子帧进行8次这样的运算,这样每帧要进行4×8×1770=56640次乘累加运算,次数相当多。
  可是,注意到构成v(n)的M 个脉冲幅度大小是相等的,可以写成

v(n)=Gαkδ(n-mk),0≤n≤59         (2)

式中:G 是脉冲幅度,αk为1或-1,表示第k个脉冲的正负;mk 是第k个脉冲的位置;M 是脉冲个数,奇数子帧M=5,偶数子帧M=6.这样

r′(n)=h(j).Gαkδ[n-j-mk]=Gαkh(n-mk ),0≤n≤59   (3)

  由于αk为1或-1,αkh(n-mk)即可通过加减运算完成,最后做一次增益G 的乘法运算可得到r′(n)。计算一次预测残差矢量最多仅需要60×6=360次加/减运算。处理一帧语音信号可减少(1770-360)×8×4=45120次运算。对于专用芯片来说,一次乘累加与一次加/减运算一样可用一个指令周期就可完成,减少45120次运算,大致相当于减少1.5MIPS.

2.2 避开求余运算

  求余运算用C语言实现起来很容易,仅需一条指令即可,但对于专用芯片来说,就比较困难了。通过对算法的分析,发现G.723.1编解码器中用到的一些求余运算可以用其它办法替换,并可得到同样的效果。
  比如,要计算基音预测器的激励信号e′(n),如果照搬建议就要用到求余运算:

e′(0)=[-Li-2],e′(1)=[-Li-1],
             e′(n+2)=e[(n mod Li)-Li],0≤n≤61          (4)

式中,Li 是第i子帧的基音周期,e(n)是预测激励矢量。
  通过对式(4)的分析,当Li <62时,e′(n)=e′(n+kLi),其中n+kLi ≤63,k是整数。如图1所示。



 

    图1 预测激励矢量示意图

后一段长度为Li 的样点可看作前一段同样长度样点的重复。根据这样的数据结构得到:

e′[0]=e[-Li-2],
e′[1]=e[-Li-1],
 e′[2+j]=e [j -Li ], 0≤j ≤Li ,
             e′[2+j]=e′[2+j-Li], Li ≤j ≤61          (5)

  这种算法在专用芯片上实现起来是非常容易的,避免了求余运算,达到了同样的效果。
  在固定码本搜索模块中,为了生成Dirac函数序列,也会遇到类似的问题,同样可以用上述算法来解决。

2.3 省略不必要的溢出检查

  在ITU所提供的G.723.1定点C语言程序中,几乎每次运算之后都要检查一下结果是否溢出。虽然每次溢出检查所用指令数不多,但由于使用得极其频繁,它所带来的运算量也是很惊人的。
  通过对数据范围的估算,对于那部分肯定不会溢出的运算即使省去对它们的溢出检查,也不会影响运算的精度。比如,在输入的PCM语音信号经过高通滤波器时,第一个滤波系数为0x4000,而PCM语音信号的动态范围是0x8000~0x7fff,乘以0x4000后,其范围在0xe0000000~0x1fffc000之间,不会超出32bit的范围。对这样的运算就不必进行溢出检查了。
  以上这三方面的算法优化不会对运算精度和结果产生任何影响。用ITU提供的G.723.1全套测试序列进行测试,结果完成正确。

3 语音编解码器运算量峰值的估算

  图2是对一段语音“他去无锡市”按6.3kbit/s进行编码,各帧所用运算量O(以MI/s为单位,I为指令数)的统计结果。其中,运算量最大的第15帧用了18.53MI/s,最小的第21帧只用了16.94MI/s。可见,对不同的语音帧进行编码所需运算量相差很大。对于一个系统来说,如果某一帧语音所需的运算量特别大,超出了专用芯片的运算能力。那么不仅会使G.723.1语音编解码器出错,还会影响整个系统的运行,甚至使系统崩溃。

 

图2 运算量统计直方图

  为避免这种情况的发生,提高系统的稳定性,就需要对G.723.1语音编解码器所需的最大运算量作出正确的估算,以此为依据,进行系统的规划设计。如何进行估算呢?依靠实际的语音进行统计,取一个最大值,不仅需要花费大量的时间,而且得到的统计结果也仅仅是一段时间、一定条件下的最大值。我们的做法是通过对G.723.1语音编解码器算法的分析,找出导致最大运算量发生的条件,人为设定一些参数,制造出产生最大运算量的条件。具体分析如下:
  由于高速率的多脉冲最大似然量化要比低速率的代数码本激励线性预测算法复杂,所以,最大运算量必然在6.3kbit/s编码的情况下。
  在采用高速率进行编码时,为了提高基音周期较短的语音帧的编码质量,对于开环基音周期小于58的子帧要进行两次闭环基音搜索。为了补偿它所引起的运算量的增大,两次搜索时选用较小的量化码表,使运算量的不平衡性减小,但在某些特殊情况下,比如开环基音搜索的结果是58,经过第1子帧的闭环基音搜索后,基音周期被修正为57,这样,接着进行两次搜索时,仍会用到容量较大的量化码表,计算量会明显增加。还有一些特殊情况会导致运算量增加。这些情况在实际中都有可能发生,通过人为设定一些参数值,模拟出这样的情况,可以估算出G.723.1语音编解码器所需的最大运算量。

4 语音编解码器的实时实现

  本文所设计的专用芯片(见图3)采用ADSP-2100系列DSP芯片的内核作为其运算核心部分。根据可视电话系统的特点和要求,配置RAM和ROM以及两个串行口,一个可编程定时器,一个主机接口等外围电路。选用ADSP-2100系列DSP芯片的内核,是因为其基本体系结构,包括算术逻辑运算器、乘累加器和桶形移位器三个运算单元,及数据地址发生器和程序序列发生器,特别适于高速数字信号处理和其它数值运算。

 

图3 G.723.1语音编解码器专用芯片结构框图

  这个专用芯片的主要性能指标:
  指令周期为15ns,最大有66MI/s的运算速度;所有指令都能够在一个时钟周期内完成;算术逻辑运算或乘累加运算能与存储器读写指令在一个时钟周期内并行完成;乘累加运算能达到40bit的精度;提供两个有双缓冲区的串行口,具有自动缓冲能力,在进行运算的同时能自动通过串口发送或接收数据。
  根据G.723.1语音编解码算法的要求,针对专用芯片硬件结构的特点,设计了如下方案,不仅作到编码器和解码器在一块芯片上能互不依赖地独立工作,而且编解码器和接口模块也是相互独立的。这样,在设计可视电话系统中的其它功能块时,只要了解语音编解码器的接口模块即可,简化了系统设计的难度。
  表1,2是对G.723.1语音编解码器所用资源的统计结果。

表1 G.723.1语音编解码器运算量

     

速率 编解码器 平均运算量 最大运算量
kbit.s-1 MIPS MIPS
5.3 编码器
解码器 16.7
2.90 17.7
2.97
6.3 编码器
解码器 18.0
2.90 19.3
2.97

表2 G.723.1语音编解码器占用存储器资源

存储区 所用空间大小/kbit
程序RAM 0.5
程序ROM 9.4
数据RAM 2.4
数据ROM 8.6


  可见,在全双工时,最大运算量是(19.3+2.97)MI/s=22.27MI/s,不到专用芯片最大运算量66MI/s的三分之一。
  由于ROM所用的晶体管数目仅是相同容量RAM的1/6,所以RAM用的越少,芯片的体积和功耗都越小。数据码表和程序代码在编解码过程中是固定不变的,均可放在ROM中,而不必占用片上的RAM。由于作了算法优化,G.723.1语音编解码器所用的片上RAM还不到3kbit。
  可见,无论是所用运算量,还是占用的存储器大小,这个G.723.1语音编解码器所用的资源都比较少,利用片上的剩余资源,实现自适应回声抵消,调制解调等功能是绰绰有余的。
第一作者:男,1973年生,博士研究生
*?基金项目:国家“八六三”高技术项目(863-3-T-304-02)
作者单位:清华大学 电子工程系,北京 100084

参考文献

 [1] 杨行峻,迟惠生,唐 昆,等. 语音信号数字处理. 北京:电子工业出版社,1995
 [2] ITU-T. Draft Recommendation G.723.1 Dual rate speech coder for multimedia telecommunications transmitting at 5.3 & 6.3 kbit/s. Ocotober,1995
 [3] ITU-T. Annex A to Recommendation G.723.1 Silence compression scheme for dual rate communications transmitting at 5.3 & 6.3 kbit/s. May,1996
 [4] Analog Devices Inc. ADSP-2100 Family User's Manual. 1991
 [5] Analog Devices Inc. ADSP-2181 Data Sheet. 1994
 [6] ESS Tech. Inc. ES2830 Data Sheet. 1997
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表