更新记录
1.0.4(2026-10-23)
下载此版本
1.0.4(2026-10-23)
- 修复播报事件回调无法多次触发的问题(报"回调函数已释放")
- 修复部分设备上引擎初始化失败(status=-1)的问题
- 引擎列表获取更稳定
注:1.0.1~1.0.4 为发布前的内部迭代版本,功能以 1.0.0 的功能清单为准。
1.0.3(2026-10-23)
- 修复:TextToSpeech 改为在主线程创建。UTS 插件代码默认运行在无线程 Looper 的独立线程池,直接构造会导致引擎绑定失败(OnInitListener 返回 status=-1)
- 优化:初始化失败的错误提示中增加排查指引(设备是否安装TTS引擎)
- 示例工程:移除 App.vue 中的标签选择器全局样式(nvue 仅支持 class 选择器,否则编译报错)
1.0.2(2026-10-22)
修复云端编译错误(HBuilderX 5.26):
- getEngines 改用迭代器遍历引擎列表。原 for 循环变量被 UTS 推断为 Kotlin Number,传入 List.get(i)(需要 Int)导致 "Argument type mismatch" 编译失败
1.0.1(2026-10-22)
修复编译问题(HBuilderX 5.26 云打包实测通过):
- 修正 Locale 引用包名(java.util.Locale)
- 修正 speak 队列模式参数的类型(显式 Int),解决 UTS 编译到 Kotlin 的 Number/Int 类型不匹配
1.0.0(2026-10-21)
首发版本。
- init 初始化TTS引擎(支持系统默认引擎与指定引擎包名)
- setTtsEngine 引擎切换
- speak 文字转语音播报(支持立即播报/排队播报,支持播报事件回调:start/done/error)
- setVoiceSpeed / setVoicePitch 语速音调配置
- setLanguage 播报语言设置
- getEngines 获取可用引擎列表
- getDefaultEngine 获取系统默认引擎
- stop 停止播报
- shutdown 释放资源
平台兼容性
uni-app(4.0)
| Vue2 |
Vue2插件版本 |
Vue3 |
Vue3插件版本 |
Chrome |
Safari |
app-vue |
app-vue插件版本 |
app-nvue |
app-nvue插件版本 |
Android |
Android插件版本 |
iOS |
鸿蒙 |
| √ |
1.0.4 |
√ |
1.0.4 |
× |
× |
√ |
1.0.4 |
√ |
1.0.4 |
8.0 |
1.0.4 |
× |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(4.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
- |
- |
- |
- |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| × |
× |
√ |
√ |
POS-TTSSpeaker 安卓TTS文字转语音播报
利用 Android 系统 TTS 引擎将文字转成语音播报,支持多引擎选择、语速音调配置、播报队列与播报事件回调。适用于订单播报、核销提醒、智能硬件等场景。
平台兼容性
| Android |
iOS |
H5 |
小程序 |
| ✔(API 21+,armeabi-v7a / arm64-v8a) |
✘ |
✘ |
✘ |
依赖权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
(已通过插件的 config.json 自动注入,无需手动配置)
快速上手
// 仅 App 端可用
import {
init, speak, stop, setTtsEngine, setVoiceSpeed, setVoicePitch,
getEngines, getDefaultEngine, available, shutdown
} from '@/uni_modules/pos-tts-speaker'
// 1. 初始化(必须最先调用),传空字符串使用系统默认引擎
init('', (res) => {
console.log(res.code == 0 ? '初始化成功' : '初始化失败:' + res.message)
})
// 2. 播报:0-立即播报(打断之前的);1-排队播报
speak('支付成功,金额28元', 0, 'task_001', (evt) => {
// evt = { event:'start'|'done'|'error', taskId, code, message }
if (evt.event == 'done') console.log('播报完成')
})
// 3. 停止播报(清空队列)
stop()
全量接口说明
available()
init(engine, callback)
- 初始化 TTS 引擎,必须先于其他接口调用
- @param engine 引擎包名。传空字符串
'' 使用系统默认引擎,如:init('com.iflytek.speechsuite')
- @param callback 初始化结果回调,res =
{ code, message, engine },code 为 0 表示成功
setTtsEngine(engine, callback)
- 切换语音引擎(释放旧引擎并重建)。建议配合本地缓存:把当前引擎包名存入 uni.setStorageSync,进入应用后 init 时传入
- @param engine 引擎包名,如:
com.iflytek.speechsuite
- @param callback 同 init
speak(text, queueMode, taskId, callback)
- 将文字转为语音播报
- @param text 要播报的文字
- @param queueMode 播放模式:
0 打断之前的任务立即播报;1 排队,播完之前的再播本次
- @param taskId 播报任务id,可为空字符串(自动生成)
- @param callback 播报事件回调,res =
{ event: 'start'|'done'|'error', taskId, code, message }
setVoiceSpeed(speed, callback)
- 设置语速。
1.0 正常,0.5 一半语速,2.0 两倍语速
- @param callback res =
{ code, message, engine }
setVoicePitch(pitch, callback)
- 设置音调。
1.0 正常音调
- @param callback res =
{ code, message, engine }
setLanguage(language, callback)
- 设置播报语言(扩展接口),如
zh-CN、en-US。默认初始化后已设为简体中文
getEngines()
- 获取设备上可用的 TTS 引擎列表(需先 init)
- @return
{ code, message, data: [{ appName: '讯飞语音引擎', packageName: 'com.iflytek.speechsuite' }] }
getDefaultEngine()
- 获取系统默认引擎包名
- @return string
stop()
shutdown()
完整示例
见本插件所在工程的 pages/index/index.vue 演示页面,包含:引擎列表获取、引擎切换、语速/音调滑块调节、队列播报、事件日志等全部功能的可运行示例。
常见问题
- 没有声音? 设备需已安装 TTS 引擎(如系统自带 Google TTS / 讯飞语音引擎),并在系统设置中确认引擎可用;部分国产设备需先安装"讯飞语音+"等引擎。
- 切换引擎后无声? 切换引擎是异步的,请等 setTtsEngine 回调 code==0 后再 speak。
- 播报中文变成了英文读音? 调用 setLanguage('zh-CN') 或确认引擎支持中文。