更新记录
1.0.0(2026-11-11)
无
平台兼容性
uni-app(5.0)
| Vue2 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|
| - | √ | 1.0.0 | - | - | - | - | 6.0 | 1.0.0 | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.0)
| Chrome | Safari | Android | Android插件版本 | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|
| - | - | 6.0 | 1.0.0 | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | √ | √ |
离线文字转语音(Android UTS)
支持 uni-app App Android 6.0(API 23)及以上的 ARM 设备。内置 Sherpa-ONNX 1.13.8 和 MeloTTS 中文模型,可在断网环境下播报中文及词典内英文。模型随安装包交付,插件压缩包约 200 MiB。
接入
- 将解压后的
zyx-offline-tts放入业务工程的uni_modules/。 - 在 HBuilderX 5.26 或更新的版本中,为 Android 制作包含该插件的自定义调试基座或完整 APK。选择
arm64-v8a或armeabi-v7a,最低 Android 版本设为 API 23 或以上。 - 用新基座运行项目。接入时从 Android 打包配置中移除旧版
Slyt-OfflineTTS原生插件,两版包含相同的原生引擎类和 Sherpa 库。 - 打开本仓库的示例工程
zyx-offline-tts-demo可体验初始化、首段预合成、替换播报和数字开关。正式打包时使用项目自己的 AppID 与签名。
在 HBuilderX 调试
- 打开
manifest.json,为示例工程配置自己的 DCloud AppID。 - 选择「发行 → 原生 App 云打包」,选择 Android,勾选「打自定义调试基座」。生成后可在工程的
unpackage/debug/android_debug.apk找到基座。 - 选择「运行 → 运行到手机或模拟器 → 运行到 Android App 基座」,在设备选择窗口选「自定义基座 → 本地基座」。
标准基座可启动页面,但缺少本插件的 AAR、模型和 JNI 库。看到 zyx-offline-tts not found 时,检查运行窗口是否选择了用当前工程生成的自定义基座。编译成功和同步资源成功只说明前端已部署。DCloud 自定义基座说明
import { init, speak, stop, release } from '@/uni_modules/zyx-offline-tts'
init(result => {
if (result.code !== 0) {
console.error(result.message)
return
}
speak({
text: '您已进入南10-侧9区域,请注意安全。',
utteranceId: 'inspection-1',
digitsToChinese: true
}, result => {
console.log(result.utteranceId, result.state, result.message)
})
})
// 在业务页面 onHide 调用 stop(() => {})。
// 在业务页面 onUnload 调用 release(() => {})。
接口
所有接口异步回调一次,返回 { code, state, message, utteranceId, ready }。插件在同一个 uni-app 宿主中共享一份引擎。多页面共用时由应用统一管理初始化和释放。
| 调用 | 回调 |
|---|---|
init(callback) |
模型加载和预热完成后返回 ready 或 error。并发初始化复用同一次加载。 |
speak({ text, utteranceId?, digitsToChinese? }, callback) |
替换当前播报。回调返回 done、stopped、replaced、released 或 error。省略 ID 时自动生成。 |
prepare({ text, digitsToChinese? }, callback) |
在空闲时预合成首段。回调 accepted 表示已提交,可通过 getStatus 查询 prepared。用相同文本及数字开关播报可复用缓存。 |
getStatus(callback) |
查询当前状态,例如 idle、loading、ready、prepared、generating、playing。 |
stop(callback) |
停止播放并取消首段准备,保留模型。 |
release(callback) |
停止并提交模型释放。后续可重新初始化。 |
text 最长 4000 个 UTF-16 单元。digitsToChinese 默认关闭,开启后把半角及全角数字逐位转换为中文,例如 GDX2-31,编号007 转为 GDX二-三一,编号零零七。页面原始文本保留。
code=0 表示成功。负值分别表示引擎或上下文失败(-1)、文本无效(-2)、模型未就绪(-3)、播报中不能预合成(-4)以及初始化被释放取消(-5)。
Android 宿主 Activity 暂停时会停止播报,销毁时会释放模型。uni-app 的页面导航可能复用同一个 Activity,业务页面应在 onHide 停止、在 onUnload 按其引擎所有权释放。
从源码重新导出
在 UniPlugin-Hello-AS 下运行以下命令。Java 原生适配层和 AAR 构建配置在 uniplugin_tts_uts,引擎、模型和依赖来自 uniplugin_tts。
./gradlew :uniplugin_tts_uts:assembleRelease :uniplugin_tts_uts:lintRelease
python3 uniplugin_tts_uts/package_plugin.py
导出脚本将两个 AAR 写入示例工程的插件目录,并生成 dist/zyx-offline-tts-1.0.0.zip。构建需要 Android SDK 35、JDK 17 或更高版本以及已经准备好的模型和 Sherpa AAR。
验证记录
HBuilderX 5.34 编译器已生成 Android 示例前端和 UTS 桥接,生成的 Kotlin 已与 Android SDK 及 uni-app 运行库一起编译。原生 release AAR、Android lint(0 errors)及复用模块的 14 项回归测试通过。使用 Android 离线 SDK 构建的示例 APK 包含 ONNX 模型及两种 ARM JNI 库。
独立测试 APK 已在连接的 Android 手机上安装,离线 SDK 宿主因测试包名未配置匹配的 DCloud AppKey,在进入页面前提示 AppKey 配置错误。使用项目自己的自定义基座后仍需验证设备播放与编号听音。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 28
赞赏 0
下载 12761349
赞赏 1959
赞赏
京公网安备:11010802035340号