‘壹’ 文字转语音芯片(单片机用)
45Microcontrollers & Embedded Systems2002.12
新器件新技术 NEW PRODUCT & TECH
用EP7211实现传呼信息实时语音合成和播放
■ 郑州解放军信息工程大学 胡泽明 王鹏
摘 要
关键词
阐述在一款集成传呼功能的二合一PDA系统中,使用嵌入式处理器EP7211实现个人传呼信
息的实时语音合成和播放的功能,主要包括字符语音库的建立,字符语音合成算法和Codec
语音中断服务例程等3部分.
PDA G.729 语音库 语音合成
引 言
PDA(Personal Digital Assitant,个人数字助理)
是近年来继寻呼机和移动电话之后,在国内市场迅
速崛起的便携式电子产品.就其扩展意义来讲,它
能够集成移动计算,电话和网络等多种功能.根据
不同的应用需求,它可以管理个人信息,提供名片
存储和日程安排,也可以接收各种寻呼信息(如股
市,天气预报等).如果是集成通信模块,还可以
作为移动电话使用,进行无线网络互联.广义的
PDA包括简单的电子记事本,电子辞典和功能强大
的掌上电脑,它们的主要区别表现在操作系统,存
储能力,运算速度和数据交换能力等方面.
目前国内传统PDA产品经过几年的高速发展
后,市场基本饱和,销售额出现负增长.不过由于
PDA产品的灵活性,有针对性的行业应用作为一个
新亮点,开始为人们所关注.经过行业应用改造后
的PDA产品,已经在国内市场大显身手.文曲星
展现超强的语言翻译能力,比较适合于大学生和语
言翻译者使用;蓝火系列能实时接收股市信息和
专家点评,适合工薪阶层的炒股者.国家信息产业
部已经鼓励PDA产品在交通,警务,保险等领域
的行业应用和推广.
分析市场需求,我们研发了集成传呼功能的,
专门面向铁路交通行业应用的铁路交通信息系统
PDA.本PDA系统除了具备传统PDA的个人名片
管理和辞典检索等功能外,同时提供交通行业应用
的民航航班查询,铁路列车时刻表查询等功能.
本PDA的寻呼系统实现如下功能:能够通过寻
呼对列车时刻表,列车晚点信息,列车剩余票额,
股道信息等行业数据进行动态更新.作为另一个特
色,当接收到个人寻呼时,能够将寻呼内容实时地
转换成语音并播放.
下面重点介绍本PDA系统中使用嵌入式处理
器EP7211实现个人寻呼内容的实时语音转换和播
放.该功能的实现包含前后相关的3个部分:字符
语音库的建立,字符的语音合成算法和Codec语音
中断服务例程.
1实现条件和要求
PDA属于嵌入式应用系统,其同一般PC机有
很大差别.硬件方面,嵌入式处理器基于RISC体
系结构,一般工作频率在几十MHz,甚至更低;系
统内存容量一般在几百KB~几MB之间;一般使用
容量小的ROM或者Flash作为硬盘来存储可执行程
序和数据.软件方面,PDA系统一般有专用的嵌入
式操作系统和软件开发调试移植环境.
个人传呼信息的特点是单条传呼信息长度变化
较大,20~50个字符不等.最为常见的是"请回电
话***";传呼信息涉及到的字符数量较大,字符
语音合成时运算量大,单字符合成后语音数据占用
的存储空间多;需要事先建立字符语音库等.
由于具体硬件环境的限制,传呼信息的特点和
语音合成的要求,该功能能够实现的前提有:语音
库占用的空间小;字符合成时速度要快;采用前台
进行字符语音合成时,以后台中断方式进行合成语
音的播放来保证其实时性和连续性.
2具体实现
下面分别介绍字符语音库的建立,字符语音合成
算法,本PDA系统的框架结构和语音中断服务例程.
2.1建立字符语音库
我们选用G.729语音压缩编码标准来建立语音
库.该标准采用的算法是共轭结构的代数码激励线
462002.12
新器件新技术 NEW PRODUCT & TECH
性预测(CS-ACELP),是基于CELP(码激励线性预
测)编码模型的算法.这种编码规范的严格性使性
能达到或超过了32 Kbps的G.726 ADPCM编码,具
有很高的语音质量;同时,它是在语音信号8 KHz
取样的基础上得到16 bit线性PCM后进行编码的,
压缩后的数据速率仅为8 Kbps,具有相当于8:1的
高压缩率.其算法延迟少于16 ms.由于G.729编解
码器能够实现很高的语音质量和很低的算法延时,
因此被广泛地应用.
字符语音库是一个单字发音语音数据的集合,
各段数据之间相互独立,不具有相关性.语音库包
含了国标一,二级字库中的所有6763个汉字,10个
阿拉伯数字和26个英文字符的标准普通话语音数
据.每个汉字或字符发音时长为0.65 s,采用8 KHz
抽样频率,使用了G.729A语音编码算法对上述的语
音数据进行压缩,压缩后的数据速率为8 Kbps,相
当于具有8:1的高压缩率.在汉字中,同音字占了
相当大的比例,而在语音合成中对于同音字的处理
是没有区别的,故近7000个汉字,我们只存储1123
个不同的发音.经过同音字处理和采用G.729A标准
压缩字符语音数据,则最终建立的语音库文件大小
为729 950字节,完全符合本PDA系统的数据存储
要求;否则,语音库数据量太大,本PDA系统不
能接受!
建立一个语音压缩数据库的具体步骤如下:
◇ 将数字和常用汉字的标准发音独立地录入到
数据文件中,作为基础数据.使用cooledit2000软
件完成语音的录入.
◇ 对于输入数据,按照每帧10 ms(80个样点)
的长度,将A_law语音通过简单换算变成16 bit PCM
数据,作为编码算法的输入.
◇ 按照G.729A算法标准,对数据进行编码.
◇ 将编码后的数据转换为二进制比特流,写
入语音库文件中.压缩后数据速率为8 Kbps,具有
相当于8:1的高压缩率.
用C语言实现这一过程的程序流程如图1所示.
字符语音库的建立是在Windows平台及Visual
C++编程环境下实现的,最终压缩处理后数据量的
大小为729 950字节,每个字符语音数据的大小是
650字节.
2.2语音合成
当收到个人传呼信息时,语音合成程序首先从
指定位置获取传呼信息数据,然后在语音库中查找
每个汉字,阿拉伯数字或者英文字符的发音,重组
一个数据文件.解码程序对该文件进行解码并且输
出原始语音.语音合成流程如图2所示.
语音合成过程首先是当前字符在语音库的定
位.对于10个阿拉伯数字和26个英文字符,将其
放在语音库开头.这些字符的查找比较方便.汉字
是2字节存储,我们依据其区位码来作为语音库中
的定位索引.字符语音库检索结束后的语音压缩数
头文件,全局变量,函数原型的说明
输入语音文件及压缩后的码文件名
初始化编码器,包括滤波器状态的初始
化及语音,激励等缓冲区的初始化
语音文件是否结束
读1帧语音(80点)(A_Law)
转换成16bit线性PCM
将参数码字转成串行码
流,再转成码字codeword
写文件
结束
编码主函数Coder_ld8a()
Y
N
图1 字符语音库的建立流程图
查找语音库,将寻呼文字信
息替换为压缩语音文件
解码器初始化
码文件是否结束
读取1帧数据,并
转换成二进制码流
解码主函数
输出数据变为A_LAW信号
语音播放
结束
Y
N
图2 语音合成流程图
47Microcontrollers & Embedded Systems2002.12
新器件新技术 NEW PRODUCT & TECH
据作为该字符解码过程的输入.
数据解码过程可以分为参数解码和重构信号后
处理2部分.首先要从输入的数据中提取参数符
号,对这些符号解码之后,可以获得相应于10 ms
话音帧的编码器参数.这些参数包括线性预测系
数,自适应码本矢量,固定码本矢量以及它们的增
益.解码之后的参数用来计算重建语音信号.得到
重构语音信号只有通过后处理过程来对该信号进行
放大,包括后向滤波,高通滤波以及按比例因子扩
大,最后得到原始的语音数据.
字符解码器原理如图3所示.
2.3PDA系统的体系结构
PDA系统的硬件体系结构如图4所示.
PDA系统中嵌入式处理器EP7211进行数据处
理,传呼解码芯片接收传呼信息并进行解码, LCD
提供数据输出显示,触摸屏提供用户输入接口,
Flash用来存储应用程序和数据,SRAM为程序运行
提供内存空间,电源电路为嵌入式处理器和外围设
备提供所需要的工作电压.
嵌入式处理器EP7211是Cirrus Logic公司专门为
低成本,超低功耗的嵌入式应用设计的,包含
ARM7TDMI处理器内核和丰富的外围接口.外围接
口有CODEC音频接口,SPI串行A/D接口,单色LCD
接口,DRAM接口,红外接口,2个PWM接口,实
时时钟RTC以及电源检测接口.EP7211的内核电路
工作在2.5 V,而外围电路工作在3.3 V;可根据具
体情况对内核的
时钟进行动态编
程控制,可工作
在18,36,49和74
MHz.另外EP7211
还有3种基本供
电模式:正常操
作(operating),
空闲(idle)和等
待(standby).在
等待模式,主时
钟被关断,整个
CPU及相关外围
(除中断和RTC)
也关断,但可通
过中断或按钮来
唤醒.
系统软件开发平台采用了我们自主开发研制
的,专门面向嵌入式应用系统开发的XGW平台.
XGW开发平台采用消息驱动机制,是C语言开发.
它功能强大,模块化设计,扩展性强,产品升级容
易,总体框架如图5所示.
图5全面反应了XGW开发平台的体系结构,包
括事件消息驱动机制,内存管理,字符和图形显示
输出,图形组件库等.图形组件库中的编辑框,列
表框,按钮等为用户应用程序开发提供了系统应用
编程接口API.不过,XGW平台对于系统硬件的中
断响应没有提供统一的入口和出口,需要开发人员
单独处理.XGW开发平台的消息分为鼠标消息,键
盘消息和定时器消息等3类.
2.4语音中断服务例程
嵌入式处理器EP7211本身提供的外设语音录放
Codec(coder/decoder)芯片可以实现语音的录入和
适应码
向量解码
增益解码
固定码
向量解码
结构激励
MA码增
益预测
11
,GBGA
22
,GBGA
)(nv
间隔延时
p
g^
^
c
g^
11
,CS
22
,CS
)(zP
)(nc
编码序号
LP综合
滤波器
)(nu
后滤波器
)(^ns
高通上标定
)(nfs
LSP解码内插值)(^zALSF
LSP序号
3210
,,,LLLL
每帧
每子帧
210
,,PPP
图3 字符解码原理框图
天线
LCD
触摸屏
时钟,复
位,唤醒射频输入
FlashSRAM电源管理
串行口
红外口
传呼解
码芯片嵌入式
处理器
EP7211
收音设备
语音录放电路
图4 硬件结构
482002.12
新器件新技术 NEW PRODUCT & TECH
播放功能.该模块提供2个独立的16字节长的数据
发送和接收缓冲区(FIFO),其为全双工模式,数
据收发速率是64 kbps.芯片自身提供工作时钟,定
时脉冲以及数据的串/并和并/串转换功能.编程
人员通过设置EP7211相应的控制寄存器使能这些项
功能,则每当数据收发缓冲区半慢或者半空时(8
字节),芯片自身就会产生一次中断信号供外部处
理.理论计算芯片中断速率是1 ms/次.
语音播放中断服务例程主要完成的工作是,当
产生语音中断时,仍然有数据需要播放,则向语音
数据发送缓冲区FIFO中写入指定数据,剩下的工
作由Codec芯片本身来完成.中断服务例程ISR的
伪代码如下(因为具体实现代码没有通用性,故此
处用伪码描述):
void IRQ_Codec_Handler(void)
{
while(检测系统状态寄存器,发现语音芯片数据发送缓
冲区FIFO非满)
{
if(已经播放过的语音数据长度 = 给定的需要播
放的语音数据长度) //结束
{
禁止数据发送缓冲区中断;
复位各相关的全局变量;
程序返回;
}
}
else
{
向语音芯片发送数据缓冲区FIFO写入默认数据
系统调用
通用开
发控件字符输出图形输出
内存管理用户自
定义控件
事件消息驱动
硬件中断
执行
ISR
中断返回
硬件中断
执行
ISR
中断返回
用户级应用程序
图5 XGW平台的软件体系结构
0XFF;
}
}
}3试验结果和分析
由于在设计阶段充分考虑过语音合成算法的
大运算量和系统的实时性要求,故我们在具体实
现的时候也采取了一些措施,比较突出的有:用
ARM汇编语言来实现关键性的函数代码;语音合
成时提高处理器EP7211的工作频率(处理器正常
工作频率是18 MHz);对于一些常用的三角函数计
算,采用查表的方式等来加快程序执行速度.在
PDA样机测试中,单字符合成时间在650 ms左右,
基本上能够满足实际应用需求.数据语音库经过
处理之后,占用了729 560字节也能够满足本PDA
系统的存储要求.
当PDA系统收到1条个人传呼信息时,在语音
库的支持下,立刻启动语音合成算法,逐个进行字
符语音合成.当第1个字符语音合成结束后,立刻
启动语音中断服务例程进行语音播放.这样收到的
个人传呼信息,在前台逐个字符解码时,其后台语
音播放也在进行.根据实际测试参数,基本上满足
了系统的实时性要求.
从一定角度看,单字符650 ms的语音合成时间
基本能够满足实际应用需要,但还是希望能够进一
步减小这个值.这由于我们对ARM处理器的使用
还处在研究阶段.ARM本身提供了16位的Thumb
指令集和32位的ARM指令集,而且两者在某些方
面表现出较大差别.一般来讲,Thumb代码长度是
ARM代码长度的65%,而执行效率要比后者高出
60%.但在某些方面,32位的ARM指令集也会表
现出其优于16位Thumb指令集的强大功能;同时
该处理器系统支持ARM指令集和Thumb指令集混
合编程模式.随着对二者差别和各自优势的深入理
解,结合本系统的硬件体系结构,采用有效的指令
集混合编程模式将会使程序执行效率进一步提高,
从而使实时性得到进一步加强.
参考文献
1Cirrus Logic公司. EP7211数据手册
2马忠梅. ARM嵌入式处理器结构与应用基
础. 北京:北京航空航天大学出版社,2002
3Gibson Jerry D,等. 多媒体数字压缩原理与
标准. 李煜晖等译. 北京:电子工业出版社,2000
‘贰’ 有关单片机英文文献的
TC8831F系列芯片的语音复读机的改进方案
文章作者:北京清华大学电子工程系 温仲文
文章出处:电子技术应用
摘要:提出了一种对基于TC8831F系列芯片的数字语音复读机进行改进的方案.该方案能够以很低的软硬件
代价,将复读机的语音记录时间延长到原来的4倍,或者在不缩短语音记录时间的情况下大大降低复读机的
制造成本,非常值得在使用此系列芯片的语音产品中推广应用.
关键词:专用语音芯片 语音复读机 DRAM 存储器容量扩展
TC8831F系列芯片是东芝公司生产的一款低成本高性能的数字语音录放专用集成电路.TC8831F芯片是一块
数模混合的大规模集成电路,其结构框图如图1所示.内部集成了构成典型数字语音录放系统所需要的大部分功能电路,包括
两级可选用的总增益达46dB的话筒信号放大器,A/D,D/A,ADPCM压缩及解压缩电路(支持的比特率为32/
22/16/11kbps可选) 熏输出语音带通滤波器,外接DRAM接口电路 熏MCU控制单元接口电路.使用该芯片,
只需外接DRAM,MCU和输出端的音频功放电路等少量电路就可实现一个典型的录放音系统.该芯片具有功能齐全,应用
电路结构简单,操作控制方便,功耗低以及使用廉价的DRAM作为语音存储介质等优点,因此成本低廉,被广泛应用于对成
本非常敏感的一些海量生产的民用产品中,如语音复读机,电话答录机,留言系统等.
TC8831F芯片的DRAM接口最多可以支持4片4M×1bit的DRAM(或者烧录好的ROM)作为语音存
储介质.在高质量的32kbps采样速率下,能够记录语音大约512s,熏所以市场上的这类语音复读机的录音时间大部分
都是500s上下.为了降低成本,延长语音记录时间,增强产品在市场上的竞争力,应厂家要求,我们对基于TC8831
F的复读机的电路作了改进,以极小的硬件代价和很小的控制软件修改量,成功地将TC8831F外接DRAM的接口能力
从4片4M×1bit 扩展到4片16M×1bit(DRAM选用日立公司的HM5116100).
1 硬件修改工作
TC8831F外接4片4M×1bit DRAM时的电路连接如图2所示.4M×1bit DRAM的地址总线有2
2位,分为高位地址即行地址(Row address)和低位地址即列地址(Column address),两者通过
分时复用,共用11根引脚A0~A10,每片DRAM的寻址范围为000000H~3FFFFFH,各片DRAM通过
不同的CAS信号线来区别(见图3).在TC8831F内部,4片DRAM联合寻址,因此寻址范围是000000H~
FFFFFFH.相邻存储器芯片之间,系统自动切换,无需用户干预.针对不同的系统读写速度要求,DRAM有多种不同
的读写模式和存储单元的数据刷新方式.在本系统中,由于所需要的数据速率非常低,所以读写模式是最简单的普通读写模式,
也就是读写每一位数据之前发送完整的地址信号,包括行地址和列地址,然后进行读写;而刷新模式采用cas-befor
e-ras方式,并将刷新脉冲穿插到读写时序中间.图3示出了TC8831F的DRAM接口的刷新,写数据和读数据的
控制线时序图(数据时序略).
将TC8831F外接和DRAM从4片4M×1bit 扩展到4片16M×1bit之后,存储器的寻址空间增加到
原来的4倍,因此DRAM的地址将增加两位,也就是说增加了一根地址引脚.4片16M×1bit的DRAM除了A11
引脚外,其它引脚的连接和图2所示的4片4M×1bit的连接完全相同.对于A11引脚,需设计适当的逻辑控制电路以
生成所需的时分控制信号,用以模拟该地址线的寻址控制信号.经过分析,采用MAX plus II仿真以及实际电路验证,
A11引脚的控制信号可以通过图4所示的简单电路扩展得到.16M×1bit的DRAM的地址线有12根,对应着24
位的地址ad0~ad23,按照DRAM的地址线分时复用的原则,ad12~ad23是高位地址线(行地址),ad0~
ad11是低位地址线(列地址).但由于TC8831F在读写DRAM单元时使用普通的读写模式(区别于快速读写模式),
读写每一位数据之前都发送完整的地址信号,即先输出行地址,然后输出列地址,这样就为用简单的逻辑电路实现存储器寻址
范围的扩展提供了可能.
扩展地址线仿真波形如图5所示.XIN,/RAS,/CAS分别是该芯片的时钟源,DRAM行选通信号,DRAM
列选通信号,PAGE0,PAGE1是由MCU输出的页面选择信号.在"PAGE1,PAGE0"分别为"00","0
1","10","11"时,A11引脚的控制信号在/RAS,/CAS的下降沿到来之前有效地建立了复用的地址信号
00,01,10,11,这个信号就是访问不同的空间所需要的地址信号.扩展之后,访问DRAM的逻辑地址到DRAM
的实际的物理地址的映射关系如图6所示,上面的是逻辑地址,下面的是物理地址.映射之后,DRAM的A0~A10引脚
对应着存储单元的逻辑空间低22位地址.因此在引脚A11的信号确定的情况下,就将由引脚A0~A10所能访问的每片
DRAM上的各个分散的物理存储空间映射成连续的逻辑空间,每片DRAM对应的这个连续的逻辑空间大小就是4M×1b
it,相当于扩展前的一片DRAM,4片16M×1bit DRAM对应的4片逻辑连续空间的总和与使用四片4M×1b
it DRAM时提供的空间将是完全一样的.改变A11的控制信号,也就是通过MCU改变PAGE0,PAGE1,将获
得4块不同的存储空间,从而完成最终的存储空间的扩展.
图4 扩展地址线电路原理图
经过扩展之后,DRAM的刷新脉冲(Cas-Before-Ras Mode)间隔不变,但是芯片的容量增加到原
来的4倍;每一个刷新脉冲刷新一行信息,所以刷新周期延长到原来的两倍.但是延长之后的刷新周期仍然在DRAM的许可
范围之内,完全保证了DRAM内数据的安全性.实际上,在使用具有待机模式的TC8832F芯片的系统中,采用这种改
进方案,虽然待机情况下刷新周期已经超过了DRAM的芯片手册的规定值,但是经过大量的长时间的样机测试,证明该方案
仍然是可靠的.
2 软件修改工作
上面介绍的存储空间扩展方法,除了PAGE0,PAGE1外,无需来自MCU的任何干预,工作情况和以前完全一样.
MCU的控制程序所需要做的修改工作就是产生所需要的PAGE0,PAGE1控制信号,并作记录.也就是在录音开始时,
输出某PAGE0,PAGE1信号,在语音存储空间用完的情况下,自动地通过PAGE0,PAGE1将存储空间切换到
下一个页面,直到录音结束或者所有存储空间耗尽为止.然后记录下该段语音信息的开始地址,结束地址(包括PAGE0,
PAGE1).放音的时候,读出地址信息,然后设定语音存储空间的的起始地址(包括设定PAGE0,PAGE1),就
可以放音了.如果语音存储空间跨页面,则在当前页面放音完毕之后自动切换到下一个页面(修改PAGE0,PAGE1),
继续放音,否则停止放音.也就是说,只需要在原来的控制程序的基础上增加PAGE0,PAGE1的控制部分和信息存储
部分.
3 应 用
利用上述方案对某语音产品实现了成功的改进.改进后的产品在高质量的32kbps的比特率下,语音记录时间延长到
35分钟;使用较为满意的16kbps的比特率,录音时间延长到大约70分钟.而这种改进工作所付出的硬件成本非常小,
控制软件则是在原来的基础上作了非常小的修改.
还可以看到,如果不需要延长语音记录时间,使用这种方法可以将外接的存储器减少到一片16M×1bit,这样就可
以减少芯片数量,降低功耗,缩小PCB面积和线路板体积,对海量生产的复读机等语音产品带来非常明显的经济效果,值得
推广使用
………………
……
…
‘叁’ 单片机控制语音模块
单片机控制语音模块功能特点:
1、语音内容存储在外挂SPI FLASH中,可重复擦写100000次以上,保存时间超过100年;
2、主控芯片采用九芯高性能语音DSP,NV020作为主控;
3、简洁易用的操作方式(三线串口);
4、可以存入WAV、ADPCM格式的文件,语音可以组合播放以节省存储空间;
5、两种输出方式(DAC以及PWM输出,DAC可外接功放输出,PWM可直接驱动0.5W喇叭);
6、可外挂1Mbit~128Mbit容量SPI FLASH闪存,语音时长40秒~2560秒(6K采样率计算);
7、灵活的分段放音操作,可方便地控制任意段语音播放,语音组合极大地节省空间;
8、音质好、性能高,物美价廉;
9、 有忙状态电平信号指示;
10、内置DSP高速处理器,响应时间极短,接收完指令到播放,响应时间控制在微秒级范围;
11、电压工作范围2.7V~3.6V;
12、静态电流30uA,可满足大多数低功耗场合。
‘肆’ 我在做毕业设计 需要将单片机采集来的语音数据压缩 想用ADPCM 但是单片机采集的是12位ADC
关键不是ADC的位数,12位已不错了,人家过去有8位的声卡,用单片机采集音频的弱点在采集速度,采集频率能否达到44.1KHZ,这么高的频率,每秒产生的数据量是很大的,内存肯定不够用,要保存在SD卡或FLASH上,也要花费时间,32位ARM也很吃力,因此不宜直接采用单片机进行音频采集,需用专用录音或播放芯片才行,如原子钟的单片机开发板采用WM8978实现录放音功能的