今天在坑里蹲了半天,然后发现了一个神奇的类
上午老大给了一个任务:App原来是中文版的,里边有语音播报功能,最近在搞英文版,所以需要把这个中文的语音播报搞成英文的,由于老大事比较多,所以这个问题就交给我来解决了。其实场景很简单,就是把播报的内容翻译成英文,然后在需要播放的时候让它播放就行.这里用到技术就是传说中的TTS---Text To Speech了。那为什么说我在坑里蹲了半天呢?
从这里开始,我就要入坑了。
说到语音技术,大部分开发者最先想到的就是科大讯飞,百度语音这些吧,毕竟这几个第三方的语音技术做的非常完善。我也不例外,因为之前有同事用过,而且给我说过讯飞的比较好,所以我直接就去讯飞官网看相关文档了。果不其然,这种简单的文本转语音的技术,讯飞肯定支持了,于是我满心欢喜的照着文档,下载下来sdk,一步一步集成到项目里,最后运行,哇靠,播放成功了!噢耶!老大布置的任务完成了!哈哈哈哈哈哈!!!!!
稍安勿躁,少侠,你已经入坑了.
语音播报这个功能,正常场景中,无论是有网还是无网情况,都能使用,也就是说要求可以离线使用,但是在第三中,讯飞的离线语音合成收费,而且,还不便宜,有兴趣的可以去看下。这里放个基础包的价格,大家感受下:
屏幕快照 2016-12-09 下午10.20.25.png至于百度语音合成,虽然离线是免费的,但是集成它需要增大apk包的体积不小,而且体验感觉也不是很好。由于条件限制,收费的用不了,免费的集成后apk体积增加太大,也不能用。
开始爬坑
怎么办呢怎么办呢,这个时候,只能说天无绝人之路,让我发现了一个类,而且是android自带的类,它可以很好的支持英文的语音合成,这个类就是TextToSpeech
。官方文档是这样描述这个类的:从文本中合成语音,用于立即播放或创建一个声音文件
。具体描述传送门:
https://developer.android.google.cn/reference/android/speech/tts/TextToSpeech.html
重要的是:这个类在Android 1.6版本中就有了,惭愧的是我今天才知道。具体的用法这里不多做介绍。
屏幕快照 2016-12-09 下午10.47.22.png简单的封装了一个工具类,传入要播放的字符串可以实现播放了-https://github.com/SolveBugs/Utils
写这篇文章的目的
Android自带的类中,有很多非常有用的类等待我们去发掘,在平常的工作中我们应该多积累,多整理,好多看起来不常见的需求,其实android本身就支持的很好了。
网友评论
不过封装的Utils会有内存泄露的风险
感谢分享
刚刚用了 nexus 5x 原生系统测试,可以正常播放中文。
cool