ruoyi-vue-pro 开发指南 ruoyi-vue-pro 开发指南
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 报表与大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • HRM 手册
  • FMS 手册
  • PMS 手册
  • OA 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 报表与大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • HRM 手册
  • FMS 手册
  • PMS 手册
  • OA 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 报表与大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • HRM 手册
  • FMS 手册
  • PMS 手册
  • OA 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 报表与大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • HRM 手册
  • FMS 手册
  • PMS 手册
  • OA 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读

    • 简介
    • 交流群
    • 视频教程
    • 功能列表
    • 快速启动(后端项目)
    • 快速启动(前端项目)
    • 接口文档
    • 技术选型
    • 项目结构
    • 代码热加载
    • 一键改包
    • 迁移模块(适合新项目)
    • 删除功能(以租户为例)
    • 表结构变更(版本升级)
    • 国产信创数据库(DM 达梦、大金、OpenGauss、瀚高、OceanBase、TiDB、GaussDB、PolarDB、神通、Vastbase、MogDB、TongRDS、CacheDB)
    • 如何去除 Redis 缓存
    • 面试题、简历模版、简历优化
    • 项目外包
    • 文档 MCP
  • 后端手册

    • 新建模块
    • 代码生成【单表】(新增功能)
    • 代码生成【主子表】
    • 代码生成(树表)
    • 代码生成(移动端)
    • 功能权限
    • 数据权限
    • 用户体系
    • 三方登录
    • OAuth 2.0(SSO 单点登录)
    • SaaS 多租户【字段隔离】
    • SaaS 多租户【数据库隔离】
    • WebSocket 实时通信
    • 异常处理(错误码)
    • 参数校验、时间传参
    • 分页实现
    • VO 对象转换、数据翻译
    • 文件存储(上传下载)
    • Excel 导入导出
    • 操作日志、访问日志、异常日志
    • MyBatis 数据库
    • MyBatis 联表&分页查询
    • 多数据源(读写分离)、事务
    • Redis 缓存
    • 本地缓存
    • 异步任务
    • 分布式锁
    • 幂等性(防重复提交)
    • 请求限流(RateLimiter)
    • HTTP 接口签名(防篡改)
    • HTTP 接口加解密
    • 单元测试
    • 验证码
    • 工具类 Util
    • 配置管理
    • 数据库文档
  • 中间件手册

    • 定时任务
    • 消息队列(内存)
    • 消息队列(Redis)
    • 消息队列(RocketMQ)
    • 消息队列(RabbitMQ)
    • 消息队列(Kafka)
    • 限流熔断
    • 分库分表
    • 分布式事务
  • 工作流手册

    • 工作流演示
    • 功能开启
    • 工作流(达梦适配)
    • 审批接入(流程表单)
    • 审批接入(业务表单)
    • 流程设计器(BPMN)
    • 流程设计器(钉钉、飞书)
    • 选择审批人、发起人自选
    • 会签、或签、依次审批
    • 流程发起、取消、重新发起
    • 审批通过、不通过、驳回
    • 审批加签、减签
    • 审批转办、委派、抄送
    • 执行监听器、任务监听器
    • 流程表达式
    • 流程审批通知
    • 移动端审批
  • 报表与大屏手册

    • 功能总览
    • UReport2 报表
    • 积木报表与仪表盘
    • GoView 大屏
  • 支付手册

    • 功能开启
    • 支付宝支付接入
    • 微信公众号支付接入
    • 微信小程序支付接入
    • 支付宝、微信退款接入
    • 支付宝转账接入
    • 微信转账接入
    • 钱包充值、支付、退款
    • 模拟支付、退款
    • 移动端支付管理
  • 会员手册

    • 功能开启
    • 微信公众号登录
    • 微信小程序登录
    • 微信小程序订阅消息
    • 微信小程序码
    • 会员用户、标签、分组
    • 会员等级、积分、签到
    • 移动端会员管理
  • 商城手册

    • 商城演示
    • 功能开启
    • 商城装修
    • 在线客服
    • 【商品】商品分类
    • 【商品】商品属性
    • 【商品】商品 SPU 与 SKU
    • 【商品】商品评价
    • 【交易】购物车
    • 【交易】交易订单
    • 【交易】售后退款
    • 【交易】快递发货
    • 【交易】门店自提
    • 【交易】分销返佣
    • 【营销】优惠劵
    • 【营销】积分商城
    • 【营销】拼团活动
    • 【营销】秒杀活动
    • 【营销】砍价活动
    • 【营销】满减送活动
    • 【营销】限时折扣
    • 【营销】内容管理
    • 【统计】会员、商品、交易统计
    • 移动端商城管理
  • ERP手册

    • ERP 演示
    • 功能开启
    • 【产品】产品信息、分类、单位
    • 【库存】产品库存、库存明细
    • 【库存】其它入库、其它出库
    • 【库存】库存调拨、库存盘点
    • 【采购】采购订单、入库、退货
    • 【销售】销售订单、出库、退货
    • 【财务】采购付款、销售收款
    • 移动端 ERP
  • CRM手册

    • CRM 演示
    • 功能开启
    • 【线索】线索管理
    • 【客户】客户管理、公海客户
    • 【商机】商机管理、商机状态
    • 【合同】合同管理、合同提醒
    • 【回款】回款管理、回款计划
    • 【产品】产品管理、产品分类
    • 【通用】数据权限
    • 【通用】跟进记录、待办事项
    • 移动端 CRM
  • AI大模型手册

    • AI 大模型演示
    • 功能开启
    • AI 对话
    • AI 图片生成
    • AI 知识库
    • AI 音乐生成
    • AI 写作翻译
    • AI 思维导图
    • AI 工具(function calling)
    • AI 工作流
    • Dify 工作流
    • FastGPT 工作流
    • Coze 智能体
    • AI PPT 生成
    • AI 语音生成
      • 1. 前置准备
        • 1.1 配置 API 密钥
        • 1.2 配置语音模型
        • 1.3 开启定时任务
      • 2. 语音生成
        • 2.1 合成语音
        • 2.2 我的语音
      • 3. 语音管理
      • 4. 语音表
    • OCR 文字识别
    • 推理模式(thinking)
    • 联网搜索
    • Skills 技能
    • MCP Client 客户端
    • MCP Server 服务端
    • 请求日志与 Token 用量
    • 【模型接入】Claude
    • 【模型接入】OpenAI
    • 【模型接入】谷歌 Gemini
    • 【模型接入】Grok
    • 【模型接入】通义千问
    • 【模型接入】DeepSeek
    • 【模型接入】字节豆包
    • 【模型接入】智谱 GLM
    • 【模型接入】月之暗面 Kimi
    • 【模型接入】MiniMax
    • 【模型接入】腾讯混元
    • 【模型接入】小米 MiMo
    • 【模型接入】硅基流动
    • 【模型接入】百川智能
    • 【模型接入】文心一言
    • 【模型接入】阶跃星辰
    • 【模型接入】讯飞星火
    • 【模型接入】LLAMA
    • 【模型接入】微软 OpenAI
    • 【模型接入】Stable Diffusion
    • 【模型接入】Midjourney
    • 【模型接入】Suno
    • 移动端 AI 大模型
  • IoT物联网手册

    • 功能开启
    • 产品管理
    • 设备管理
    • 物模型配置
    • 设备网关与子设备
    • 设备动态注册
    • 设备影子
    • 消息透传与数据解析
    • 设备接入(概述)
    • 设备接入(HTTP 协议)
    • 设备接入(MQTT 协议)
    • 设备接入(EMQX 协议)
    • 设备接入(TCP 协议)
    • 设备接入(UDP 协议)
    • 设备接入(WebSocket 协议)
    • 设备接入(CoAP 协议)
    • 设备接入(Modbus Client 模式)
    • 设备接入(Modbus Server 模式)
    • 设备接入(自定义协议)
    • 场景联动
    • 数据流转
    • 告警配置
    • OTA 固件升级
    • 移动端 IoT 物联网
    • 设备网关合并部署
  • MES手册

    • MES 演示
    • 功能开启
    • 【基础】物料产品、分类、计量单位
    • 【基础】客户管理、供应商管理
    • 【基础】车间设置、工作站设置
    • 【基础】编码规则
    • 【生产】工序设置、工艺流程
    • 【生产】生产工单
    • 【生产】生产排产、工序流转卡
    • 【生产】生产报工
    • 【生产】安灯配置、安灯呼叫
    • 【生产】工作记录
    • 【仓库】仓库与库区库位、条码赋码、SN码
    • 【仓库】批次管理、库存现有量、库存事务
    • 【仓库】到货通知、采购入库、采购退货
    • 【仓库】生产领料、生产退料、物料消耗
    • 【仓库】产品产出、产品入库
    • 【仓库】发货通知、销售出库、销售退货
    • 【仓库】外协发料、外协入库
    • 【仓库】其他入库、其他出库
    • 【仓库】调拨单、装箱管理
    • 【仓库】库存盘点
    • 【质量】检测项设置、常见缺陷
    • 【质量】质检方案
    • 【质量】来料检验(IQC)
    • 【质量】过程检验(IPQC)
    • 【质量】出货检验(OQC)
    • 【质量】退货检验(RQC)
    • 【质量】待检任务、检验结果、缺陷记录
    • 【设备】设备类型、设备台账
    • 【设备】点检保养项目、点检保养方案
    • 【设备】点检记录、保养记录、维修单
    • 【工具】工具类型、工装夹具台账
    • 【排班】班组设置、节假日设置
    • 【排班】排班计划、排班日历
    • 移动端 MES
  • WMS手册

    • WMS 演示
    • 功能开启
    • 【基础】仓库
    • 【基础】商品、SKU、分类、品牌
    • 【基础】往来企业(供应商、客户)
    • 【库存】库存记录、流水、统计
    • 【单据】入库
    • 【单据】出库
    • 【单据】移库
    • 【单据】盘库
    • 【其它】WMS、MES、ERP 对比
    • 移动端 WMS
  • HRM人力资源

    • HRM 演示
    • 功能开启
    • 【组织】工作台、组织架构
    • 【员工】员工管理
    • 【招聘】招聘管理
    • 【考勤】考勤管理
    • 【社保】社保管理
    • 【薪资】计薪设置、薪资档案
    • 【薪资】月度工资、工资条
    • 【绩效】绩效模板、绩效计划
    • 【绩效】绩效考核、绩效档案
    • 移动端 HRM
  • FMS财务管理

    • FMS 演示
    • 功能开启
    • 【设置】账套管理、财务参数、财务指标
    • 【设置】币别、科目、辅助核算、初始余额
    • 【设置】凭证字、常用摘要、凭证模板
    • 【凭证】凭证管理
    • 【账簿】账簿管理
    • 【报表】财务报表
    • 【结账】期末结账
    • 移动端 FMS
  • PMS项目管理

    • PMS 演示
    • 功能开启
    • 【项目中心】工作台与项目管理
    • 【项目中心】项目详情与迭代
    • 【项目中心】工作项与协作
    • 【知识中心】知识库管理
    • 【知识中心】文档与协作
    • 移动端 PMS
  • OA协同办公

    • OA 演示
    • 功能开启
    • 【协作】日程、任务、计划与汇报
    • 【协作】公告、讨论、通讯录与笔记
    • 【办公】企业邮箱
    • 【办公】企业云盘
    • 【行政】办公用品、用印管理
    • 【行政】会议室、车辆管理
    • 【流程】公文管理
    • 【流程】出差、费用报销
    • 【流程】考勤、请假、加班、转正与离职
    • 移动端 OA
  • IM即时通讯手册

    • IM 演示
    • 功能开启
    • 【好友】好友关系、好友申请
    • 【群聊】群组、群成员、入群申请
    • 【消息】私聊、群聊、频道消息
    • 【频道】频道、频道素材
    • 【内容】表情、敏感词
    • 【通话】语音通话、视频通话、共享屏幕
    • 【WebSocket】实时推送与离线消息
    • 移动端 IM 即时通讯
  • 公众号手册

    • 功能开启
    • 公众号接入
    • 公众号粉丝
    • 公众号标签
    • 公众号消息
    • 模版消息
    • 自动回复
    • 公众号菜单
    • 公众号素材
    • 公众号图文
    • 公众号统计
    • 移动端公众号管理
  • 系统手册

    • 短信配置
    • 邮件配置
    • 站内信配置
    • Webhook(钉钉、飞书、企微)
    • 数据脱敏、字段权限
    • 敏感词
    • 地区 & IP 库
  • 运维手册

    • 开发环境
    • Linux 部署
    • Docker 部署
    • Jenkins 部署
    • 宝塔部署
    • 1Panel 部署
    • Docker Compose 部署
    • Kubernetes 部署
    • HTTPS 证书
    • 服务监控
    • 生产环境安全
    • Tomcat WAR 部署
    • 东方通服务器部署(TongWeb、TongHttpServer)
    • 宝兰德服务器部署(BES AppServer)
    • 内网穿透
  • 前端手册 Vue 3.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • CRUD 组件
    • 国际化
    • IDE 调试
    • 代码格式化
  • 前端手册 Vben 5.x

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • IDE 调试
    • 代码格式化
  • 前端手册 Vue 2.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
  • 前端手册 Admin Uniapp

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • IDE 调试
    • 代码格式化
    • 运行发布
  • 更新日志

    • 【v2026-11】
    • 【v2026-10】
    • 【v2026-09】
    • 【v2026-08】
    • 【v2026-07】
    • 【v2026-06】
    • 【v2026-05】
    • 【v2026-04】
    • 【v2026-03】
    • 【v2026-01】
    • 【v2025-12】
    • 【v2025-11】
    • 【v2025-10】
    • 【v2025-09】
    • 【v2025-08】
  • 开发指南
  • AI大模型手册
