《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于WT588D模块的语音播报系统设计
基于WT588D模块的语音播报系统设计
来源:电子技术应用2012年第1期
王春武1,2, 刘春玲1, 秦政坤1, 王广德1, 王立忠1
1. 吉林师范大学 信息技术学院, 吉林 四平136000; 2. 东北大学 中荷生物医学与信息工程学院, 辽宁 沈阳110004
摘要: 基于WT588D模块设计了语音播报系统,并详细叙述了语音文件的制作、下载、硬件电路设计和编程设计过程。本系统整体结构简单,音质优美,成本低廉,功能扩展方便,可以作为一个基于WT588D模块设计的模板应用到多个相关领域中。
中图分类号: TP319
文献标识码: A
文章编号: 0258-7998(2012)01-0115-03
The new voice broadcast system design based on the WT588D module
Wang Chunwu1,2, Liu Chunling1, Qin Zhengkun1, Wang Guangde1, Wang Lizhong1
1. College of Information and Technology, Jilin Normal University, Siping 136000, China; 2. Sino-Dutch Biomedical and Information Engineering School,Northeastern University, Shenyang 110004, China
Abstract: The new voice broadcast system based on the WT588D module is designed,it gives a detailed description to optimize design of software and hardware.This system has the advantages of simple integral structure, beautiful sound, low cost, convenient function expansion, and the system can be used as a template based on the WT588D modular bing applied in many related fields.
Key words : WT588D module; voice broadcast system; MPC82G516 microcontroller

    语音播报系统在儿童玩具、计算器、学习机、迎宾器、公交报站以及智能仪器仪表等设备中得到广泛应用。以往的语音播报系统中通常采用ISD系列的语音模块,其缺点是价格较高,电路设计较复杂,控制方式不够灵活,且常常因为在线录音会引入很强的噪声,严重影响放音效果。而本文使用的WT588D模块性价比较高,存储容量大,使用专用下载软件能够在线烧写音频文件,操作极其方便,并支持6 kS/s~20 kS/s采样率的音频加载,可以无损展现音频信息。

1 WT588D模块简介
    WT588D模块是广州创科有限公司与台湾华邦公司共同研发的集单片机、语音电路、SPI-Flash存储器于一体的可编程语音系统。该语音系统支持6 kS/s~22 kS/s采样频率的音频,具有220个可控制的语音地址,且每个地址还可以分成128段管理。配合WT-APP上位机操作系统软件和专用的USB下载器,可以随意设置系统的控制方式、语音地址和分段信息,支持语音信息在线烧录。
    WT588D模块支持MP3控制模式、按键控制模式、并口模式、一线串口模式及三线SPI模式。模块内部集成了DSP高速音频处理器,内置13 bit数模转换器以及12 bit PWM输出方式,可以无损地展现音频信息。PWM输出方式可以直接驱动0.5 W/8 Ω扬声器,无需额外的驱动电路[1]。
2 语音播报系统设计
2.1 语音文件的提取

    语音文件的提取有2种常用方法:(1)从录制的文件中提取;(2)利用文字转语音软件提取。
    从录制的文件中提取语音的步骤为:首先通过录音软件或通过手机录制wav格式的音频文件(例如包括0~9、时、分、秒等信息),然后打开GoldWave音频编辑软件,在原始wav格式文件中找到要截取的语音段,通过鼠标选择复制粘贴到新文件中即可。在该软件中还可以对音频进行合并、降噪、滤波等特效处理。
    利用SoundToWav文字转语音软件,使得音频文件提取更方便。该软件利用TTS(Text To Speech)即语音合成技术,可以将任意文字转换成语音文件。为了得到较好的音质,采用了ChineseMandarinVoice语音引擎,该引擎的中文女声音色较好,基本接近真人发声水平。在SoundToWav软件中选择该语音引擎并选中按行分割文件方式,输入要转换的文字信息,点击转换即可生成音频文件。
    以上两种方法中,第一种方法的真人录制语音更自然生动更具有感染力,但容易引入噪声干扰,音效相对较差些。而文字转语音噪声低、语音清晰、音质好、操作方便,但是由于采用的是TTS语音合成方式,声音缺少饱满,缺乏真人的朗读效果。
2.2 系统硬件设计
    本文选择了WT588D模块的SPI三线连接方式。为说明对语音模块的控制过程,以完成播报当前按键次数的功能为例。图1为系统框图,包括单片机最小系统、一个独立按键、WT588D语音模块和与其配套使用的下载接口。在设计中,需要先通过WT588D VoiceChip上位机软件,将已经提取的音频文件下载到SPI-Flash存储器的相应地址段,并记录好地址与语音的对照表,方便放音时进行地址调用。图2为系统电路图,由于语音模块供电的特殊要求,通过AMS1117模块完成5 V~3 V的电压转换;通过PWM直接驱动方式连接0.5 W/8 Ω扬声器;通过发光二极管观察语音芯片的忙信号状态;单片机采用独立按键方式。

