更新记录
1.0.0(2026-05-18) 下载此版本
- 初始发布
muqian-tts - 基于 UTS 封装系统 TTS,支持 Android、iOS、Web
- 提供
speak、stop、pause、resume、isSpeaking能力 - 支持语速、音调、音量、语言参数与统一错误回调
平台兼容性
uni-app(5.08)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | × | 5.0 | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
muqian-tts 文档
模块说明
muqian-tts 是一个跨平台 TTS 能力封装,当前实现覆盖:
该插件由 AI 开发,遇到问题建议优先问一下 AI。
- Android:基于系统
TextToSpeech - iOS:基于系统
AVSpeechSynthesizer - Web:基于浏览器
speechSynthesis
适合用于:
- 文本朗读
- 无障碍语音播报
- 学习类、工具类内容发声
- 轻量提示语音输出
模块位置
uni_modules/muqian-tts
平台支持
| 平台 | 支持情况 | 实现方式 |
|---|---|---|
| Android | 支持 | TextToSpeech |
| iOS | 支持 | AVSpeechSynthesizer |
| Web/H5 | 支持 | window.speechSynthesis |
最低平台要求:
- Android:
minSdkVersion = 21 - iOS:
deploymentTarget = 12.0
对外能力
模块导出以下方法:
speak(options):开始播报stop():停止播报pause():暂停播报resume():继续播报isSpeaking():是否正在播报
speak 参数说明
speak(options) 的参数结构如下:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
text |
string |
是 | - | 要播报的文本 |
rate |
number |
否 | Android/Web 1.0,iOS 0.5 |
语速 |
pitch |
number |
否 | 1.0 |
音调 |
volume |
number |
否 | 1.0 |
音量 |
lang |
string |
否 | "" |
语言,例如 zh-CN、en-US |
success |
(res) => void |
否 | - | 播报正常结束回调 |
fail |
(err) => void |
否 | - | 播报失败回调 |
complete |
(res) => void |
否 | - | 完成回调 |
成功回调返回:
{ errMsg: 'speak:ok' }
失败回调返回:
{
errSubject: 'muqian-tts',
errCode: 9010001,
errMsg: 'speak:fail TTS engine not available'
}
错误码
| 错误码 | 含义 |
|---|---|
9010001 |
TTS 引擎不可用 |
9010002 |
text 为空 |
9010003 |
TTS 初始化失败 |
9010004 |
语言不支持 |
说明:当前源码中虽然预留了 9010003、9010004,但现有 UTS 层实际主要返回的是 9010001 和 9010002。
使用示例
示例按 uni-app 中直接使用 uni_modules 插件的方式编写:
import { speak, stop, pause, resume, isSpeaking } from '@/uni_modules/muqian-tts'
export function playDemo() {
speak({
text: '你好,欢迎使用木千语音播报。',
lang: 'zh-CN',
rate: 1,
pitch: 1,
volume: 1,
success(res) {
console.log('播报完成', res)
},
fail(err) {
console.error('播报失败', err)
}
})
}
export function stopDemo() {
if (isSpeaking()) {
stop()
}
}
export function pauseDemo() {
pause()
}
export function resumeDemo() {
resume()
}
平台差异与注意事项
- Android 首次调用时会先初始化
TextToSpeech,初始化完成后再执行待播报文本。 - Android 的
pause()实际调用的是stop(),系统 TTS 本身不提供真正的暂停/续播能力,因此resume()基本无实际效果。 - iOS 的默认
rate为0.5,并且内部会转换到AVSpeechUtterance的速率区间,和 Android/Web 的听感不完全一致。 - Web 依赖浏览器原生
speechSynthesis,不同浏览器的音色、语言包和触发时机可能不同。 - 如果调用
speak()时传入空文本,会直接走失败回调,不会触发播报。 - 当再次调用
speak()时,当前实现会中断上一段播报并直接开始新的内容。
接入建议
- 对朗读类页面,建议在新内容播放前先调用一次
stop(),避免并发播报状态混乱。 - 如果业务要求严格的暂停/继续体验,Android 端不要依赖当前
pause()/resume()语义。 - 如果有多语言需求,优先在业务侧显式传
lang,例如zh-CN、en-US。
源码参考
uni_modules/muqian-tts/package.jsonuni_modules/muqian-tts/utssdk/interface.utsuni_modules/muqian-tts/utssdk/unierror.utsuni_modules/muqian-tts/utssdk/app-android/index.utsuni_modules/muqian-tts/utssdk/app-android/MuqianTts.ktuni_modules/muqian-tts/utssdk/app-ios/index.utsuni_modules/muqian-tts/utssdk/app-ios/MuqianTts.swiftuni_modules/muqian-tts/utssdk/web/index.uts

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 3
赞赏 0
下载 11968156
赞赏 1914
赞赏
京公网安备:11010802035340号