芋道源码
2026-11-13
目录

AI 语音生成

AI 语音生成,基于各平台的语音合成(TTS)模型,把文本合成为音频,可以在线播放、下载。目前接入的是:

  • 阿里云:通义千问 Qwen-TTS
  • MiniMax:Speech 系列
  • 字节跳动:豆包语音
  • 百度智能云:短文本语音合成
  • 腾讯云:长文本语音合成(异步任务)

AI 语音生成

整个功能,涉及到 3 个表:

  • 【配置】ai_api_key:API 密钥表
  • 【配置】ai_model:模型表
  • 【语音】ai_speech:语音表

补充说明:

ai_api_key、ai_model 已经在 《功能开启》 讲解,就不重复赘述。

# 1. 前置准备

# 1.1 配置 API 密钥

在 [AI 大模型 -> 控制台 -> API 密钥] 菜单,新增对应平台的密钥:

平台 所属平台 密钥
通义千问 阿里巴巴(ALIBABA) 阿里云百炼的 API Key,可以与通义千问对话共用
MiniMax MiniMax(MINIMAX) MiniMax 的 API Key,默认地址为 https://api.minimax.cn
豆包语音 字节跳动(BYTEDANCE) 豆包语音的 API Key,不是火山方舟的 API Key
百度 百度(BAIDU) 百度智能云的 API Key
腾讯云 腾讯(TENCENT) SecretId|SecretKey,与腾讯混元对话的 API Key 不同

