更新记录

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 服务适配器,方便接入阿里云、腾讯云、百度、火山等第三方语音服务。

插件不内置第三方平台密钥,不承诺开箱即用真实语音生成或真实语音识别。生产环境请在云函数中配置你自己的服务地址、鉴权参数和密钥。

功能特点

  • 一个云函数同时提供 textToSpeechspeechToText
  • 内置 mock provider,无密钥即可验证示例页面、云函数调用和返回结构。
  • 预留 httpAdapter provider,把统一参数转发到你自己的 TTS / ASR HTTP 服务。
  • 客户端提供 textToSpeech()speechToText()callCloudVoice() 三个方法。
  • 不申请 Android/iOS 原生权限,不内置广告 SDK,不采集终端用户数据。

安装与部署

  1. 从插件市场导入 JQ-CloudVoice
  2. 在项目中确认存在 uni_modules/JQ-CloudVoice
  3. uni_modules/JQ-CloudVoice/uniCloud/cloudfunctions/jq-cloud-voice 上传并部署到你的 uniCloud 服务空间。
  4. 在页面中通过 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)

真实识别服务通常需要传入 fileIDaudioUrlbase64 之一。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 textToSpeechtts
provider String 默认 mock,可传 httpAdapter
text String 待合成文本,默认限制 2000 字以内
voice String 音色,具体值由你的服务决定
speed Number 语速,具体范围由你的服务决定
format String 例如 mp3wav
extra Object HTTP 适配器配置

speechToText

字段 类型 必填 说明
action String speechToTextasr
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 下,fileIDaudioUrlbase64 至少传一个。

错误码

错误码 说明
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,再把 fileIDaudioUrl 传给 speechToText

隐私、权限声明

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

无。插件不申请 Android/iOS 原生系统权限;如果业务自行做录音上传,请调用方按业务需要配置权限和隐私弹窗。

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

插件不采集终端用户数据。mock 模式不上传真实音频;真实 TTS/ASR 服务由调用方自己的 uniCloud 云函数和第三方服务处理。

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

无。插件自身不展示广告、不内置广告 SDK;市场侧可配置免费广告解锁下载。

许可协议

MIT协议

暂无用户评论。