更新记录
1.0.0(2026-08-12)
新版本,男声的模型小,速度快。女生的模型大,速度稍慢。当前接入两套离线 VITS 模型: vits-piper-zh_CN-chaowen-medium-int8 voiceId: "0",Chaowen 中文男声,模型文件为 zh_CN-chaowen-medium.onnx。
vits-melo-tts-zh_en voiceId: "1",Melo 中英双语女声,模型文件为 model.onnx。
平台兼容性
uni-app(4.0)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | Android | Android插件版本 | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | × | 5.0 | 1.0.0 | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
yzj-sherpa-onnx
Android 普通话离线 TTS UTS 插件,基于 sherpa-onnx 1.13.4 与 VITS 模型。
import { initTts, speakTts, stopTts } from '@/uni_modules/yzj-sherpa-onnx'
await initTts({ language: 'zh-CN', speechRate: 1, volume: 1 })
await speakTts({ text: '你好,这是本地离线语音合成。' })
await stopTts()
voiceId 用于选择模型音色:0 为 Chaowen 男声,1 为 Melo 中英女声。切换音色前需要调用 initTts({ voiceId }),同一音色重复初始化会直接复用已加载模型。speechRate 支持 0.5 到 2.0。
基础用法
<script>
import {
initTts,
offTtsEvent,
onTtsEvent,
speakTts,
stopTts
} from '@/uni_modules/yzj-sherpa-onnx'
export default {
data() {
return {
ttsListenerId: null
}
},
async onLoad() {
this.ttsListenerId = onTtsEvent((event) => {
console.log('TTS 事件:', event.type, event.utteranceId, event.errMsg)
})
const result = await initTts({
language: 'zh-CN',
voiceId: '0',
speechRate: 1,
volume: 1
})
if (!result.ok) {
uni.showToast({ title: result.errMsg, icon: 'none' })
}
},
onUnload() {
if (this.ttsListenerId != null) {
offTtsEvent(this.ttsListenerId)
this.ttsListenerId = null
}
},
methods: {
async speak() {
const result = await speakTts({
text: '收款成功,感谢您的惠顾。',
queueMode: 'flush',
voiceId: '0',
speechRate: 1,
volume: 1
})
if (!result.ok) {
uni.showToast({ title: result.errMsg, icon: 'none' })
}
},
async stop() {
await stopTts()
}
}
}
</script>
queueMode: 'flush' 会中断当前播报并立即播放新文本;需要排队播报时传入 'add'。切换到女声时,先调用 initTts({ voiceId: '1' }),待其成功后再调用 speakTts()。
播报性能与标点
插件在初始化完成后会在后台执行一次短文本预热,首次点击播报无需再承担模型首次推理的初始化开销。播报使用 sherpa-onnx 流式回调,将首个音频块直接写入 AudioTrack,无需等待整句合成完成。
为避免句号、问号等造成过长的句间静音,播报文本中的中英文逗号、句号、问号、感叹号、分号和冒号会统一转换为中文逗号。该处理保留短暂停顿,但不会像句末标点一样产生较长停顿。原始文本不会被修改。
音频播放使用系统最小缓冲的 3 倍,并按设备 CPU 核心数自动使用最多 4 个推理线程,以优先保证长句的连续播放。实际首音延迟和停顿仍会受到设备性能、模型体积及文本内容影响。
模型不随 APK 打包,部署路径和文件清单见 MODEL.md。模型或任一必要文件缺失时,initTts() 返回 9031010。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 15
赞赏 0
下载 12502586
赞赏 1941
赞赏
京公网安备:11010802035340号