您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于G.729语音压缩编译码算法的嵌入式语音存储系统设计 正文
基于G.729语音压缩编译码算法的嵌入式语音存储系统设计

基于G.729语音压缩编译码算法的嵌入式语音存储系统设计

点击数:7317 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   嵌入式系统-技术

    f.JPG

    端口初始化包括L3总线接口和I2S接口的设置,首先将与L3接口相连的通用I/O口GPB2、GPB3、GPB4设置为输出模式,然后设置与I2S控制器输出信号相关的GPIO引脚,将GPE0~GPE4这5个引脚设置为I2S接口的信号模式。UDA1341TS芯片初始化部分包括L3接口时序和协议的模拟,完成采样速率、数据格式等参数的设置。系统采样速率为8 kHz,使用时钟为384 fs,数据输入格式设置为MSB-JustifLED模式。接下来通过“audio_init_dma()”申请DMA通道,输出音频缓冲区的DMA通道设为通道2,输入音频缓冲区的DMA通道设为通道1。若初始化失败会返网相应的错误标志,初始化成功后方可进行后续操作。

    4,2 IDE接口函数

    硬盘驱动程序实现分为设备初始化、打开设备、设备I/O操作和释放设备等几部分。要完成硬盘数据交换的工作,就需要对寄存器进行频繁的读写操作,为了方便在程序中的调用,把这些和硬件操作密切相关的操作都写成了接口函数,其函数说明略——编者注。

    4.3 系统主程序流程

    主进程开始后首先初始化采样参数,包括采样速率、采样点数、数据存储格式及采样通道,若初始化不成功会返回相应的错误标志,并作出相应的出错处理,成功后可继续下一步操作。然后通过键值判断数据的存储区是选择Flash还是选择硬盘,并初始化相应的存储区,这是保证系统在没有外扩硬盘的情况下也能正常运行,只不过是数据存储量较小而已;若选择操作硬盘,但硬盘未连接,仍然会返回相应的错误标志,并进入出错处理函数继续执行。接下来根据键值判断是否进行压缩处理,若进行压缩处理,则相应的编解码标志置位;根据该标志确定是否启动编解码进程,即系统能存储未压缩的数据,也能存储压缩后的数据,可以根据需要进行适当的选择。启动A/D转换进程并进行语音数据的存储,相当于录音的过程;数据存储完成后,即录音结束后,启动D/A转换进程进行语音播放。录音和播放可以同时进行,为了测试方便,这里把这两个过程分离开来。

    总的来说,系统主进程创建了A/D、D/A转换进程和编解码进程,结合Linux的共享机制和进程间通信等手段,实现了语音信号的采集、压缩、存储、回放等环节。

    系统主程序流程图略——编者注。



www.55dianzi.com

    5 系统测试与结果分析

    系统测试内容主要包括语音质量、语音存储时长、语音压缩效率三个方面。语音质量是指经传输、处理后音频信号的保真度,是衡量语音编码算法优劣的关键指标。其评价方法分为主观评定和客观评定两类。系统采用的主观评定方法是平均意见得分(Mean OPINion Score,MOS),即以主观打分来度量,其评价标准分为5个等级,MOS评价标准如表2所列。客观评定选择信噪比为评价指标,信噪比(Signal Noise Ratio,SNR)定义为信号与量化噪声的方差的比值,计算公式为:

    g.JPG

    h.JPG

    其中i.jpg分别为信号方差和噪声方差。通过测试系统的主观评价指标MOS可以达到3.8分,接近于电话语音质量,与原始语音的区别不明显;系统的客观评价指标SNR为58 dB,噪声的影响在可以接受的范围内。语音时长的统计,依赖于扩展IDE硬盘的容量,测试选择3G容量的硬盘;记录未经压缩的语音数据为750个小时,而记录压缩后的语音数据可达7500多个小时;可见语音压缩的效率可以达到10多倍,已达到理想的效果。



上一页  [1] [2] 


本文关键字:嵌入式  语音  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术