更新记录

1.0.1(2020-08-20) 下载此版本

修复安卓5以下播放失效

1.0.0(2020-08-07) 下载此版本

发布


平台兼容性

Android Android CPU类型 iOS
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择


使用方法

调用手机已安装的 TTS 引擎进行语音合成,大部分手机不会自带支持中文的语音引擎,可以自行下载,参考Android 文字转语音引擎(TTS)简单比较及下载

已 ROOT 设备可搭配使用 Fvv-UniPackageManager 静默安装下载好的 TTS 引擎 apk

不设置语音引擎默认使用系统默认的TTS引擎,一般都是 com.svox.pico 且不支持中文。

部分引擎不支持 语调 语速 设置,如:com.iflytek.speechcloud 语调无效 语速100才有区别 。安卓系统自带的TTS引擎支持语调语速,建议用系统自带的引擎测试语调语速

安卓5以下回调无效

引用方式

const FvvUniTTS = uni.requireNativePlugin("Fvv-UniTTS");

API

//初始化,所有操作都需在初始化后执行
init(callback,engine)

//播放
speak(object)
//停止
stop()
//保存到文件
saveAudioFile(object)

//设置音调,默认 50
setPitch(int)
//设置语速,默认 65
setSpeechRate(int)

//获取已安装的 tts 引擎
getInstallTTS(callback)
//设置要使用的 tts 引擎
setEngine(packageName)
//设置语言,作用不大
setSpeechRate(lang)
//设置自定义语言,貌似没用
setLanguageCustom(lang,country)

//获取最大支持合成的字符数
getMaxSpeechInputLength()
//获取当前是否正在播放
isSpeaking()
//打开系统设置tts的页面
openSettings()

//销毁
destroy()


初始化
init(callback,engine)

参数说明

参数 类型 必填 说明
callback function 回调函数
engine string 引擎apk包名,空为使用系统默认tts引擎

callback(int),安卓5.0以下无回调

参数 类型 说明
res int 返回调用初始化状态,0为成功,其他为失败

示例

FvvUniTTS.init((res) => {
    console.log(res)
});

播放
speak(object)

object 参数说明

参数 类型 必填 说明
text string 需要合成语音的字符串
queue string 播放类型,flush为清除播放队列立刻播放,add为加入播放队列按顺序播放
id string 播放语音的id,回调时用到,空则随机生成,安卓5.0以下id无效

返回值 int

参数 类型 说明
int int 返回0为成功,其他为失败

示例

FvvUniTTS.speak({
    text:"hello f v v"
});

停止所有播放,并且清除队列
stop()

示例

FvvUniTTS.stop()

保存到文件
saveAudioFile(object)

参数说明

object 参数说明

参数 类型 必填 说明
text string 需要合成语音的字符串
path string 保存的文件路径,默认/sdcard/1.wav
id string 播放语音的id,回调时用到,空则随机生成,安卓5.0以下id无效

示例

FvvUniTTS.saveAudioFile({
    text:"hello", 
    path:"/sdcard/test/1.wav"
})


播放完毕回调
onDone(callback)

参数说明

参数 类型 必填 说明
callback callback 回调函数

返回值 id

参数 类型 说明
id int 播放或者保存到文件时的id

示例

FvvUniTTS.onDone((id) => {
    console.log("onDone:" + id)
});


设置音调,默认 50
setPitch(int)

参数说明

参数 类型 必填 说明
int int 0-100

示例

FvvUniTTS.setPitch(100)

设置语速,默认 65
setSpeechRate(int)

参数说明

参数 类型 必填 说明
int int 0-100

示例

FvvUniTTS.setSpeechRate(100)

获取已安装的tts引擎
getInstallTTS(callback)

参数说明 callback(jsonArray)

参数 类型 说明
priority int 优先级
name string tts包名,初始化或设置引擎时填这个
label string tts引擎名
system bool 是否为系统应用
icon int 图片资源,没用

示例

FvvUniTTS.getInstallTTS(res => {
    console.log(res) 
})

设置要使用的 tts 引擎
setEngine(packageName)

参数说明

参数 类型 必填 说明
packageName string tts包名

返回值 int

参数 类型 说明
int int 返回0为成功,其他为失败

示例

console.log("set engine : " + FvvUniTTS.setEngine("com.iflytek.tts"));

设置语言,作用不大
setLanguage(lang)

参数说明

参数 类型 必填 说明
lang string 语言名称:CANADA、CANADA_FRENCH、CHINA、CHINESE、ENGLISH、FRANCE、FRENCH、GERMAN、GERMANY、ITALIAN、ITALY、JAPAN、JAPANESE、KOREA、KOREAN、PRC、ROOT、SIMPLIFIED_CHINESE、TAIWAN、TRADITIONAL_CHINESE、UK、US

返回值 int

参数 类型 说明
int int 返回0为成功,其他为失败

示例

console.log("set lang : " + FvvUniTTS.setLanguage("CHINESE"));

设置自定义语言,貌似没用
setLanguageCustom(lang,country)

参数说明

参数 类型 必填 说明
lang string 语言名称
国家名称 string 语言名称

返回值 int

参数 类型 说明
int int 返回0为成功,其他为失败

示例

console.log("set lang : " + FvvUniTTS.setLanguageCustom("yue","HKG"));

获取最大支持合成的字符数
getMaxSpeechInputLength()

返回值 int

参数 类型 说明
int int 最大支持的字符数

示例

console.log(FvvUniTTS.getMaxSpeechInputLength());

当前是否正在播放
isSpeaking()

返回值 bool

参数 类型 说明
bool bool 当前是否正在播放

示例

console.log(FvvUniTTS.isSpeaking());

打开系统设置tts的页面
openSettings()

示例

FvvUniTTS.openSettings();

销毁
destroy()

示例

FvvUniTTS.destroy();

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

请参考开源项目地址的开源协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问