什么是TTS?
TTS是Text To Speech
的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。TTS是语音合成应用的一种。
在程序开发中,有很多TTS的插件,比如百度,讯飞,等等,但是大部分产品都不是完全免费无限制次数调用的且需在线使用
本篇文章介绍一种免费快捷且可以离线本地使用的方法:调用安卓系统已安装的TTS进行语音合成播放。
安卓原生自带离线语音合成的使用
1. 安装Android文字转语音引擎
安卓系统本身是有自带语音引擎的,但是有些手机没有,如果没有的话,需要先安装语音引擎apk,可以参考这篇文章下载:Android文字转语音引擎(TTS)简单比较及下载
2. 调用系统已安装TTS插件 (MT-TTS)
在手机上已经有语音引擎的前提下,就可以使用MT-TTS插件进行调用了。
2.1 下载MT-TTS插件
下载地址和使用方法:MT-TTS离线语音合成
可以直接在下载的demo上进行开发,或者把demo里面的nativeplugins
文件夹拷贝到自己的项目根目录下
然后把项目用HBuilder X打开,点击manifest.json
文件,App原生插件配置,把MT-TTS勾选上,确定
2.2 使用自定义基座打包uni原生插件 (注:请使用真机运行自定义基座)
使用uni原生插件必须先提交云端打包才能生效,所以需要先把原生插件打包到自定义基座,然后再进行写代码真机调试(不知道怎么真机调试的可以看看我这篇文章真机调试)。
运行-》运行到手机或模拟器-》制作自定义调试基座
打包
打包发布
使用自定义基座开发调试uni-app原生插件后,不可直接将自定义基座apk作为正式版发布。
应该重新提交云端打包(不能勾选“自定义基座”)生成正式版本。
自定义基座打包完成后,选择自定义调试基座。
之后,就可以真机运行调试了
2.3 正式使用MT-TTS
插件的demo里面有示例代码,挺详细的,这里对主要使用步骤进行简单说明:
用requireNativePlugin
导入插件
const SpeechTTS= uni.requireNativePlugin("MT-TTS-Speech");
先进行初始化
<button class="title" size="mini" @click="init">Init TTSbutton>
init() {console.log('>> TTS:init...')SpeechTTS.init((callback) => {this.isReady = true;console.log('>> tts: init success');});SpeechTTS.onDone((res) => {console.log(">> tts: play end " + res)});},
语音播放
<button class="title" size="mini" @click="play">播放button>
text: '请。112号、张三,到,C04、检查'
play() {console.log('>> tts: play...');const res = SpeechTTS.speak({text: this.text});console.log('>> tts: play result = ' + res);},
其他使用请参考下面的插件API
插件API
- 初始化
init(options, callback)
- 设置语调
setPitch(num)
范围 0-9,默认5 - 设置语速
setSpeed(num)
范围 0-9,默认5 - 设置语速
setVolumn(num)
范围 0-9,默认15 - 获取状态
isSpeeking()
- 播放
speek(text, utteranceId)
- 播放
changeSpeeker(text)
text: F(度小美)、M(度小宇)、Y(度丫丫)、X(度逍遥), 成功返回0 - 停止合成
stop()
- 暂停播放
paused()
- 恢复播放
resume()
- 销毁
destroy()
- 开始播放回调注册
(callback)
- 完成播放回调注册
onDone(callback)
- 播放出错回调注册
(callback)
本篇文章就介绍到这里啦,祝各位程序员1024程序员节日快乐!
来源地址:https://blog.csdn.net/qq_23073811/article/details/127486966