同一平台的对话、语音使用不同的密钥时,为该平台新建多条密钥,模型配置时选择对应的那一条即可。

# 1.2 配置语音模型

在 [AI 大模型 -> 控制台 -> 模型配置] 菜单,新增语音模型:

  • 模型类型:选择「音频」,对应 AiModelTypeEnum 的 VOICE(type 为 3)
  • 所属平台:阿里巴巴、MiniMax、字节跳动、百度、腾讯,其它平台不支持
  • API 秘钥:选择同一平台的密钥。密钥的平台与模型的平台不一致时,生成会报错
  • 模型标识:见下表
平台 模型标识 文本上限 音频格式 语速
通义千问 qwen3-tts-flash 600 个字符 wav 仅 1
MiniMax speech-2.8-hd、speech-2.8-turbo、speech-2.6-hd、speech-2.6-turbo、speech-02-hd、speech-02-turbo、speech-01-hd、speech-01-turbo 9999 个字符 mp3、wav、flac 0.5 ~ 2
豆包语音 seed-tts-2.0、seed-tts-1.0、seed-tts-1.0-concurr 10000 个字符 mp3、ogg_opus 0.5 ~ 2
百度 自定义,例如说 baidu-tts GBK 编码小于 1024 字节 mp3、wav 0.5 ~ 2
腾讯云 自定义,例如说 tencent-tts 100000 个字符(页面限制 10000 个) mp3、wav 0.6 ~ 2.5

