Android自带类实现语音合成

作者: 山水相逢z | 来源:发表于2016-12-09 22:55 被阅读5500次

    今天在坑里蹲了半天,然后发现了一个神奇的类

    上午老大给了一个任务: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版本中就有了,惭愧的是我今天才知道。具体的用法这里不多做介绍。

    简单的封装了一个工具类,传入要播放的字符串可以实现播放了-https://github.com/SolveBugs/Utils

    屏幕快照 2016-12-09 下午10.47.22.png

    写这篇文章的目的

    Android自带的类中,有很多非常有用的类等待我们去发掘,在平常的工作中我们应该多积累,多整理,好多看起来不常见的需求,其实android本身就支持的很好了。

    相关文章

      网友评论

      • 做人要简单:东西不错,很有启发性
        不过封装的Utils会有内存泄露的风险

        感谢分享
      • Wang_Guan:特意登录上来评论,Thanks!!!
        刚刚用了 nexus 5x 原生系统测试,可以正常播放中文。
        cool
        山水相逢z:@海岛海盗 哈哈不客气,对你有帮助就好
      • Souv:请问需要怎么样才能安装中文引擎?网上有下载吗
      • abbb38f69998:正好需要,多谢
        山水相逢z: @宛若夕雪彡 客气,对你有帮助就好😬
      • shellever:刚用魅蓝note2测试了下,支持中文和英文语音,不知道其他手机支持度怎样?
        山水相逢z:@快感的感知 要求质量的话试试百度语音吧,现在好像离线的也免费了
        快感的感知:我用的华为荣耀8,只支持英文,可是我要播放一段新闻
        山水相逢z: @shellever 我用的OPPOr9,如果是英文的话,应该都会支持的,中文的话这个类默认不支持,应该需要手机有中文引擎
      • 36b1d63b7d75:讯飞有在线tts,离线的话可以用讯飞语记来实现免费的
        山水相逢z: @浦蒲 知道,但是还要下一个语记app,22多兆
      • 妙法莲花1234:中文的话,需要手机系统有安装中文引擎吧,没有的话,没法玩
        山水相逢z: @追风917 嗯,中文的话要搞中文引擎了,这个类默认支持五种语言,然而并没有中文🙈还好我这个需求只要求英文,哈哈

      本文标题:Android自带类实现语音合成

      本文链接:https://www.haomeiwen.com/subject/kijymttx.html