TTS功能在移动终端的应用

2011-10-26 07:12郑州电视台单志霞
河南科技 2011年11期
关键词:流式调用线程

郑州电视台 单志霞

TTS功能在移动终端的应用

郑州电视台 单志霞

一、背景

TTS(Text To Speech),即从文本到语音。TTS所用的关键技术就是语音合成(Speech Synthesis)技术。早期的TTS一般采用专用的芯片实现,但主要应用于家用电器或儿童玩具中。目前,中文TTS系统中比较常用的有IBM、Microsoft、Fujitsu、科大讯飞、捷通华声等研究的系统。本文,笔者主要介绍科大讯飞TTS系统开发包Aisound的应用。

讯飞轻量级语音合成系统Aisound是科大讯飞基于全球领先的语音合成技术,主要针对各行业应用的嵌入式设备,为用户提供语音信息获取和语音交互应用能力的软件模块,并将普通文本字符转换为自然语音输出的一款TTS软件。Aisound语音合成系统不受操作系统的限制,不增加用户额外的硬件成本,并针对嵌入式设备资源受限的特点,在资源占用、可移植性等方面都取得了突破性进展,其合成效果整体上已超过普通人的说话水平。语音合成系统的系统框架图如图1所示。

图 1 语音合成系统框架

二、TTS的实现

在移动终端上实现TTS,其开发原理比较简单。由于目前移动终端的开发基本上已经实现语音、短信、数据等业务的模块化,并且UI系统也做的相当成熟,因此我们在添加TTS功能时,只需要使用第3方的软件开发包即可:通过修改编译规则,将开发包提供的库文件编译进去,然后调用其提供的标准API接口。

1.语音合成的基本流程。

(1)为TTS分配一块足够大的堆空间。

(2)初始化资源。

(3)使用ivTTS_Create创建一个TTS实例。

(4)使用ivTTS_SetParam设定TTS的各种参数。如,各回调函数、输入输出方式、语言、文本编码类型、音量和语速等。

(5)使用ivTTS_SynthText输入文本,开始合成(合成过程中,调用合成的线程会被堵塞,直到退出合成)。

(6)合成结束后,调用ivTTS_Destroy释放实例。

(7)释放各种资源。

(8)合成中,可以随时调用ivTTS_Exit打断合成。

2.TTS常用的回调函数。Standard API定义了5个回调函数,分别为事件回调函数、参数改变回调函数、流式输入回调函数、处理进度通知回调函数和输出回调函数。本文,笔者仅对常用的4个回调函数作一简要介绍。

(1)事件回调函数。TTS通过事件回调来获取需要的线程控制或者通知用户一些事件。例如:实例需要sleep时,调用该回调通知用户将TTS线程sleep;在系统缓冲了足够的数据时会调用该回调,通知用户开始读取数据;在某些特定平台,可能需要事件回调来切换上下文。

(2)参数回调函数。当实例参数发生变化时,系统会调用参数回调函数来通知用户。如果是用户实例参数发生改变,则不调用该回调。

(3)输入回调函数。当输入模式为流式输入时,系统会通过调用输入回调函数,来获取合成的内容。

(4)输出回调函数。系统合成过程中产生的语音数据会通过该回调传给用户,相应的语音数据的格式也会随之给出。

3.Aisound的输入输出方式。Aisound提供2种输入方式(流式输入和块式输入)和2种输出方式(输出回调和用户主动获取数据)。

(1)流式输入。当输入模式为流式输入时,系统会通过调用输入回调函数来获取合成内容。流式输入比较复杂时,此方法已不再适用,Aisound默认为块式输入。

(2)块式输入。直接将输入文本块的指针传递给系统即可。

(3)输出回调方式。系统合成过程中产生的语音数据会通过该回调传给用户,用户可对数据进行处理。

(4)用户主动获取数据方式。系统将数据暂存在一个缓存区中,用户通过指定的接口获取数据。刚开始合成时,当缓存区的数据达到指定大小时,系统会通过事件回调通知用户可以开始读取数据。缓存区满时,系统通过事件回调通知用户将线程sleep。

综上,通过TTS功能的实现,可以有效提高移动终端的使用友好性,特别是针对老年人、视力弱的人群具有很好的使用效果。同时该TTS功能实现简单,不需额外添加设备,不用增加成本就可实现新功能,从而大大提高了该终端产品的市场竞争力。

猜你喜欢
流式调用线程
辐流式二沉池的结构优化研究
基于国产化环境的线程池模型研究与实现
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
浅谈linux多线程协作
基于系统调用的恶意软件检测技术研究
微球测速聚类分析的流式液路稳定性评估
自调流式喷管型ICD的设计与数值验证
流式在线直播视频的采集
利用RFC技术实现SAP系统接口通信