语音模型配置

友情提示:

  • 豆包语音的模型标识,会作为请求头 X-Api-Resource-Id 传递。音色需要与模型的版本匹配,例如说 seed-tts-2.0 使用 2.0 的音色
  • 文本超过上限、音频格式或语速不支持时,提交即报错,不会截断文本,也不会替换成其它值

# 1.3 开启定时任务

腾讯云长文本语音合成是异步任务,需要开启 AiSpeechSyncJob 定时任务,按任务编号查询结果。它同时会把超时的语音更新为已失败。

在 [基础设施 -> 定时任务] 菜单,开启「AI 语音同步 Job」任务,处理器名字为 aiSpeechSyncJob,例如说每 10 秒执行一次(0/10 * * * * ?)。具体怎么配置定时任务,可以参考 《定时任务》 文档。

# 2. 语音生成

前端对应 [AI 大模型 -> AI 语音生成] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/ai/speech/index 目录,提供给普通用户使用。

# 2.1 合成语音

左侧是「语音合成」面板,填写后点击提交:

  • 模型:只列出已启用的「音频」模型,且平台为以上五个平台
  • 朗读文本:按所选模型展示字数上限,百度按 GBK 字节计数
  • 音色:服务商的音色编号。下拉框提供推荐音色,例如说通义千问的 Cherry、MiniMax 的 male-qn-qingse、豆包语音的 zh_female_vv_uranus_bigtts、腾讯云的 101001、百度的 5003,也可以直接输入服务商的其它音色
  • 音频格式、语速:按所选模型展示可选的格式和语速范围

