基于SPCE061A的通用汉字文本播音系统
[10-10 20:36:41] 来源:http://www.88dzw.com 电子制作 阅读:8205次
文章摘要:用ResWriter工具V2.0可将压缩后的1 220个S480语音数据文件烧录入SPR4096A中。ResWriter根据文件总数和每个文件大小,在最低地址生成一个语音资源地址索引表。索引表分两大部分:第1部分14字节,是整个语音资源的总信息,包括4字节的标识码SPRW(Sunplus Read Write)4字节的起始地址、4字节的结束地址和2字节的文件总数;第2部分为每个文件的信息,共1 220项,分别对应一个文件,每项12字节,包括4字节的长度、4字节的起始地址和4字节的结束地址。所以此索引表的大小为14+12×1220=14 654字节。要根据文本中每个汉字内码找到语音数据
基于SPCE061A的通用汉字文本播音系统,标签:电子小制作,http://www.88dzw.com用ResWriter工具V2.0可将压缩后的1 220个S480语音数据文件烧录入SPR4096A中。ResWriter根据文件总数和每个文件大小,在最低地址生成一个语音资源地址索引表。索引表分两大部分:第1部分14字节,是整个语音资源的总信息,包括4字节的标识码SPRW(Sunplus Read Write)4字节的起始地址、4字节的结束地址和2字节的文件总数;第2部分为每个文件的信息,共1 220项,分别对应一个文件,每项12字节,包括4字节的长度、4字节的起始地址和4字节的结束地址。所以此索引表的大小为14+12×1220=14 654字节。
要根据文本中每个汉字内码找到语音数据地址,还必须有汉字读音序号索引表。此表在语音库制作的同时生成,共6 763项,按GB 2312顺序每项对应一个汉字在1 220个读音文件的序号,用2字节表示,总大小为13 526字节,占用7个扇区。另编一个小程序,将此表写入Flash存储器最底部的7个扇区,即从地址0x7C800开始。Flash存储器还剩59个空白扇区,可供其他数据写入。
汉字读音序号索引表、语音资源地址索引表和语音资源数据的总长度为392 kB,存储在SPR4096A中,结构如图2所示,所有地址和长度数据均为高字节在前,低字节在后,用十六进制表示。当然,汉字读音序号索引表也可存放在SPCE061A的内部Flash存储器中,这样编程较简单,但会多占用程序存储器空间。
3软件流程
3.1汉字语音资源地址的计算
由汉字机内码计算汉字语音资源的起始地址和结束地址分为以下2步:
a)由公式:(机内码高字节WH-0xB0)×94+(机内码低字节WL-0xA1),计算出汉字在汉字读音序号索引表中的偏移值(设为M),在0x7C800+2*(M-1)地址处查得汉字读音序号(设为N)。
b)由汉字读音序号N,在语音资源地址索引表中从0x12+0xC*(N-1)地址开始查得该汉字的语音资源数据的起始地址和结束地址。
3.2汉字语音资源播放
以语音资源的起始地址和结束地址为参数,调用SACM_S480中相应的API函数就可实现语音播放,流程如图3所示。
凌阳语音播放有自动和手动两种API,由于语音资源存储在外部SPR4096A中,需先读出并存入内部RAM中才能解码,故只能采用手动方式播放语音,初始化、读取资源数据、填充语音队列、解码、停止播放等都用相应的API实现,函数原型在流程图中有详细的表示。
采用Compress Tool工具压缩的S480格式的语音资源带有48字节的文件头,所以语音资源首地址还要加48跳过此文件头,然后调用两个初始化函数进行解码列队和解码器的初始化,最后进入循环。手动或自动播放方式选择的初始化在主程序中进行,解码器初始化就是选择D/A通道,可用两个通道之一,也可两个通道全用。
在循环中首先读取语音队列状态,返回值0或1表示语音队列空或满。若语音队列不满,判断地址是否超出语音资源的结束地址,若未超出结束地址,则从SPR4096A取语音资源,将语音资源填入语音队列中等待解码处理,地址指针指向下一个地址单元;若已经超出结束地址,则退出填充队列循环。在解码播放前要读取语音播放的状态,返回值1或0表示正在播放或已播放结束,若播放已结束,则调用停止播放函数,结束循环。
实际的语音播放是在TMA_FIQ中断源的中断服务子程序中调用函数F_FIQ_Service_SACM_S480实现的,它将解码后的数据送人D/A通道播放。中断子程序的编程、播放函数的详细介绍和其他相关函数如音量控制、暂停播放、恢复播放等见文献[1]。
3.3主程序流程
主程序流程如图4所示,对硬件及播音函数初始化后,循环执行语音数据解码播放和其他操作。文本输入并写入循环缓冲区的操作在串行口中断子程序中进行。为了不互相影响,这3个操作都不能占用太长时间。
《基于SPCE061A的通用汉字文本播音系统》相关文章
- › 基于SP66?8的手电筒LED照明电路实现
- › 基于SPCE061A的车载DVD播放器设计与实现
- › 基于SPCA751A的MP3播放器的研究与实现
- › 基于SPMC75F2413A单片机的步进电机加减速控制
- › 基于SPI总线的高精度压力测试系统(高精度集成压力信号调理器MAX1
- › 基于SPCE061A的通用汉字文本播音系统
- 在百度中搜索相关文章:基于SPCE061A的通用汉字文本播音系统
- 在谷歌中搜索相关文章:基于SPCE061A的通用汉字文本播音系统
- 在soso中搜索相关文章:基于SPCE061A的通用汉字文本播音系统
- 在搜狗中搜索相关文章:基于SPCE061A的通用汉字文本播音系统