微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 运用EP7211实现传呼信息实时语音合成和播放方案设计

运用EP7211实现传呼信息实时语音合成和播放方案设计

时间:01-04 来源:互联网 点击:

.729A算法标准,对数据进行编码。

*将编码后的数据转换为二进制比特流,写入语音库文件中。压缩后数据速率为8Kbps,具有相当于8:1的高压缩率。

用C语言实现这一过程的程序流程如图1所示。

字符语音库的建立是在Windows平台及Visual C++编程环境下实现的,最终压缩处理后数据量的大小为729 950字节,每个字符语音数据的大小是650字节。

2.2 语音合成

当收到个人传呼信息时,语音合成程序首先从指定位置获取传呼信息数据,然后在语音库中查找每个汉字、阿拉伯数字或者英文字符的发音,重组一个数据文件。解码程序对该文件进行解码并且输出原始语音。语音合成流程如图2所示。

语音合成过程首先是当前字符在语音库的定位。对于10个阿拉伯数字和26个英文字符,将其放在语音库开头。这些字符的查找比较方便。汉字是2字节存储,我们依居其区位码来作为语音库中的定位索引。字符语音检索结束后的语音压缩数据作为该字符解码过程的输入。

数据解码过程可以分为参数解码和重构信号后处理2部分。首先要从输入的数据中提取参数符号,对这些符号解码之后,可以获得相应于10ms话音帧的编码器参数。这些参数包括线性预测系数、自适应码本矢量、固定码本矢量以及它们的增益。解码之后的参数用来计算重建语音信号。得到重构语音信号只有通过后处理过程来对该信号进行放大,包括后向滤波、高通滤波以及按比例因子扩大,最后得到原始的语音数据。

字符解码器原理如图3所示。


2.3 PDA系统的体系结构

PDA系统中嵌入式处理器EP7211进行数据处理,传呼解码芯接收传呼信息并进行解码,LCD提供数据输出显示,触摸屏提供用户输入接口,Flash用来存储应用程序和数据,SRAM为程序运行提供内存空间,电源电路为嵌入式处理器和外围设备提供所需要工作电压。

嵌入式处理器EP7211是Cirrus Logic公司专门为低成本、超低功耗的嵌入式应用设计的,包含ARM7TDMI处理器内核和丰富的外围接口。外围接口有CODEC音频接口、SPI串行A/D接口、单色LCD接口、DRAM接口、红外接口、2个PWM接口、实时时钟RTC以及电源检测接口。EP7211的内核电路工作在2.5V,而外围电路工作在3.3V;可根据具体情况对内核的时钟进行动态编程控制,可工作在18、36、49和74MHz。另外EP7211还有3种基本供电模式:正常操作(operating)、空闲(idle)和等待(standby)。在等待模式,主时钟被关断,整个CPU及相关外围(除中断和RTC)也关断,但可通过中断或按钮来唤醒。

系统软件开发平台采用了我们自主开发研制的、专门面向嵌入式应用系统开发的XGW平台。XGW开发平台采用消息驱动机制,是C语言开发。它功能强大、模块化设计、扩展性强、产品升级容易,总体框架如图5所示。

图5全面反应了XGW开发平台的体系结构,包括事件消息驱动机制、内存管理、字符和图形显示输出、图形组件库等。图形组件库中的编辑框、列表框、按钮等为用户应用程序开发提供系统应用编程接口API。不过,XGW平台对于系统硬件的中断响应没有提供统一的入口和出口,需要开发人员单独处理。XGW开发平台的消息分为鼠标消息、键盘消息和定时器消息等3类。

2.4 语音中断服务例程

嵌入式处理EP7211本身提供的外设语音录放Codec(coder/decoder)芯片可以实现语音的录入和播放功能。该模块提供2个独立的16字节长的数据发送和接缓冲区(FIFO),其为全双工模式,数字据点发速率是64kbps。芯片自身提供工作时钟、定时脉冲以及数据串/并和并/串转换功能。编程人员通过设置EP7211相应的控制寄存器使能这些项功能,则每当数据收发缓冲区半慢或者半空时(8字节),芯片自身就会产生一次中断信号供外部处理。理论计算芯片中断速率是1ms/次。

语音播放中断服务例程主要完成的工作是,当产生语音中断时,仍然有数据需要播放,则向语音数据发送缓冲区FIFO中写入指定数据,剩下的工作由Codec芯片本身来完成。中断服务例程ISR的伪代码如下(因为具体实现代码没有通用性,故此处用伪码描述):

void IRQ_Codec_Handler(void)

{

while(检测系统状态寄存器,发现语音芯片数据发送缓冲区FIFO非满)

{

if(已经播放过的语音数据长度给定的需要播放的语音数据长度)

{

向语音芯片发送数据缓冲区FIFO写入指定数据;

调整已经播放过的语音数据长度;

if(已经播放过的语音数据长度>=给定的需要播放的语音数据长度)//结束

{

禁止数据发送缓冲区中断;

复位各相关的全局变量;

程序返回;

}

}

else

{

向语音芯片发送数据缓冲区FIFO写入默认数据

0XFF;

}

}

}

3 试验结构和分析

由于在设计阶段充分考虑过语音合成算法的大运算量和系统的实时性要求,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top