美文网首页Android开发
Android TTS API笔记

Android TTS API笔记

作者: VinaChiong | 来源:发表于2019-01-09 18:00 被阅读4次

写在前面


今日应内部团队需求,要实时朗读语音。在这个场景驱动,快速过了一遍官方文档。通过此笔记,摘录自己的思考和理解的内容,方便日后快速回忆。
所以说这是一个偏个人的笔记,对于需要全面了解TTS的看官,可能要失望了。

「android.speech」和「android.speech.tts」


「android.speech」包不在我这次要了解的范围内,后续会补上相关笔记。

「android.speech.tts」包的tts是「Text To Speech」缩写,文字转语音。

为了开发者便于使用,在AOSP中,关于「兼容性定义文档」的说明,要求每个Android OS版本发行都要兼容的功能实现,其中「TTS」就是以一个Framework的形式存在,开发者通过已有的API,与这个Framework服务进行交互动作。

以一个简单的使用常见为例:播放一句话,简单列出涉及到的相关API。

  • 创建TextToSpeech实例mTts,API会调用唤起Framework并进行一系列初始化,未初始化完成是用不了的,所以要OnInitListener监听回调。
  • 回调的结果要么是 TextToSpeech.Engine.SUCCESS要么是TextToSpeech.Engine.ERROR
  • 成功后,可以对mTts进行配置。
  • 设置当前要识别合成的语言,使用voicelanguage是已经deprecated。
  • 设置语速speechRate, 正常速度为1.0f,2.0f是2倍速,0.5是慢1倍速。
  • 设置音调pitch,正常调为1.0f,跟语速的值规则类似
  • 添加每次speak方法的识别回调UtteranceProgressListener接口的实现
  • 调用speak()方法
    • text要朗读的文本内容
    • queueMode队列模式有TextToSpeech.QUEUE_ADD
    • bundle,设置三个值:
      -使用哪种系统的媒体音类型的音量,取值为AudioManagerSTREAM_前缀的常量及
      -本次播放使用的音量大小,取值0-1,即0%-100%
      -KEY_PARAM_PAN,不是很理解是英文说的是什么,取值
    • utteranceId暂未遇到使用场景;
      TextToSpeech.QUEUE_FLUSH,这个场景应该比较常见:自动顺序朗读段落,用户突然点击重放,由头重新朗读,则使用QUEUE_FLUSH值。

上述是一次理想的流程,在实际场景中,可能会遇到各种情况,例如文字识别失败、网络识别的网络失败、framework服务内部失败、音频流输出失败等情况,API都有相关的常量值可供识别使用。

另外TextToSpeech.Engine类,不是一个真正的“引擎”,它只定义了与Framework交互使用到常量:Activity Action、Broadcast Action、Intent、Bundle Key值等,所以这个命名一度令我不知所措。
Framework本身还支持开发者通过ACTION,调用:检查是否可用的语言包、是否有Framework存在、检查目标语言的语言包是否已安装、发起安装语言包指令。

后记


通过简单的封装,配合WebView的Js Interface,让H5前端项目的同事能调用Android的TTS进行朗读。然而事情没有那么简单,因为使用的设备是小米电视4,根本就没有TTS Framework,只能使用第三方语音识别SDK解决,例如科大讯飞的。
Anyway,借机了解这块API,也是有所收获。

相关文章

  • Android TTS API笔记

    写在前面 今日应内部团队需求,要实时朗读语音。在这个场景驱动,快速过了一遍官方文档。通过此笔记,摘录自己的思考和理...

  • Android TTS 语音合成播报

    Android TTS 语音合成播报Android系统原生自带了一个TTS引擎。可以自定义TTS引擎,系统默认TT...

  • Android平台SDK代号版本及API级别

    Android平台SDK代号版本及API级别 这是《Android学习笔记》第001篇。总结一下Android S...

  • android TTS TextToSpeech

    前言 最近公司产品提出需求:要在一个收音机广告app上新增一个小说文本朗读的功能。我第一反应是接入讯飞或者其他平台...

  • Android TTS 小试

    前言 让app具备tts能力,有两种方式,一种是直接集成第三方tts sdk,比如科大讯飞、百度等等,调用sdk的...

  • Android TTS 开发

    前言     前不久要集成语音发声,首先想到的就是科大讯飞 这个确实厉害导报 设置一气呵成,然后就开始美滋滋的发声...

  • Android API统计

    Android 4.4 API数量统计 Android 5.0 API统计 Android 6.0 API统计 A...

  • 2020-08-13# Android系统安全和反编译实战_笔记

    Android系统安全和反编译实战_笔记(二) Android SDK版本名和API level对照表 基础漏洞类...

  • 【Panda的Android开发之旅】

    个人开发经历 2010年,因为协助同事集成Android上TTS、魔音等软核产品,开始接触Android开发。 2...

  • Android GPS坐标距离计算

    Android GPS坐标距离计算 Android API : Android API--Locationhttp...

网友评论

    本文标题:Android TTS API笔记

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