更新记录
1.0.6(2023-11-08)
插件内部增加常见问题解决方案
1.0.5(2023-04-21)
初始化逻辑、语音播报逻辑优化,解决偶现停止后重新播放失败的bug
1.0.4(2023-04-14)
1、增加设置队列模式函数setQueueMode(String queueMode) 2、调用speak2函数时增加回调结果,详细说明见插件说明 3、更新插件说明
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
安卓文字转语音原生插件
- 支持Android平台使用(本插件不是第三方语音引擎实现,无第三方收费)
- 函数说明
序号 | 函数名称 | 函数类型 | 函数说明 |
---|---|---|---|
1 | init1() | 初始化 | 基本初始化,音调和语速默认为常规 1.0 |
2 | init2(float pitch, float speechRate) | 初始化 | 参数1:设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规,默认1.0;参数2:设置语速,1.0为正常语速,默认为1.0 |
3 | init3(String engine) | 初始化 | 使用指定语音播报引擎(需安装第三方语音播报引擎),音调和语速默认为常规 1.0 |
4 | init4(String engine, float pitch, float speechRate) | 初始化 | 参数1:使用指定语音播报引擎(需安装第三方语音播报引擎),参数值为第三方引擎包名,音调和语速默认为常规 1.0;参数2、参数3与初始化函数init2(float pitch, float speechRate)一致 |
5 | setPitch(float pitch) | 设置音调 | 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规,默认1.0 |
6 | setSpeechRate(float speechRate) | 设置语速 | 设置语速,1.0为正常语速,默认为1.0 |
7 | setQueueMode(String queueMode) | 设置播放队列方式 | 参数取值见下方“setQueueMode函数说明” |
8 | speak1(String text) | 文字转语音 | 参数为要转换的文字 |
9 | speak2(String text,callback) | 文字转语音 | 参数1为要转换的文字;参数2为回调函数 |
10 | stopSpeak() | 停止播放 | 停止播放 |
11 | resume() | 重新播放 | 重新播放,调用stopSpeak()之后课调用该函数,该函数是从头开始播放,并非从停止位置开始播放 |
-
setQueueMode(String queueMode)函数说明
该函数为设置播放队列方式的函数,即在调用speak1或speak2函数时,是否覆盖前次调用时设置的播报内容。 可取值如下:(不设置时默认为 QUEUE_FLUSH ) 1、QUEUE_ADD ---> 队列模式,其中新条目添加在回放队列的末尾。 2、QUEUE_FLUSH ---> 队列模式,播放队列中的所有条目都被删除并被新条目取代。
-
speak2(String text,callback)函数中回调函数说明
回调函数将会返回如下结果: {"msg":"语音转文字播报请求ID!","code":1,"data":{"request_id":"1682892941344"}} {"msg":"语音转文字播报开始!","code":2,"data":{"request_id":"1682892941344"}} {"msg":"语音转文字播报完成!","code":0,"data":{"request_id":"1682892941344"}}
-
code 值说明
序号 code值 说明 1 2 语音播报开始 2 1 语音播报request_id,在调用speak2时回调函数优先返回 3 0 语音转文字播报完成 4 -1 文字转语音类初始化失败,无法正常使用! 5 -2 系统不支持中文播报,建议尝试使用init3、init4函数初始化 6 -3 语音播报出错 -
第三方语音播报引擎可参考
* 使用指定语音播报引擎,需安装第三方语音播报引擎,如: * 1、com.google.android.tts 谷歌文字转语音引擎,不支持5.0以下系统; * 2、com.iflytek.speechcloud 科大讯飞语音引擎3.0,支持4.0以上系统; * 3、com.baidu.duersdk.opensdk 度秘语音引擎3.0 不支持5.0以下系统; *
-
使用示例
<template> <view class="uni-column"> <input type="text" :value="value"> <button @click="queueMode('QUEUE_ADD')">队列模式QUEUE_ADD</button> <button @click="queueMode('QUEUE_FLUSH')">队列模式QUEUE_FLUSH</button> <button @click="clickPlay()">播放</button> <button @click="clickStop()">停止</button> <button @click="clickReplay()">重新播放</button> </view> </template> <script> const speechModule = uni.requireNativePlugin("jushi-TextToSpeech") export default { data() { return { value: "测试安卓原生插件,系统自带文字转语音0.56" } }, created() { this.init_1() // this.init_2() // this.init_3() // this.init_4() }, methods: { init_1() { //初始化方法1 //音调和语速设置 // speechModule.setPitch(1.0)//设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规,默认1.0 // speechModule.setSpeechRate(1.0)//设置语速,1.0为正常语速,默认为1.0 //基本初始化,音调和语速默认为常规 1.0 speechModule.init1() }, init_2() { //初始化方法2 //初始化并传参 //第一个参数 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规,默认1.0 //第二个参数 设置语速,1.0为正常语速,默认为1.0 speechModule.init2(1.0, 1.0) }, init_3() { //初始化方法3 // speechModule.setPitch(1.0)//设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规,默认1.0 // speechModule.setSpeechRate(1.0)//设置语速,1.0为正常语速,默认为1.0 //使用指定语音播报引擎(需安装第三方语音播报引擎),音调和语速默认为常规 1.0 speechModule.init3('com.google.android.tts') }, init_4() { //初始化方法4 //使用指定语音播报引擎(需安装第三方语音播报引擎),并设置音调和语速 speechModule.init4('com.google.android.tts', 1.0, 1.0) }, clickPlay(){//调用文字转语音函数 // speechModule.speak1(this.value)//无结果回调 //有结果回调 speechModule.speak2(this.value,res=>{ console.log('============ '+res) }) }, clickStop(){ speechModule.stopSpeak() }, clickReplay(){ speechModule.resume() }, queueMode(queueMode){//设置播放队列方式 //取值:(不设置时默认为 QUEUE_FLUSH ) //1、QUEUE_ADD 队列模式,其中新条目添加在回放队列的末尾。 //2、QUEUE_FLUSH 队列模式,播放队列中的所有条目都被删除并被新条目取代。 speechModule.setQueueMode(queueMode) } } } </script> <style> .uni-column { display: flex; flex-direction: column; } .uni-row { display: flex; flex-direction: row; } input { padding: 10rpx; margin-top: 400rpx; } button{ margin-top: 30rpx; } </style>
-
示例应用下载
其它插件
安卓原生插件
-
UTS插件
-
前端插件