IC卡电子语音书
摘要:基于ISD单片语音录放集成电路和大容量IC卡,给出了IC卡电子语音书的设计方法。这种电子语音书具有体积小、重量轻、用电省和成本低的特点。
关键词:IC卡 语音录放 文本转换
所谓"IC卡电子语音书",即读取IC卡中的信息,再将其转换成声音信息,用以取代现有的书籍的电子装置,可供不便于视觉阅读的人群(如老年人、盲人或患者等)使用。
目前,国内市场销售的IC卡的容量可达500K字节,如直接存储语音信号(以8K/秒采样率计),可存储约62.5秒的直接语音信息。虽然所存储的音质比较好,但显然还不能满足一般书藉大量信息存储的要求。笔者以汉字的语音编码(自定义)形式存储,存储一个汉字只占用1.5个字节(12位),则500K字节的IC卡可存储的汉字不少于33.3万个,可连续播放近30小时,足以满足实用要求。
本文给出的设计方案以AT89LV51单片机为微处理机,配以ISD4004作语音支持,采用AT45D041型IC卡作为电子书籍信息存储载体。AT45D041型IC卡是由美国ATMEL公司于近年推出的大容量存储卡(4M位),是目前市场上易于购得的容量最大的IC卡。随着技术的进步,改用容量更大的其它类型IC卡时,只要通讯方式不变,本设计方案仍然适用。即使是通过方式有所改变,亦只需对本设计方案销作修改即可。
该装置的基本工作过程如下:首先将汉字文本文件(如《三国演义》)转换成语音编码文件存储于IC卡中(这一工作由PC机完成);然后,当IC卡电子语音书工作时,播放装置中的CPU将从IC卡中读出语音编码;最后,CPU再按此编码控制ISD单片语音录放电路,播放出相应的语音。
本设计方案是一个经济实用型电子语言书基本设计方案,虽然在音质方面不如语音直接存储的方案,但具有装置成本低廉、体积小巧、用电省和连续播放时间长的优势。
1 硬件设计
播放装置的电气原理图如图1所示。
图1 IC卡电子语音书电气原理图
本设计中设有6个按键,分别为"播放"(BUTTON0)、"快进"(BUTTON1)、"慢进"(BUTTON2)、"快退"(BUTTON3)、"慢退"(BUTTON4)和"停止"(BUTTON5)。
为了能够在下一次开机时从上一次中止处继续播放,需要一个掉电保持的数据存储器,本文中使用了AT24C01A。
为使播放装置的体积和重量尽可能减小,本装置仅使用一节AA型(即5号)电池,因此需采用升压式开关型稳压电源,本文采用的是MAX856。为了节省电池消耗,本装置应具有自动断电的功能。按下"播放"键时,MAX856芯片1脚将抬高为高电平,装置上电。以后每隔16秒由单片机向MAX856芯片1脚发送一个高电平脉冲,让装置继续被供电。当定时时间(60分钟)到时,装置停止向MAX856芯片发送高电平脉冲,则装置自动断电。
本设计中采用的AT45D041型大容量IC存储卡的主要功能和技术参数如下:
(1)具有与SPI兼容的串行接口;
(2)4325376位;
(3)低功耗,动态电流为15mA,静态待机电流为20μA;
(4)最大时钟频率为10MHz。
AT45D041型大容量IC存储卡的引脚及命令请参阅参考文献[1]。图1中IC_CARD的1~8脚对应于AT45D041的1~8引脚;9和10为IC卡座的辅助触点,用于检测IC卡是否已插入。
本设计中采用的ISD4004语音芯片的主要功能和技术参数如下:
(1)16分钟语音录放,最小段长200~400ms(本设计采用300ms);
(2)最大段数2400段;
(3)SPI接口方式。
ISD4004语音芯睡的主要引脚及与单片机的连接方法描述如下:AUD OUT--输出音频信号,为了得到较大的输出,采用功率放大器LM386进行放大再提供给耳机或喇叭。SS--片选,低电平有效,两条指令之间为高电平。MOSI--串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端。MIS0--串行输出端。SCLK--串行时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据传输。上述4个端子分别接单片机的P1.7~P1.4。/INT--中断,本端为漏极开路输出,在任何操作中检测到EOM或OVF时,本端变低并保持;接单片机的INT0。RAC--行地址时钟,漏极开路输出,用于存储管理,接单片机的P1.3。
2 语音码文件的形成
ISD4004语音芯片是按段存放声音的,每段一个音,每个音300ms。但应注意到有许多字具有相同的发音(如ye3:也、冶、野);而有些发音并无汉字(如:wai2、sai3、ka2等)。对于每一个不同的音,又有5个基本的发声(即阴平1、阳平2、上声3、去声4和轻声5)顺序。只要有汉字与之对应(相同发音只取一个),则赋予其一个编码,如此即可得到全部语音码。汉字现有发音共计1311个。设计时,把所有不同的音按英文字节和发声顺序排列,共有1337个(1311汉字+26英文字母)语音码,亦即1337个语音。用1.5个字节可存储一个语音码(亦即1个汉字读音),则4M位的IC卡可存储近349500个汉字语音。语音码确定后,即可将1337个语音按语音码的顺序写放ISD4004语音芯片中。
首先按GB2312-80给出两级汉字的内码与语音码的转换表,参见表1。对于给定的文本文件中的每个字,只需查出其区位码,然后通过查表即可得到其拼音码,最后将拼音码写入大容量IC卡。对于标点符号,将其处理为停顿(不发声)。值得注意的是,有些汉字