更新记录
1.0.0(2026-06-12) 下载此版本
- 新增 uniCloud 文字转语音接口示例,统一返回音频地址、格式、时长和请求编号。
- 新增语音转文字接口示例,支持音频 URL、fileID、base64 等入参形态。
- 新增 mock provider 和 HTTP 服务适配说明,方便无密钥情况下验证完整调用链。
- 新增示例页面,演示 TTS 和 ASR 两个常用入口。
平台兼容性
云端兼容性
| 阿里云 | 腾讯云 | 支付宝云 |
|---|---|---|
| √ | × | × |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
JQ-CloudVoice uniCloud语音生成识别工具箱
JQ-CloudVoice 是一个面向 uni-app / uniCloud 项目的语音能力接入模板。首版提供文字转语音 TTS、语音转文字 ASR 两个统一接口,内置 mock provider 用于验证完整调用链,并预留 HTTP 服务适配器,方便接入阿里云、腾讯云、百度、火山等第三方语音服务。
插件不内置第三方平台密钥,不承诺开箱即用真实语音生成或真实语音识别。生产环境请在云函数中配置你自己的服务地址、鉴权参数和密钥。
功能特点
- 一个云函数同时提供
textToSpeech和speechToText。 - 内置
mockprovider,无密钥即可验证示例页面、云函数调用和返回结构。 - 预留
httpAdapterprovider,把统一参数转发到你自己的 TTS / ASR HTTP 服务。 - 客户端提供
textToSpeech()、speechToText()、callCloudVoice()三个方法。 - 不申请 Android/iOS 原生权限,不内置广告 SDK,不采集终端用户数据。
安装与部署
- 从插件市场导入
JQ-CloudVoice。 - 在项目中确认存在
uni_modules/JQ-CloudVoice。 - 将
uni_modules/JQ-CloudVoice/uniCloud/cloudfunctions/jq-cloud-voice上传并部署到你的 uniCloud 服务空间。 - 在页面中通过 JS SDK 调用云函数。
文字转语音
import { textToSpeech } from '@/uni_modules/JQ-CloudVoice/js_sdk/jq-cloud-voice/index.js'
const res = await textToSpeech({
provider: 'mock',
text: '欢迎使用 JQ-CloudVoice',
voice: 'female-standard',
speed: 1,
format: 'mp3'
})
console.log(res)
mock 返回结构示例:
{
"success": true,
"action": "textToSpeech",
"provider": "mock",
"data": {
"audioUrl": "https://example.com/jq-cloud-voice/mock-tts.mp3",
"format": "mp3",
"duration": 6,
"message": "mock provider 仅用于验证调用链,不会生成真实音频。"
}
}
语音转文字
import { speechToText } from '@/uni_modules/JQ-CloudVoice/js_sdk/jq-cloud-voice/index.js'
const res = await speechToText({
provider: 'mock',
audioUrl: 'https://example.com/demo.wav',
language: 'zh-CN',
format: 'wav'
})
console.log(res)
真实识别服务通常需要传入 fileID、audioUrl 或 base64 之一。mock provider 可不传真实音频,用于先验证调用链。
HTTP 服务适配器
httpAdapter 会把统一参数转发给你的 HTTP 服务。请把第三方平台签名、密钥、鉴权逻辑放在云函数或你自己的后端服务中,不要把密钥写在前端页面。
const res = await textToSpeech({
provider: 'httpAdapter',
text: '需要合成的文字',
format: 'mp3',
extra: {
endpoint: 'https://your-service.example.com/tts',
method: 'POST',
headers: {
Authorization: 'Bearer your-server-token'
},
params: {
appId: 'your-app-id'
}
}
})
ASR 也可以使用同一个 provider:
const res = await speechToText({
provider: 'httpAdapter',
audioUrl: 'https://your-cdn.example.com/audio.wav',
language: 'zh-CN',
extra: {
endpoint: 'https://your-service.example.com/asr'
}
})
云函数入参
textToSpeech
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action |
String | 是 | 传 textToSpeech 或 tts |
provider |
String | 否 | 默认 mock,可传 httpAdapter |
text |
String | 是 | 待合成文本,默认限制 2000 字以内 |
voice |
String | 否 | 音色,具体值由你的服务决定 |
speed |
Number | 否 | 语速,具体范围由你的服务决定 |
format |
String | 否 | 例如 mp3、wav |
extra |
Object | 否 | HTTP 适配器配置 |
speechToText
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action |
String | 是 | 传 speechToText 或 asr |
provider |
String | 否 | 默认 mock,可传 httpAdapter |
fileID |
String | 否 | uniCloud 文件 ID |
audioUrl |
String | 否 | 音频 URL |
base64 |
String | 否 | 音频 base64 |
language |
String | 否 | 语言,例如 zh-CN |
format |
String | 否 | 音频格式,例如 wav |
extra |
Object | 否 | HTTP 适配器配置 |
非 mock provider 下,fileID、audioUrl、base64 至少传一个。
错误码
| 错误码 | 说明 |
|---|---|
10000 |
action 不支持 |
10001 |
TTS 文本为空 |
10002 |
TTS 文本超长 |
10003 |
TTS provider 不支持 |
11001 |
ASR 缺少音频入参 |
11002 |
ASR provider 不支持 |
20001 |
httpAdapter 缺少 endpoint |
20002 |
当前环境缺少 HTTP 客户端 |
20003 |
HTTP 服务调用失败 |
隐私与权限
- 插件不申请 Android/iOS 原生系统权限。
- 插件不内置广告 SDK,不内置统计 SDK。
- 插件不保存终端用户音频或文本。真实服务调用由你的 uniCloud 云函数和你配置的第三方服务处理。
- 如果你的业务需要前端录音、上传音频或保存识别结果,请按业务合规要求配置权限、隐私弹窗和用户授权说明。
常见问题
为什么 mock provider 不生成真实音频?
mock provider 用于验证导入、部署、调用链和返回结构。真实语音生成或识别需要第三方服务密钥,插件不会内置作者的服务密钥。
可以接入哪些厂商?
只要厂商提供 HTTP API,就可以通过 httpAdapter 或自行扩展云函数接入。常见选择包括阿里云、腾讯云、百度智能云、火山引擎等。
可以做前端录音吗?
首版不内置录音组件,避免增加权限和平台兼容成本。你可以自行录音并把音频上传到 uniCloud,再把 fileID 或 audioUrl 传给 speechToText。

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 117
赞赏 0
下载 34672
赞赏 156
赞赏
京公网安备:11010802035340号