2.3 系统软件设计
    三线串口控制模式由片选CS、时钟SCK和数据DATA组成,时序仿照标准SPI通信方式[2],具体时序如图3所示。

    采用上位机软件对SPI-Flash存储器25PXX烧写语音程序时,选择三线串口控制模式。语音模块的P01口被定义为DATA数据口,P02为CS片选口,P03为CLK时钟口,单片机通过3个控制口对WT588D语音模块进行控制。三线串口控制模式下其他的I/O口均无效。P17端为BUSY忙信号输出端,可设置为播放状态LED点亮和播放状态LED熄灭。SPI-Flash存储器25PXX的电压范围要保证在2.8 V~3. 5 V之间,VDD-SIM为WT588D语音芯片的串口电源管理输入端,将25PXX的VCC连接到此端,可自动平衡WT588D与25PXX之间的串口电压。PWM输出端禁止接电容到地或直接接地,系统工作为VDD=5 V,VCC=3.3 V。
    基于SPI通信时序[3-4]编写如下通信子函数,根据参数address的值可以播放对应的语音段(注意传数时低位在前)。
void send_adr(unsigned  char  address)
{  
        unsigned  char  i;
        RESET=0;
        delay1ms(3);
        RESET=1;
        delay1ms(17);                                            /* 17ms*/
        CS=0;
        delay1ms(2);
        for(i=0;i<8;i++)
         {
           SCLK=0;
           If(address&1)                  /* low post before high*/
            DATA=1;
           else
            DATA=0;
           address >>=1;
           delay1us(50);
           SCLK=1;
           delay1us(50);
            }
        CS=1;
}
     主函数完成对独立按键的扫描过程,其中delay1ms(10)的作用为延时去抖动,key_mark为键标志,可以实现按键的一次响应[5]。

 


void main(void)
{
      while(1)
      {
             if(!set&&!key_mark)
         {
                delay1ms(10);
            if(!set)
            {
                  key();
                  key_mark=1;
        }    
    }
    else if(set)
        key_mark=0;
}
    按键响应函数key()可实现,每次有键按下后,计数变量n++一次,通过对n值判断进行语音播报。当n为10以内数字时,直接播放n号段的语音;当n介于10~20之间时,先播放&lsquo;10&rsquo;的语音再播放个位的语音;当n介于20~100之间时,先播放十位数字的语音,再播放&lsquo;10&rsquo;的语音,最后播放个位的语音。
    void key()
         { n++;                            //Number keys
         if(n<11)
                  send_adr(n);      
        else if(n>10&n<20)
        {            
            send_adr(10);                  //the voice of ten
            while(!BUSY);           //waiting for BUSY=1
            if(n%10)
              send_adr(n%10);                         // units&prime;digit
    }
    else
    {
            send_adr(n/10);                      // tens&prime;digit
        while(!BUSY);
            send_adr(10);
        while(!BUSY);
        if(n%10)
            send_adr(n%10);
    }
    while(!BUSY);      
}  
    本文以单片机为控制核心,详细描述了使用WT588D模块播报语音信息的具体实现过程,包括语音文件提取、硬件电路设计、通信协议分析、按键扫描、语音播报地址拆分等部分。与采用ISD系列语音芯片相比,WT588D模块的性价比较高,音质较好,易于分段管理,能够提供丰富的工作方式,给系统设计带来了较大的灵活性。本系统整体结构简单、音质优美、成本低廉、功能扩展方便,可以作为基于WT588D模块设计的模板应用到多个相关领域,并依据本文稍加修改即可进行功能扩展。
参考文献
[1] 广州市唯创科技有限公司.WT588D08/16使用资料[EB/OL]. [2011-07-22] http://www.w1999c.com/UploadFiles/2011311155241593.pdf.
[2] 徐博,郭秋敏.基于SPI协议的音频流解码系统的研究与设计[J].工矿自动化,2011,34(1):45-49.
[3] 刘玉琼.基于WT588D语音提示系统设计[J].企业科技与发展,2010,26(22):99-102.
[4] 裘有斌,张国忠,陈丰伟,等.基于ISD4004的家庭语音报警服务系统的设计[J].电子制作,2008,16(2):40-42.
[5] 王春武,李岩,孟祥英,等.C51中对按键的处理方法[J].吉林师范大学,2007(4):86-87.

此内容为AET网站原创,未经授权禁止转载。