文字转发音处理器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:cygnalidefilesc51incc8051f120.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

技术特刊

减小隔离式同步栅极驱动器的尺寸并降低复杂性带同步整流功能的隔离式DC-DC转换器的传统设计方法是使用光耦合器或脉冲变压器进行隔离,并将其与一个栅极驱动器IC结合在一起。
选择适合医疗器械应用的磁性元件多年来,可植入医疗器械变得越来越小。更小的器械可提高患者舒适度,植入时对人体的损伤也小。同时,更小的器械可降低手术的侵入性和复杂性,既方便医生操作,也
软件模拟+硬件仿真=验证成功如果您还没有注意到现在是SoC时代(虽然并非总是如此),不妨回想一下个人计算时代,许多实例都证明这个时代已快速衰落,成为历史。曾几何时,使用计算机意味着坐

杂志/赠阅

往期查阅:

站内搜索

相关文章