提交后,后端的处理流程如下:

  • 校验模型、密钥、参数,通过后插入一条「生成中」的记录,立即返回编号
  • 异步调用服务商一次,拿到完整音频后,转存到文件服务,更新为「已完成」;调用失败时,更新为「已失败」,并记录失败原因
  • 腾讯云:提交成功后马上保存任务编号,在 180 秒内等待结果;仍未完成的保持「生成中」,之后由定时任务、或页面查询详情时,按任务编号继续查询,不会重新提交
  • 超时:没有任务编号的超过 10 分钟、有任务编号的超过 24 小时,更新为「已失败」

# 2.2 我的语音

右侧是「我的语音」列表,生成中的记录会自动刷新,完成后可以:

  • 播放、暂停:在底部播放器中播放
  • 下载:下载音频文件
  • 详情:查看朗读文本、模型、音色、格式、语速、音频大小、完成时间等
  • 再次生成:把这条记录的参数回填到左侧面板
  • 删除:只能删除已完成、已失败的记录,音频文件保留

语音详情

它的后端 HTTP 接口,由 yudao-module-ai 模块的 speech 包的 AiSpeechController 实现:

  • POST /ai/speech/generate:合成语音
  • GET /ai/speech/my-page、GET /ai/speech/get-my:获得【我的】语音分页、详情
  • DELETE /ai/speech/delete-my:删除【我的】语音

