AndroidTTS离线文字转语音技术 让你的APP会说话!

三星tts文字转语音怎样使用,tts语音引擎离线版app

在我们开发过程中,用到语音技术大概就是文字转语音以及语音转文字了,知会一种另外一种也就会了。最近项目里用到了语音提示,并且要离线使用,体验会更好,因为网络差或者其他情况,在线文字转语音会有问题,下面说说离线文字转语音技术。

一、第三方SDK选择

我们首选还是运用第三方服务吧,自己开发真的有点费劲,目前有百度TTS、讯飞TTS、云知声TTS等,我选择的云知声,根据方案的不同,可以选择离线服务,如离线的唤醒、命令词控制和离线合成,并且是完全免费的。先看下SDK:

一个动态库libyzstts.so,一个jar包usc.jar,一个assets文件夹。其中assets文件夹里的文件就是离线使用到的内容,引入到我们工程下:

三星tts文字转语音怎样使用,tts语音引擎离线版app

添加相应的权限:

三星tts文字转语音怎样使用,tts语音引擎离线版app

二、封装

(1)、初始化SDK,我采用单例模式,将所有语音合成业务封装成一个类,并且开放一个接口提供外部使用,这样方便多次复用,而且可以高扩展。看下如源码:

三星tts文字转语音怎样使用,tts语音引擎离线版app

这就完成了初始化,initialEnv()方法是复制离线模型到本地SD卡。

三星tts文字转语音怎样使用,tts语音引擎离线版app

(2)、*放播**、停止、资源释放,SDK提供了很方便的方法,我都一 一封装了

三星tts文字转语音怎样使用,tts语音引擎离线版app

(3)、提供统一的对外方法,在需要使用的地方,只需要调用此类的相关方法即可

三星tts文字转语音怎样使用,tts语音引擎离线版app

三、使用

为了上层使用方便,进行了二次封装,统一在一个类调用,维护等。

三星tts文字转语音怎样使用,tts语音引擎离线版app

于是,最终使用就是TTS.speck_input(上下文参数),这样就能将文字转换成语音并*放播**了。

代码写的不好的地方欢迎指出,也有很多可以优化的地方。比如声音可以自由调整,变男,变女都可以。原理就是这么多,优化可以无限多。