机攮与电子 Sc科ience&Te技ch视nology界 Vision 科技・探索・争鸣 探析语音录放系统的FPGA设计与实现 吴东伟 :, ,J、rp (沈阳师范大学物理科学与技术学院,辽宁沈阳1 10034) 【摘要】在语音录放系统的FPGA设计当中,可以采用ADPCM技术,它是一种音频有损压缩编码方式,它具有文件体积小、音质好的特 点。除此之外,它还具有良好的语音质量以及抗干扰性能。目前在ISDN、卫星通信等领域得到了广泛的应用。笔者针对语音录放系统的FPGA 设计与实现进行了分析与探讨,希望能为广大的相关工作者提供一些参考依据。 【关键词】语音录放;FPGA;设计;ADPCM 32Kbit\s乘以2秒等于64,也就是说64kbit\4bit等于l6个存储单元. 存储器的地址线是14bit。 因为音频信号存在冗余.这些冗余有主观的,也有客观的 如果去 2.2系统的工作过程 掉了人耳无法感知的信息.那么不会对听觉效果产生影响.而且还会 达到压缩的目的 有一种消除冗余的方法非常简单.这种方法是将相 邻两个样本进行相减 然后再根据这个差值进行编码.因为被量化的 对象会在一定程度上减少变化范围.记录信号的容量同时也被减少 了 这样的技术被称为DPCM.也就是差分脉冲编码调制 但是有一种 编码方法比DPCM更加的高效.这种方法就是ADPCM.它不但可以 改变量化步长.而且还能够根据目前的值来进行预测.从而方便下次 进行编码。这样一来.预测值和实际样本之间的误差会小很多 其可以 选择的幅度差的量化比特位数有2bit、4bit以及8bit 在编码器当中,输入样本X(n)和前一次样本x(n一1)的预测信号 图1 基于FPGA的语言编码解码系统图 XP(n—1)求差.这样可以得到差值D(n).D(n)通过白适应量化器之后 1 DPCM算法和ADPCM算法 会得到ADPCM的编码,这个编码用c(n)来表示。为了得到xP(n一 1),必须要首先把编码信号c(n一1)反量化为样本差值Dq(n一1).这个 时候再和前一次的预测样本xp(n一2)相加,最后和送人自适应预测 器.得出预测值为Xp(n一1)。这样解码器非常简单,ADPCM编码C(n) 通过自适应反量化器对差值进行恢复.得出Dq(n).然后和上一次所 输出V(n—1)的预测值求和.这样可以恢复出第n个样本值.这个样本 值用Y(n)来表示。 在通过差值信号得到ADPCM编码的时候.因为量化器会根据差 值信号的幅度自动对步长进行调节.因为它也是自适应的 在信号发 生了很大的变化之后.步长也会随之而增加.在信号的变化很小的时 候.步长也会随之而减少。因此.在ADPCM编码反量化的时候,反量 化器会通过ADPCM编码来选择一个索引.根据这个索引来对步长进 行调整。也因此.ADPCM会采用非均匀的量化。 在本文的试验当中.采用的是IMA ADPCM算法.这种算法非常 简单方便.可以在20MHz的386级PC上对44.1KHz.16bit立体声的 声音实施解码 世界上有许多的游戏在保存声音数据文件的过程中. 都是使用的IMA ADPCM技术 通过采用IMA ADPCM技术来进行压 缩.可以得到很好的声音效果 不仅是在游戏当中,手机铃声和MP3、 WAV录音也采用了IMA ADPCM。这种技术有一个特点.那就是它的 预测器非常简单.它可以直接的用于上一次的预测值Xp(n—1).并且 和反量化值Dq(n)的和作为后面的一个预测值。通俗的说,IMA ADPCM的预测器可以作为一个延迟单位.因为没采用任何其他预测 值Xp(i)来得到更好的预测.因此这种预测器也是非自适应的 2语音录放系统的设计和优化 2.1设计之前需要注意的方面 因为ADPCM算法当前在语音录音这方面得到了非常广泛的应 用.而且这种算法的录音系统会比较容易设计和实现,所以设计拟定 的目标应该是采用ADPCM编解码器来实施录音工作.从而使语音能 够得到网放。 在设计的过程中.要使用4bit ADPCM编码和8bit AD\DA.它的 工作频率大概是8KHz.因此.应该这样来计算PCM信号的码率. 整个编码解码系统主要由五个部分组成.即存储器、编码器、控制 单元、时钟、解码器。播放键和录音键按下之后,控制单元会产生存储 器使能信号cs、地址信号addr以及读写控制信号WE,同时还有编码 器的使能信号En—en.复位信号PL—RST。 它的工作过程应该是这样的.先按下录音键.便开始进行了录音, 在大约1个时钟周期的时间里.编码器会复位。然后存储器和编码器 开始运行.对输入的8bit PCM信号编码放人存储器RAM当中.这时 松开录音键.录音便完成了 在播放录音的时候.先按播放键.播放便开始了,在大约1个时钟 周期的时间里.解码器会复位.然后存储器和解码器会正常运行.对 RAM进行循环读.解码器输出8bit PCM信号,这时松开播放键.播放 录音的过程便结束了 2-3设计编码器和解码器 首先是编码器.将索引修正表和量化步长表进行单独的设计,使 之成为两个模块.这样好方便调用 为了减去预测信号,需要输入 PCM信号.从而得到ADPCM的最高位 得出的ADPCM编码会通过 和刚才量化过程相反的步骤.从而恢复出差值。恢复出来的差值加上 前面的预测值.可以得出新的预测值.对周期进行延迟,方便计算下面 的差值。 其次是解码器.解码器仍然使用量化步长表以及索引修正表。整 个解码和编码的过程是相同的.将ADPCM编码进行反量化.再由低3 位编码修正步长.这3位编码会决定步长能不能和1、2步长、1\4步长 进行累加 它们之间累加的和经过修正后.编码最高位会决定它们的 正负 反量化出来的差值加上前面一个恢复出来的PCM信号.这样可 以恢复出这一次的PCM信号 3总结与体会 本文对基于ADPCM算法的语音录放系统设计进行分析.发现通 过采用FPGA来实现录音的录放功能.得到了非常好的播放效果.但 还需要采取 音整形等方面技术来改进语音的质量。这样才能得到更 好的效果。 8KHz乘以8bit.得出PCM信号的码率为64kbit\s.要计算ADPCM编 码的码率.则应该由8KHz乘以4bit.得出ADPCM编码的码率为 [1]索明何,黄培花,王进宏.基于ISD4003的语音录放系统设计与实现[J].电脑知 32kbit\so这样就可以得出压缩率为64kbit:s\32Kbit\s,其结果为2:1。此 识与技术:学术交流.2008(8):823—824. 外.因为可以采用4bit ADPCM编码.每一秒需要32Kbit\4 bit等于8K [2]张战鸣,尹耕钦.基于STC89C51RD的语音录放系统设计叫.自动化技术与应 【参考文献】 个存储单元.平均每一个存储单元4bit.也就是4KByte的存储空间 用,2012(8):88—90,101 因为设计当中使用了FPGA.它的内部仅仅只有90Kbit的存储空 间 而且还需要为算法当中使用的修正表以及步长表留一部分存储的 空间.所以计划录音的时间为2秒。这时录音编码会占据一定的空间. [责任编辑:杨玉洁] 作者简介:吴东伟(1989 09.24一),男,内蒙古扎赉特旗人,沈阳师范大学物理科学与技术学院,电子信息工程本科生,学号10029006。 science&Techn。 。gy Visi。n科技视界l 79