这些接口只操作当前登录用户自己的语音。

# 3. 语音管理

前端对应 [AI 大模型 -> 控制台 -> 语音管理] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/ai/speech/manager 目录,提供给管理员使用,查看所有用户的语音记录:

  • 查询:按用户、平台、状态、朗读文本(模糊匹配)、创建时间筛选
  • 详情:查看朗读文本、模型、音色、格式、语速、音频大小、失败原因等,已完成的可以播放、下载。管理端只查看,不提供「再次生成」,不会重新调用服务商
  • 删除:和【我的】一样,只能删除已完成、已失败的记录,音频文件保留

语音管理

它的后端 HTTP 接口,同样由 AiSpeechController 实现:

  • GET /ai/speech/page:获得语音分页,对应权限 ai:speech:query
  • GET /ai/speech/get:获得语音详情,对应权限 ai:speech:query;不存在时返回空,也不会同步异步任务的结果
  • DELETE /ai/speech/delete:删除语音,对应权限 ai:speech:delete

# 4. 语音表

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `ai_speech` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `user_id` bigint NOT NULL COMMENT '用户编号',

  `model_id` bigint NOT NULL COMMENT '模型编号',
  `platform` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台',
  `model` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模型标识',
  `api_key_id` bigint NOT NULL COMMENT 'API 密钥编号:提交时绑定,异步任务按它查询结果',

  `input_text` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '朗读文本',
  `voice` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '音色',
  `format` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '音频格式',
  `speed` decimal(4,2) DEFAULT NULL COMMENT '语速倍数,最多两位小数;为空时为 1',

  `status` tinyint NOT NULL COMMENT '生成状态:10 生成中,20 已完成,30 已失败',
  `task_id` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '服务商的任务编号:仅异步任务(腾讯云)',
  `audio_url` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '音频地址:文件服务的原始地址,访问时签名',
  `audio_size` int DEFAULT NULL COMMENT '音频大小(字节)',
  `error_message` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '失败原因(已脱敏)',
  `finish_time` datetime DEFAULT NULL COMMENT '完成时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_status_create_time` (`status`,`create_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI 语音表';

① user_id 字段:对应 system_users 表的 id 字段,表示哪个用户的语音。

② model_id、platform、model、api_key_id 字段:提交时的模型、平台、模型标识、密钥,之后修改模型配置不影响已提交的语音。异步任务按 api_key_id 对应的密钥查询结果。

③ input_text、voice、format、speed 字段:朗读文本、音色、音频格式、语速。

④ status 字段:生成状态,对应 AiSpeechStatusEnum 枚举:10 生成中 → 20 已完成;失败或超时进入 30 已失败。已完成、已失败为终态,迟到的结果不会覆盖。

⑤ task_id 字段:服务商的任务编号,只有腾讯云的异步任务才有。

⑥ audio_url、audio_size 字段:转存到文件服务后的音频地址、大小。不保存服务商的临时地址;使用私有存储时,访问时再签名。

⑦ error_message 字段:失败原因,不包含密钥等敏感信息。

最最最关键的代码!!!大家可以重点看看!!!

AiSpeechServiceImpl 类:

  • #generateSpeech(...):校验模型、密钥、参数,插入生成中的记录后,异步执行 #executeSpeech(...)
  • #executeSpeech(...):调用服务商一次(不自动重试),转存音频,更新为已完成或已失败
  • #syncSpeech():由 AiSpeechSyncJob 定时调用,查询异步任务的结果,并结束超时的语音

各平台的调用,由 AiModelFactoryImpl 的 #getOrCreateTextToSpeechModel(...) 方法创建:TongYiSpeechModel、MiniMaxSpeechModel、DouBaoSpeechModel、BaiduSpeechModel、TencentSpeechModel。

AI PPT 生成
OCR 文字识别

← AI PPT 生成 OCR 文字识别→

Theme by Vdoing | Copyright © 2019-2026 芋道源码 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×