更新记录
1.0.1(2020-08-20) 下载此版本
修复安卓5以下播放失效
1.0.0(2020-08-07) 下载此版本
发布
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
√ | 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原生插件配置”->”云端插件“列表中删除该插件重新选择
使用方法
调用手机已安装的 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();