您的位置: 嵌入式在线 > 技术中心 > 单片机 > 文字转发音单片处理器WTS701的原理及应用

文字转发音单片处理器WTS701的原理及应用

2008-01-30      嵌入式在线      收藏 | 打印

        WTS702是华邦公司推出的内建喇叭驱动功能的“文字转发音”单芯片集成电路。该芯片将连续运算法与华邦专有的多层次储存技术相结合,从而实现了真正将“文字转发音”的完整功能。文中介绍了该芯片的原理及典型应用,给出了Cygnal F120MPU与WTS701的接口电路,并根据相应的芯片指令给出了其控制软件的代码程序。

       1 概述

       WTS701是华邦电子推出的第一颗“文字转发音”(text-to-speech)单芯片处理器。WTS701使用真人发音为样本,从而确保了所输出的发音是清晰的真人发音,而不会像计算机合成声音般不自然,因此,通过该芯片将文字转换成的发音更自然、真实、悦耳。

       WTS701单芯片处理器解决方案将连续运算法(concat enation algorithm) 与华邦专有的多层次储存技术(Multi-Level Storage,MLS) 相结合。WTS701单芯片处理器内建喇叭驱动功能,不需要微处理器或个人计算机即可运作,因而可广泛应用于无线产品上。举凡电子邮件的阅读、实时简讯、网站、新闻、天气、运动、股价等信息,或是电子商务讯息传递及卫星导航系统的语音说明,皆可使用此款IC将文字转换成为语音,以听觉代替视觉来读取。此外,WTS701单芯片处理器还可以运用在学习辅助教材、视障辅助教材、电子书、玩具及其它娱乐产品上。

       2 引脚排列及功能

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

        表1 WTS701的引脚功能

        引脚号  引脚名称  I/O  功    能 
 
        2,36,44  VSSA  G  模拟地  
        3  VCLK  I  CODEC主频时钟  
        4  VFS  I  CODEC同步信号  
        5  VDX  O  CODEC数据输出  
        6  MISO  O  SPI输出方式,主入从出  
        7  XTAL2  O  外接时钟输出  
        8  XTAL1  I  外接时钟输入  
        9,10  VSSD  G  数据地  
        11,12  VCCD  P  数据电源  
        13  INT  O  中断输出  
        14  MOSI  I  SPI输出方式,主出从入  
        15  SS  I  SPI输出方式,从方选择  
        16  SCLK  I  SPI串口时钟输入  
        25  CS  I  WTS701片选  
        26  R/B  O  数据传输空闲或忙引脚  
        27  RESET  I  复位  
        40  ATTCAP  I/O  自动静噪,与模拟地之间连接4.7μF电容  
        42  SP-  O  差分负极扬声器输出  
        46  SP+  O  差分正极扬声器输出  
        48  VCCA  OP  模拟电源  
        52  AUXIN  I  模拟输入  
        54  AUXOUT  O  模拟输出  
        1,17-24,28-35,37-39,
        41,43,45,47,49-51,
        53,55-56  NC    悬空 

        3 应用特性

        3.1 芯片工作参数

        ●采用2.7V~3.3V工作电压。

        ●其I/O引脚可耐3V~5V电压。

        ●功耗低,工作模式时的电流为35μA,等待模式时为1μA。

        ●工作温度范围:-40℃~+85℃。

        ●采用模拟音频输出,可外接8Ω扬声器。

        ●发音语速可调。

        ●可对ASCII码或Unicode码进行文字转发音。

        ●支持英语男、女性发音和中文女性发音。

        3.2 存储单元和SPI传输格式

        该芯片内含2组内存数组:其一为语音数据库所用,另一则为处理核心程序所用。有1组模拟/数字转换器负责通过音效PCM输出音效,另有1组扬声器驱动线路可做为模拟输出。WTS701支持ASCII码的文字输入(国语则需使用Unicode编码文字),并可通过串行SPI接口输入,然后将其转换为语音并通过模拟端口输出,当然,也可输出至数字CODEC。WTS701芯片的系统工作流程框图如图2所示。

        WTS701的传输协议采用SPI方式,传输格式如图3所示。

        4 典型应用

        图4所示是WTS701与Cygnal F120微控制器的接口电路。系统的应用软件代码程序见下文。当微处理器Cygnal F120与WTS701以及相应的外围电路连接完毕后,便可运行该应用软件,扬声器将发出“大家好”的问候语。

        #include"c:\cygnaldefiles\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(); // 初始化数据交叉开关和通用IO口

        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); //ready to accept commands but not powered up

        spi_begin();

        status[2]=spi_send_byte(0x02);

        status[3]=spi_send_byte(0x00);

        spi_end();

        delay(500); //send the power up command

        spi_begin();

        status[4]=spi_send_byte(0x06); //send read interrupt command

        status[5]=spi_send_byte(0x00);

        status[6]=spi_send_byte(0x00);

        status[7]=spi_send_byte(0x00);

        spi_end();

        delay(500); //return the status of the wts701,now be ready for conversion

        spi_begin();

        spi_send_byte(0x51);

        spi_send_byte(0x00);

        spi_end();

        delay(500); //svol set vol register command

        spi_begin

        spi_send_byte(0x52);

        spi_send_byte(0x07);

        spi_end();

        delay(500);//svol set vol register command

        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); 

}

        5 结束语

        实际使用时,可利用华邦WTS701语音芯片的预录人声方式来让文字转换后的语音更具有人情味。现今市场上的TTS产品多半采用计算机合成的语音模式,WTS701的问世则可把一般文字转化为真人发音的语音输出,从而创造一个更具人性化的语音环境。

 


 

本文来源:国外电子元器件    作者:高 健
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