基于SYN6288的TTS语音系统
2012-09-21朱志伟刘湘云
朱志伟,刘湘云
(长沙民政学院 电子信息工程学院,长沙 410004)
引 言
随着社会经济建设的飞速发展,教育、交通、金融、旅游等领域对语音播报的需求不断增长。TTS(Text To Speech)文本转换语音技术是人机智能对话发展的趋势,利用此技术,通过MCU或者PC机控制语音芯片发音,能够实现多种场合下的文字即时阅读功能,如公交车报站、电子文本教材诵读、旅游导览语音服务、排队读序号等,这无疑在提高人机通信效率、提升系统服务质量、减轻人们工作强度等方面都有极大的好处。基于TTS技术的语音系统无需事先录音就能够随时根据查询条件查出并合成语音进行播报,从而大大减少了系统维护的工作量。
1 TTS语音合成原理
TTS语音合成的一般步骤如图1所示。存储在Flash ROM中的是编码后的语音参数,由MCU或PC机控制将Flash ROM中的数据取出并译码,根据相应的语音合成方法,由语音参数转换为数字语音信号,通过D/A转换器转换为模拟语音信号,经功率放大后,送入扬声器。
图1 TTS语音合成的一般步骤
TTS转换过程是先将文字序列转换成音韵序列,再由系统根据音韵序列生成语音波形。这个过程涉及语言学处理和韵律处理,目前实现这个过程较好的途径是,把基于规则的波形拼接技术和参数语音合成方法结合起来。
常用的语音合成方法主要有:共振峰合成、LPC(线性预测编码)参数合成、PSOLA(基音同步叠加)拼接合成和LMA滤波。在现阶段,共振峰合成和LPC参数合成需要的计算量较大,不适合在低端的嵌入式芯片上使用。PSOLA的主要特点是:在拼接语音波形片断之前,首先根据上下文的要求,用PSOLA算法对拼接单元的韵律特征进行调整,使合成波形既保持原始发音的主要音律特征,又能使拼接单元的韵律特征符合上下文的要求,从而获得很高的清晰度和自然度。LMA滤波器能有效解决PSOLA等波形拼接算法难以解决的协同发音问题。总之,PSOLA拼接合成和LMA滤波器,虽然占用的存储空间较大,但计算量小、计算速度快,而且合成语音自然度高,比较适合于CPU性能较低的嵌入式语音系统使用。
2 语音合成芯片SYN6288的工作原理
2.1 系统框图
SYN6288是北京宇音天下科技有限公司于2010年初推出的采用PSOLA拼接合成技术的一款语音合成芯片。SYN6288通过异步串口(UART)通信方式,接收待合成的文本数据,实现文本到语音(或TTS语音)的转换,可直接通过PWM输出方式驱动扬声器或外接功率放大电路驱动扬声器,进行语音输出。该芯片支持GB2312等格式的文本,支持标点符号、汉字、数字、英文字母及特殊字符处理,可正确识别数值、号码、时间日期及常用的度量衡符号,具备很强的多音字处理和中文姓氏处理能力。基于SYN6288的语音系统框图如图2所示。
图2 基于SYN6288语音系统框图
2.2 SYN6288引脚定义
SYN6288共有28个引脚,其引脚定义如表1所列。
3 SYN6288的应用
3.1 硬件接口电路设计
异步串口通信电路如图3所示。由SYN6288构成的语音系统主电路如图4所示。在双刀双掷开关S1的作用下,系统可灵活地在PC机和MCU之间选择上位机。S1上接,SYN6288受 MCU控制;S1下接,SYN6288受PC机控制,通过MAX232进行电平转换。任何时刻MCU均可与PC机通信,系统默认的上位机为MCU,此时单片机可利用PC机进行程序调试、烧写。如果SYN6288需要受PC机控制,只需切换S1的方向即可。SYN6288通过异步串口接收待合成的文本,直接通过PWM输出的方式驱动扬声器,或外接功率放大电路驱动扬声器,即可实现文本到声音的转换。
表1 SYN6288引脚定义
图3 异步串口通信电路
图4 由SYN6288构成的语音系统主电路
3.2 SYN6288的TTS功能
SYN6288规定的上位机向芯片传送的待合成数据帧的有效格式为“帧头0xFD+ 数据区长度 +数据区”。上位机发送给SYN6288芯片的所有命令和数据都需要用“帧”的方式进行封装后传输,每帧最多为206个字节,帧格式如表2所列。SYN6288支持的控制命令如表3所列。
3.3 SYN6288实现TTS功能的软件设计
系统软件根据上位机的不同有两种程序,一种是上位机PC中的文本输入发送程序,另一种是MCU中数据收发及存储回放的程序。
当采用PC机作为上位机时,程序用VC开发,串口通信使用MSComm来实现,只需要对输入/输出缓冲区进行读写操作就可以实现发送和接收数据。为保证SYN6288正常工作,上位机首先需要发送状态查询命令帧,如果芯片回传的状态数据是“0x4F”,则表明芯片处于空闲状态,可以接收数据。然后开始发送实际的数据,读取用户设置的控制信息,如音量、波特率等,根据这些信息制作帧头。最后读取输入的文本,由于SYN6288每帧长度最多为206个字节,要根据输入文本长度判断是否需要进行分帧发送,并对分帧后的数据计算出校验和,形成完整的数据帧,通过串口发送出去。同时,开启侦听,侦听到SYN6288回传“0x4F”,说明前面的文本已合成完毕,上位机再发送下一个文本合成帧。
当采用C51单片机作为上位机时,数据构造命令如下:
表2 SYN6288支持的UART帧格式
表3 SYN6288支持的控制命令
这样命令帧的各个部分已经完成,而需要发送的文本信息可以通过以下类似的代码实现:
static char code text[]={" 基于SYN6288的 TTS语音系统的实现"};
将待发放文本数据区中的数据与命令帧整合,并将全部数据与0x00进行“异或”运算得到最终的“异或”校验码。当查询到SYN6288的/BUSY引脚为低电平,芯片处于空闲状态时,把这些命令和数据通过串口直接发送到SYN6288芯片,转换后驱动扬声器,就能听到语音:“基于SYN6288的TTS语音系统的实现”。可以在待发送文本数据区中输入任意文字,得到相应的语音信息,免除了过去录音操作的不便之处。
结 语
与其他形式的TTS语音芯片相比,SYN6288有很多人性化的设计,如提供了声音提示音和和弦音乐,可以依据使用场合选用在公共信息播报中;设置了文本控制标记以调节输出语音音量大小、调节语速和语调、强制分词等,特别是标点符号的静音时间及字与字间的静音时间可调节,使人感觉有一种语气上加重或停顿的味道,听起来更具感情色彩。本文基于SYN6288设计和实现了一个便携式文本转语音系统。该系统小巧便携,使用简单,可以应用于智能医疗设备、自动售货机、导航终端等需要语音输出的场合,并且能够有效地帮助在语言交流方面有障碍的残疾人员与他人进行顺利的沟通。
[1] 北京宇音天下科技有限公司.SYN628数据手册 V1.5.(2011-09-06)[2012-05-01].http://www.tts168.com.cn/bao/SYN6288-Manual.pdf.
[2] 张辉,黄永强,夏爱华.中文语音合成模块XF-S4240在导航终端中的应用[J].单片机与嵌入式系统应用,2008(1):43-45.
[3] 洪家平.LD3320的嵌入式语音识别系统的应用[J].单片机与嵌入式系统应用,2012(2):47-49.