GSM手机实现语音合成功能的方法
技术领域
本发明涉及全球移动通讯系统(Global System for Mobile Communications,以下简称为GSM手机),特别是一种GSM手机实现语音合成功能的方法,尤其涉及GSM手机应用软件加载需要语音输出的文本字符串,送给第三方语音合成库,合成PCM多媒体流格式数据,再将PCM数据传递给GSM手机多媒体模块播放,从而实现GSM手机将需要的文本数据(短消息、电子书、电子词典、来电号码等)合成为语音数据播放出来的功能。
背景技术
语音合成技术(Text-to-Speech,简称TTS),学名为文语转换系统,是指利用计算机将任意组合的文本文件转化为声音文件,并通过声卡、电话语音卡等多媒体设备将声音输出的技术。目前语音合成技术已经广泛应用于个人计算机中,运用TTS技术可开发出各种“会说话”的软件,实现人机对话、语音教学、助读助听、有声校对等应用。但是嵌入式系统,例如GSM手机中,语音合成技术的应用还不多见,将该技术应用于嵌入式GSM手机中,可以克服GSM手机屏幕窄小的缺陷,实现收听信息。将语音合成技术应用于阅读收听短消息、电子书等文本信息,以及在呼入呼出时,将电话号码以语音播放,能够进一步提升GSM手机与用户的交互环境,对于方便用户具有重要的实际意义。
我们知道,文本数据通过语音合成为PCM数据功能的实现完全是软件编码,而目前GSM手机基带处理器都是串行执行指令,因而第三方语音合成模块在进行语音合成时会完全占用系统处理器的指令周期,而目前GSM基带处理器的执行速度每秒处理的百万级的机器语言指令数(Million Instructions Per Second,简称为MIPS)与个人计算机的处理器相比还非常低,造成语音合成执行消耗的时间都相对很长,测试发现一块40字节的文本,从开始送文本数据到语音合成结束耗用的时间大约是500毫秒。
发明内容
本发明要解决的技术问题重点在于如何实现文本数据能够在GSM手机上实时进行语音播放。解决语音合成技术集成到GSM手机中的技术问题,包括:已有软件系统对语音合成模块的内存、堆栈合理分配,由于单次语音合成的文本字节数与消耗的内存堆栈是成正比的,我们既要保证模块消耗的内存堆栈不超过系统ram的极限值,又要保证单次语音合成的文本字节数尽可能大,本方法对系统内存的额外消耗大约在250k字节,单次合成文本40字节;各种应用文本字符串的提取;将第三方语音合成库集成到已有的软件系统架构中;TTS合成的PCM语音数据实时播放;与其他多媒体语音播放应用在并发事件时的处理。最终提供一种GSM手机实现语音合成功能的方法。
本发明的技术解决方案如下:
一种GSM手机实现语音合成功能的方法,其特点是包括提取文本文件、将文件数据送给语音合成模块编码成脉冲编码调制(Pulse Code Modulation,简称PCM)数据和PCM数据音频播放三个过程,在GSM手机的基带处理器中设置语音合成模块和PCM音频播放模块,GSM手机的实时多任务操作系统给语音合成模块设置一个语音合成任务,给所述的PCM音频播放模块设置PCM数据音频播放任务,并规定所述的语音合成任务的优先级低于所述的PCM数据音频播放任务的优先级,GSM手机获得文本文件后,所述的基带处理器的语音合成模块首先对第一块文件数据进行语音合成为PCM数据,送所述的PCM音频播放模块进行PCM数据播放,所述的语音合成模块在PCM数据播放任务的时候完成下一块文件数据的语音合成,在一块PCM数据音频播放完成之后,立即将已合成好的下一块PCM数据送给所述的PCM音频播放模块继续进行播放,从而实现文本数据能够在GSM手机上实时进行语音播放
所述的GSM手机实现语音合成功能的方法,具体包括下列步骤:
步骤1:手机初始化,建立语音合成任务及PCM音频播放任务,并规定语音合成任务的优先级低于所述的PCM数据播放任务的优先级;
步骤2:初始化语音合成模块,在手机系统中给模块分配合适的内存及堆栈,并初始化相关全局变量及状态;
步骤3:GSM手机获得文本文件后,语音合成模块状态设置为“运行”,所述的语音合成模块将第1块文件数据的语音合成为第1帧PCM数据,立刻开始第2块文件数据的语音合成;同时发消息给PCM音频播放模块,该PCM音频播放模块通过外围器件和喇叭开始播放第1帧PCM数据;
步骤4:第1帧PCM数据播放完成,正好所述的语音合成模块将第2块文件数据合成为第2帧PCM数据,发消息给所述的PCM音频播放模块开始第2帧PCM数据播放,同时启动第3块文本数据的合成;
步骤5:重复第3第4步,直到最后1帧PCM数据合成结束并播放完成,语音合成模块状态设置为“完成”。
所述的步骤2的具体内容包括:申请存放合成输出数据的缓存ram,申请语音合成模块内部运行所需的堆栈ram,设置语音合成输入输出的回调方式,设置语音合成语种、发音风格、音量、音效参数,选定每帧合成文本数据的大小为40个字节,再将语音合成模块状态设置为“准备好”;
所述的文本文件是需要经语音合成模块编码成PCM格式数据并进行PCM数据音频播放的文本文件,包括短消息、电子书、电子词典或来电号码。
所述的文件数据是字符串。
本发明的技术效果:
本发明针对上述现有技术提到的语音合成时间较长的问题,为了在效果上能够达到一边合成数据,一边语音播放的效果,在GSM手机软件实时多任务操作系统给语音合成模块设置一个语音合成任务,给所述的PCM音频播放模块设置PCM数据音频播放任务,并规定所述的语音合成任务的优先级低于所述的PCM数据音频播放任务的优先级,这样的设计能够实现在PCM播放任务处于空闲的时候,完成下一块文本数据的合成。这样在一块PCM数据播放完成之后,可以立即将已合成好的下一块PCM数据送给PCM音频播放模块继续进行播放,由于控制每帧合成文本数据的大小为40字节,整个合成流程消耗系统时间约500毫秒,而该帧PCM数据播放时间大于2秒,因而第1帧PCM播放完成时,第2块文本数据也已经合成为PCM数据。实现了语音合成与PCM音频播放的同步运行,文本数据能够在GSM手机上进行实时语音播放,中间不会感觉到停顿。运用本发明方法,使GSM手机更加具有人性化以及智能化的特征,用户使用更加方便,对于提升GSM手机与用户的交互环境,有着实际使用意义和实用价值。
附图说明
图1是本发明GSM手机实现语音合成功能的方法的GSM手机系统方框图,
图2是本发明语音合成及PCM数据播放的流程图,
具体实施方式
下面结合附图和实施例对本发明作进一步说明,但不要以此限制本发明的保护范围。
先请参阅图1,图1是本发明GSM手机实现语音合成功能的方法的GSM手机系统方框图,
语音合成代码及PCM编码资源存储于手机系统FLASH13中。在在GSM手机的基带处理器1中设置语音合成模块11和PCM音频播放模块12,语音合成功能运行时,将要合成的文本字符送给语音合成模块11,语音合成模块11依靠TTS编码资源将字符数据解析并编码为PCM流媒体格式,之后送给PCM音频播放模块12并通过外围功放器件2及喇叭3播放。
再参阅图2,图2是本发明语音合成及PCM数据播放的流程图,所述的GSM手机实现语音合成的方法,具体包括下列步骤:
步骤1:手机初始化,建立语音合成任务及PCM音频播放任务,并规定语音合成任务的优先级低于所述的PCM数据播放任务的优先级;
步骤2:初始化语音合成模块12,在手机系统中给模块分配合适的内存及堆栈,并初始化相关全局变量及状态,并从FLASH获得TTS资源;
步骤3:GSM手机获得文本文件后,所述的语音合成模块11获得第1块文本字符并将第1块文本字符串合成为第1帧PCM数据,立刻开始获得第2块文件字符串并对第2块文件字符串进行语音合成;同时发消息给PCM音频播放模块,该PCM音频播放模块12通过外围器件2和喇叭3开始播放第1帧PCM数据;
步骤4:第1帧PCM数据播放完成,正好所述的语音合成模块11将第2块文件数据合成为第2帧PCM数据,发消息给所述的PCM音频播放模块12开始第2帧PCM数据播放,同时启动第3块文本数据的合成;
步骤5:重复第3第4步,直到最后1帧PCM数据合成结束并播放完成。
试验表明,由于PCM音频播放任务优先级高于语音合成任务,在PCM音频播放模块12进行第1帧PCM播放的间隙,所述的语音合成模块11完成第2块文本数据同步在合成;由于控制每帧合成文本数据的大小为40字节,整个合成流程消耗系统时间约500毫秒,而该帧PCM数据播放时间大于2秒,因而第1帧PCM播放完成时,第2块文本数据也已经合成为PCM数据。实现了语音合成与PCM音频播放的同步运行,达到了文本字符串实时语音播放的效果。