学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为1633,预计阅读5分钟

划重点

所谓活到老,学到老,本篇开始我写的Android代码尽量都转为Android指定的官方语言Kotlin,一是技多不压身,二是Kotlin的语法与我接触的第一门开发语言Delphi有点像,学起来也不太难,所以直接在代码中开始使用才能掌握的更快。

Android本地TTS语音合成

前两天做WinForm项目中,有客户需求是加入语音提示,同事的努力下也是花了两天时间给更新上线了,由于我做的Android端用的手持PDA较多,在使用过程中如果有语音提示,会让用户使用起来更方便些,于是这篇就主要研究下Android端的TTS语音合成。

实现效果

TextToSpeech介绍使用

TextToSpeech

其实调用本地TTS语音识别非常的简单,一共就那么几个方法,麻烦的是在初始的配置上,我们就先来说一下使用方法

主要用到的两个包

import android.speech.tts.TextToSpeech;

import android.speech.tts.TextToSpeech.OnInitListener;

其中OnInitListener是要必须实现的,如下

mSpeech = TextToSpeech(this, TextToSpeech.OnInitListener {if (it == TextToSpeech.SUCCESS) {val i = mSpeech.setLanguage(Locale.CHINESE)if (i == TextToSpeech.LANG_MISSING_DATA || i == TextToSpeech.LANG_NOT_SUPPORTED) {mSpeech.setSpeechRate(1.0f)tvshow.text = "设置中文语音失败"} else {tvshow.text = "初始化成功"}} else {tvshow.text = "初始化失败"}})

通过上面的代码我们先初始化了TTS的引擎,我们再列几个常用的函数就可以直接使用了


TextToSpeech常用方法

方法 参数 说明
setPitch float pitch 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
setSpeechRate float speechrate 设定语速 ,默认1.0正常语速
setLanguage Locale loc 设置播放的语言
speak String text,int queueMode,HashMap<String,String> param 朗读,第一个参数就是朗读的文本,第二个参数是朗读方式,分为覆盖和追加等,第三个我们默认NULL即可
stop 关闭,不管是否在朗读都打断
shutdown 关闭,释放资源

代码演示

微卡智享

我们新建了一个TTSDemo的项目,先看一下布局文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tvshow"android:text="Hello World!" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/edttext"android:hint="请输入语音合成的文字" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btn1"android:text="TTS语音合成" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btn2"android:text="TTS语音设置" /></LinearLayout>

Mainactivity.kt

package dem.vac.ttsdemoimport android.Manifest
import android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.speech.tts.TextToSpeech
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import java.util.*class MainActivity : AppCompatActivity() {lateinit var tvshow: TextViewlateinit var edtinput: EditTextlateinit var btn1: Buttonlateinit var btn2: Buttonlateinit var mSpeech: TextToSpeechoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)tvshow = findViewById(R.id.tvshow)//初始化TTSmSpeech = TextToSpeech(this, TextToSpeech.OnInitListener {if (it == TextToSpeech.SUCCESS) {val i = mSpeech.setLanguage(Locale.CHINESE)if (i == TextToSpeech.LANG_MISSING_DATA || i == TextToSpeech.LANG_NOT_SUPPORTED) {mSpeech.setSpeechRate(1.0f)tvshow.text = "设置中文语音失败"} else {tvshow.text = "初始化成功"}} else {tvshow.text = "初始化失败"}})edtinput = findViewById(R.id.edttext)//朗读btn1 = findViewById(R.id.btn1)btn1.setOnClickListener { view ->var str: String = edtinput.text.toString();if (str != "") {mSpeech.speak(str, TextToSpeech.QUEUE_ADD, null)}}//设置btn2 = findViewById(R.id.btn2)btn2.setOnClickListener { view ->var intent = Intent("com.android.settings.TTS_SETTINGS")startActivity(intent)}}}

通过上面的代码,我们就可以实现TTS的朗读了,我的是Android 4.1的虚拟机,默认的本地TTS是PICO的,里面没有中文,无法进行中文的朗读,如下图

如果想要实现中文的朗读,我们就需要下载一个讯飞的语音合成离线包,安装后设置这个TTS后即可实现,我这网盘有个APK的下载地址

链接:https://pan.baidu.com/s/110AG3JyxipTKrIfDkcppaA

提取码:bflk

点击安装后,我们重新打开TTS设置就会出现,选择用讯飞语音合成

里面就会有中文的语音了

这一章主要讲了TTS的简单使用,产品在用户体验上要不断的打磨,像刚才我们安装讯飞语音,下一章我们就来看看怎么样检测如果没安装讯飞语音自动下载提示安装的方法。

