论文部分内容阅读
嵌入式系统面世以来就得到了迅速的发展,语音的应用在嵌入式系统也是常见的,由于嵌入式系统的存储空间的有限,嵌入式系统中语音软件层的编码压缩已成为必然趋势。Speex是一款基于码激励线性预测算法(CELP)的开源语音编解码算法,由于它具有编码质量高、语音速率低、可变比特率、回声消除、语音分段传输等优点,因此非常适合作为语音编解码算法。以往的设计都是将Speex应用于PC机上的语音处理,如网络语音传输等等,以减小所需的传输带宽,本文将Speex成功应用于嵌入式系统中,并且充分利用了其语音编码压缩这一特点,成功的解决了嵌入式系统中语音录制后占用内存空间过大这一问题。本文详细的分析了Speex的编解码原理,并通过仿真研究得出它非常适合作为嵌入式语音编码的算法。本课题的设计是在ARM平台下的语音编解码系统的设计。总体分为语音采集模块、语音播放模块、语音数据存储模块和USB通信模块四大核心模块。本系统选用了意法半导体公司生产的STM32F103作为主控芯片,它具有极大的性价比。语音采集模块和语音播放模块充分利用了speex在语音编解码方面的强大功能,它们利用了STM32F103上集成的AD和PWM两个功能模块,实现了语音数据的最大化存储和最真实还原解码,其过程采用两个160字节大小的缓冲区,编码过程中一个缓冲区用来装载ADC读取的采样值,另一个缓冲区用来编码已经存储的采样值;解码过程中一个缓冲区用来装载PWM占空比来播放语音数据,另一个缓冲区用于解码已存储的语音数据。语音数据存储模块是通过片外扩展Flash存储器:M25P16,来存储已编码的语音数据,它通过SPI总线与STM32F103通信。USB通信模块实现了本系统与PC机的通信,使M25P16上的语音文件得以上传到PC机,进行下一步的处理。本文还在M25P16中搭建了FAT12文件系统,使存储在M25P16中的语音数据以文件的形式上传到PC机中,可以在Windows系统中直接读取语音数据,而不需要再以二进制的形式从M25P16中的扇区读取。最后本文从系统性能优化的角度,详细的介绍了系统软件优化的方法和例子,本文的软件优化从软件算法的优化、程序结构的优化、数据结构层的优化、编译器的优化、Speex算法的优化等方面入手,对系统软件进行以使系统软件运行速度更快,占用空间更小。