访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
文字转发音处理器WTS701的原理及应用
内容导读:

文字转发音处理器WTS701的原理及应用
The Principle and Application of the First Single Chip Text-To-Speech WTS701


解放军第六九零三工厂技术开发处 高健
摘 要:介绍了华邦WTS701的原理及典型应用,提供了cygnal f120 MCU与WTS701的接口电路,并根据相应的芯片指令,给出了相应的控制软件。
关键词:文字转发音;WTS701;C51
概述
---WTS701是华邦电子推出的第一颗“文字转发音”(Text-To-Speech)单芯片处理器,使用真人发音为样本,确保所输出的发音是清晰的真人发音,不会像计算机合成声音般不自然,使得由文字所转换成的发音更自然、真实和悦耳。
---WTS701单芯片解决方案利用连续运算法(concatenation algorithm)与多层次储存技术(Multi-Level Storage,MLS)相结合,不需要微处理器或PC机即可工作。WTS701可广泛应用于各种多媒体设备上,阅读电子邮件、实时简讯、新闻、天气、股价等信息,或是商务讯息传递和导航系统的语音说明,皆可使用该芯片将文字转换成为语音,以听觉代替视觉读。此外,WTS701还可以运用在学习辅助教材、视障辅助教材、电子书、玩具及其他娱乐产品上。

引脚排列及功能
---WTS701采用56脚的TSOP封装,各引脚的功能说明如表1所列。

应用特性

● 工作参数
---WTS701的工作电压为2.7~3.3V,I/O引脚可耐3V~5V电压,工作电流为35mA,待机电流为1μA,工作温度为 -40℃~+85℃,模拟音频输出外接8Ω扬声器,发音语速可调,可对ASCII码或UNICODE编码进行文字转发音,支持英语男、女性发音和中文女性发音。
● 存储单元
---WTS701内含2个内存模块,一个用于语音数据库,另一个则用于存储核心程序。1组模拟/数字转换器负责通过音效PCM输出音效,并有1组扬声器驱动线路用于模拟输出。WTS701支持ASCII码的文字输入,普通话则需使用Unicode编码文字,通过序列式SPI接口输入,将其转换为语音后,通过模拟端口输出,或者输出至数字CODEC。芯片系统工作流程框图如图2所示。
● SPI传输格式
---WTS701的传输协议是SPI方式,传输格式如表2所示。

典型应用
● 与微控制器接口
---WTS701与cygnal f120微控制器接口如图2所示。
● 软件编程
---微控制器cygnal f120与WTS701和相应外围电路正确连接完毕后,运行软件,扬声器会发出“大家好”的问候语。程序代码如下。
#include"c:\cygnal\idefiles\c51\inc\c8051f120.h"
#define byte unsigned char
#define uint unsigned int
#define SYSCLK 22118400 //系统时钟外部晶体
data byte SFRPAGE_SAVE;
idata byte status[23];

sbit cs=P2^0;
sbit ss=P2^1;
sbit mosi=P2^2;
sbit sclk=P2^3;
sbit miso=P2^4;
sbit rdy =P2^5;
sbit bint=P2^6;
sbit res =P2^7;

void SYSCLK_Init(void)
{ data int i; //延时计数器
SFRPAGE_SAVE=SFRPAGE;
SFRPAGE=CONFIG_PAGE;
OSCXCN=0x67; //起动外部22.1184MHz晶体振荡器
for(i=0;i<255;i++); //等待振荡器启动
while(!(OSCXCN&0x80)); //等待晶体振荡器稳定
CLKSEL=0x01;
OSCICN=0x00; //选择外部振荡器为系统时钟源,并使能丢失时钟检测器
SFRPAGE=SFRPAGE_SAVE;
}

void PORT_Init(void)
{ SFRPAGE_SAVE=SFRPAGE;
SFRPAGE=CONFIG_PAGE;
XBR0=0x04; //使能UART0
XBR1=0x14; //使能INT0和INT1
XBR2=0x44; //使能数据交叉开关和弱上拉
P2MDOUT =0xff; //允许为推挽输出
SFRPAGE=SFRPAGE_SAVE;
}
void spi_begin()
{ mosi=1;
delay(1);
sclk=1;
delay(1);
ss=1;
delay(1);
ss=0;
}

byte spi_send_byte(byte d)
{ idata byte i;
idata byte result=0;
while(!rdy);
mosi=1; miso=1;
for(i=0;i<8;i++)
{ sclk=0;
delay(5);
mosi=(bit)(d&0x80);
d=d<<1;
delay(5);
sclk=1;
delay(5);
result*=2;
if(miso) result++;
}
return(result);
}

void spi_end()
{ mosi=1;
delay(1);
sclk=0;
delay(1);
ss=0;
delay(1);
ss=1;
}

void delay(uint delx)
{ idata uint i=0;
while(i<delx)
{ i++; }
}

main()
{ WDTCN=0xde; // 禁止看门狗定时器
WDTCN=0xad;
SYSCLK_Init(); // 初始化振荡器
PORT_Init(); // 初始化数据交叉开关和通用I/O口
cs=0; res=1; delay(10); res=0; delay(10);
spi_begin();
status[0]=spi_send_byte(0x14);
status[1]=spi_send_byte(0x00);
spi_end();
delay(500);//准备接收指令,但尚未上电

spi_begin();
status[2]=spi_send_byte(0x02);
status[3]=spi_send_byte(0x00);
spi_end();
delay(500);//发送上电指令

spi_begin();
status[4]=spi_send_byte(0x06);//发送读中断指令
status[5]=spi_send_byte(0x00);
status[6]=spi_send_byte(0x00);
status[7]=spi_send_byte(0x00);
spi_end();
delay(500);//返回WTS701的状态,可开始转换
spi_begin();
spi_send_byte(0x51);
spi_send_byte(0x00);
spi_end();
delay(500);//发出设定卷寄存器指令

spi_begin();
spi_send_byte(0x52);
spi_send_byte(0x07);
spi_end();
delay(500);//发出设定卷寄存器指令

spi_begin();
status[8]=spi_send_byte(0x81);
status[9]=spi_send_byte(0x00);
status[10]=spi_send_byte(0x10);//^P
status[11]=spi_send_byte(''D'');//“大”的拼音
status[12]=spi_send_byte(''A'');
status[13]=spi_send_byte(''4'');
status[14]=spi_send_byte(''J'');//“家”的拼音
status[15]=spi_send_byte(''I'');
status[16]=spi_send_byte(''A'');
status[17]=spi_send_byte(''1'');
status[18]=spi_send_byte(''H'');//“好”的拼音
status[19]=spi_send_byte(''A'');
status[20]=spi_send_byte(''0'');
status[21]=spi_send_byte(''3'');
status[22]=spi_send_byte('' '');//结束符
spi_end();
while(1);
}

---华邦WTS701语音芯片也可利用预录人声的方式,让文字转换后的语音部分更加接近真人语音,创造一个更人性化的使用环境。

参考文献
1 http://www.winbond.com/WTS701.pdf

 
标签:
来源:今日电子 作者: 时间:2002/1/1 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