扫描二维码

获取更多精彩

微卡智享

「 往期文章 」

实战|Android文字滚动自定义动画

学习|Android属性动画TypeEvaluator和Interpolator使用

学习|Android属性动画的组合动画之二--AnimatorSet

学习|Android使用TTS语音合成相关推荐

  1. Android apps 拍立知-基于百度Ai的图像识别与tts语音合成(介绍)

    一款基于百度Ai的图像识别与tts语音合成的Android apps-拍立知. 这款apps是拿来参加小比赛的,理工男没有ui!界面有点小丑. 原理是通过拍照/上传图片,调用百度Ai中的图像通用识别功 ...

  2. android用讯飞实现TTS语音合成 实现中文版

    Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成.但是android系统默认的TTS引擎:Pic TTS不支持中文.所以我们得安装自己的TTS引擎和语音包. ...

  3. android通过百度语音合成实现文字转换成语音(TTS)详细教程?

    android实现百度语音合成 1.使用TextToSpeech朗读文字 2.百度语音合成 1.创建应用 1.在百度开发者平台实现注册,并进行实名认证 2.点击语音技术 3.点击创建应用 4.创建细节 ...

  4. 交互系统的构建之(三)TTS语音合成的加盟

    交互系统的构建之(三)TTS语音合成的加盟 zouxy09@qq.com http://blog.csdn.net/zouxy09 人机交互系统的构建之(一)http://blog.csdn.net/ ...

  5. Android原生TTS(TextToSpeech)无效问题

    Android原生TTS(TextToSpeech)无效问题 在使用安卓原生语音文字转语音时发现系统自带的语音合成引擎不支持中文语音,查找资料有一下几款语音引擎 com.svox.pico 系统自带不 ...

  6. 中国移动开发者社区专访:学习Android的两大法宝

    本文为原创,如需转载,请注明作者和出处,谢谢! 近日,接受了中国移动开发者社区的专访,谈了关于Android的一系列问题 http://dev.10086.cn/upload/developers_m ...

  7. 【体验】朗读机器人是如何炼成的!带你体验TTS语音合成模块,B719语音合成模块效果测试...

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. TTS相信大家都有所耳闻,就是文字转语音,即语音合成.可以理解是个朗读机器人,我给他文 ...

  8. 开始认真学习Android了

    从11年开始,就开始在以前那台破笔记本上装上了Android,并且买了一本当初去面试的时在等别人批改笔试题时候,翻看的Android入门书籍:但是由于那台笔记本实在性能太差,一打开eclipse就发热 ...

  9. 想学习Android开发

    最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...

  10. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

最新文章

  1. NDK编译生成so文件
  2. Kotlin学习与实践 (十)Kotlin的可空性
  3. java线程的优点_Java使用多线程的优势
  4. Shell Perl Python 介绍
  5. MATLAB 计算 确定系数R2
  6. 秒抢红包和欧巴江南style红遍全球的背后都是HOOK的功劳!
  7. 化妆品公司mysql_化妆品网站销售管理系统的设计与实现(SSH,MySQL)(含录像)
  8. Python Environment Interpreter
  9. 现代循环神经网络 - 序列到序列学习
  10. java 生成pdf文件,添加图片
  11. python中ipaddr库用法详解
  12. 尚硅谷JavaWeb_2020idea_王振国_学习笔记
  13. rabbitmq组件断链重连机制
  14. ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了
  15. C++利用stringstream实现字符串分割和输入
  16. rosrun无法执行相应的可执行程序
  17. 在python内置集成开发环境中可使用快捷键什么_2020知道智慧树普通话训练与测试题库及答案...
  18. 重庆市建筑物矢量数据(Shp格式+带高度)
  19. 年轻人如何才能实现年薪百万呢?用数据分析来帮你探探路
  20. SpringDataJpa系列三之QBE(按照实例对象查询)

热门文章

  1. 【ATSC】韩国:2017年将迎来ATSC3.0广播时代
  2. 数字绘画技术,从数位板到数位屏
  3. pandas合并多个数据表
  4. 利用python合并关联两个表中的数据
  5. 8年码龄的技术总监,去上市公司面试,结果凉了!
  6. QL-Emotion(FDD3.0)教程
  7. atlas 1.1.0 的本地开发文档(编译)
  8. 为什么增益裕度可以是负数
  9. keyshot渲染很慢_提高Keyshot逼真渲染的小技巧!
  10. 读书笔记——WebKit技术内幕 HTML结构