更新记录

1.0.0(2026-11-10)

首次发布。基于 HarmonyOS CoreSpeechKit 实现文本转语音(TTS),提供 initTts 预创建引擎、speak 文本播报、stop 停止、isSpeaking 状态查询、release 释放,并支持开始/完成/停止/错误回调。


平台兼容性

uni-app(4.31)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × × × × × √
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.31)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × × × √ ×

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × × √

xingxing-tts 文本转语音插件

HarmonyOS 原生 TextToSpeechManager 的 uni-app 版 UTS 插件封装,能力一一对应:

原生能力 插件 API
createByCallback() initTts()
speak(text, done) speak()(完成回调为 onDone)
ttsEngine.stop() stop()
无 isSpeaking()(对应 TextToSpeechEngine.isBusy())
无 release()(对应 TextToSpeechEngine.shutdown())
setListener 回调 onStart / onDone / onStop / fail

目录结构

uni_modules/xingxing-tts/
├─ package.json
├─ readme.md
└─ utssdk/
   ├─ interface.uts                    # 跨端类型定义
   ├─ index.uts                        # 未适配平台兜底实现
└─ app-harmony/
   └─ index.uts                     # UTS 层:参数处理与回调分发,直接调用 CoreSpeechKit

UTS 本身是 ArkTS 的超集,这里直接以 UTS 书写原生实现,避免再拆分 .ets 文件导致跨 .uvue / .app-harmony 编译线时无法解析依赖。 原生 @kit.CoreSpeechKit 的调用统一放在 app-harmony/index.uts 中,UTS 层只负责参数与回调转发。

使用方式

把整个 xingxing-tts 目录拷贝到 uni-app 项目的 uni_modules/ 下即可,通过 uni_modules 方式引入。

1. 预创建引擎(建议放在 App.vue onLaunch)

import { initTts } from '@/uni_modules/xingxing-tts'

initTts({
  language: 'zh-CN',
  person: 0,
  online: 1,
  success: () => console.log('TTS 引擎已就绪'),
  fail: (err) => console.error(err.errCode, err.errMsg)
})

2. 播报文本

import { speak } from '@/uni_modules/xingxing-tts'

speak({
  text: '答对了,太棒了,下一题',
  speed: 1,
  volume: 2,
  pitch: 1,
  success: (res) => console.log('下发成功', res.requestId),
  onStart: (res) => console.log('开始播报', res.requestId),
  onDone: (res) => console.log('播报完成', res.requestId),
  onStop: (res) => console.log('播报被停止', res.requestId),
  fail: (err) => console.error(err.errCode, err.errMsg)
})

speak 内部会自动创建引擎,即使未调用 initTts 也可直接使用,只是首次播报会有创建引擎的耗时。

3. 停止 / 查询 / 释放

import { stop, isSpeaking, release } from '@/uni_modules/xingxing-tts'

stop({ success: () => console.log('已停止') })
const playing = isSpeaking()
release()

参数说明

参数 说明 默认值
text 播报文本,长度不超过 10000 字符 必填
requestId 本次播报唯一标识,同一实例内不可重复 ${Date.now()}
language 语种,zh-CN / en-US zh-CN
person 音色,中文 0(聆小珊女声)/ 13 / 21 0
online 模式,0 在线 1 离线 1
speed 语速,0.5~2 1
volume 音量,0~15 2
pitch 音调,0.5~2 1
queueMode 队列模式,0 追加 1 清空后播报 0
soundChannel 声道 3
playType 播放类型,0 仅合成 1 合成并播报 1

注意事项

  1. 离线模式(online: 1)为本地合成,若使用在线模式(online: 0)需保证应用已声明 ohos.permission.INTERNET 权限,可在 harmony-configs/entry/src/main/module.json5 中补充。
  2. 同一时刻全设备最多支持创建 3 个 TTS 实例,插件内部保持单例,请勿重复 initTts 之外的手动创建。
  3. shutdown 后单例会被清空,下次调用 speak/initTts 会重新创建引擎。
  4. 当前仅实现了 HarmonyOS NEXT 端;其他平台走 utssdk/index.uts 兜底,统一 fail 返回 10086001。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

本插件为文本转语音(TTS)能力封装,自身不申请系统权限。离线合成模式(online:1)无需任何权限;若使用在线合成模式(online:0),宿主 App 需自行声明并申请 ohos.permission.INTERNET 网络权限。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集、不上传任何用户隐私数据。离线模式下文本仅在设备端通过 HarmonyOS CoreSpeechKit 本地合成;在线模式下文本仅发送给设备系统 TTS 服务进行合成,插件本身不向任何第三方服务器发送数据。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。