--- title: "16-语音模块" created: 2025-12-02 tags: - 项目 aliases: - 语音模块 --- # 语音模块 想添加一个语音模块 因为先前就有想法说 采用一种自述的形式进行传统服饰解读 更具亲和力 现在得知有两个方案 第一个是直接接入阿里百炼的cosyvoice模型 用后端调用前端轮询或者后端调用流式返回的方式实现语音模块 但api的免费额度只有2000 可能不太够用 然后又发现一个渠道 好像可以在github中获取cosyvoice自己进行微调 那么就可以训练自己的声音进行解读 成本问题解决 但是如果是这种方式 该如何实现语音模块? 因为本质是根据服饰id找到服饰自述 将服饰自述转成语音返回给前端 前端通过点击按钮进行播放 如果采用后者的话 是不是需要采用一个类似这样的流程:创一个语音表 与服饰id一一关联 将每件服饰的自述传给模型生成语音并上传到cos 数据库记录cos的音频地址 当前端点击按钮时 通过服饰id获取音频地址 进行播放?大概做到这样一个流程 springboot与python共用一个mysql表和存储桶 实现一个批量处理的py程序 主要用于存 传入文本生成语音上传到存储桶并记录服饰id和存储位置 sping主要是取数据 当前端点击按钮时 sping从数据库中获取语音地址 前端进行渲染? ![[服务交互流程-733ed7d5.txt]] 可行性如何呢 其他的方面感觉都能实现 主要是微调大模型 因为事先也并没有做过音频处理相关内容 对py接触也少 更别说训练模型了 这完全是一次摸石头过河 需要分析这件事情的可行性如何再决定是不是要动手 如果难度过高可能要换其他替代方案 顾虑主要在两方面 第一在本地跑模型对电脑配置要求高不高 微调模型的编码难度复杂度高不高 发现自己跑模型得到的质量很低 不如直接去网站中使用其他免费的服务 但这样对人工负担较大 考虑接阿里的普通的TTS服务(每月5wtoken) 两者相结合 在dress表中加语音字段 存储MP3格式文件在cos的存储路径 另外要写一个MP3文件上传cos的接口 允许管理员提前上传语音 如果点击按钮 有语音就返回地址让前端在cos中取MP3播放 如果没有 就调用ai生成 然后上传cos 并mysql记录地址 然后返回地址 由前端去取? 是否有必要绕这么一个弯 其实主要是缓存问题 因为一个服饰的自述基本不会变 重复播放只需要播放一样的结果即可 如果不存直接输出 可能浪费不必要的token 直接返回语音二进制流(无需存储) 优点: 简化流程:无需存储和数据库记录 实时性高:每次生成都是最新的语音内容 代码简单:减少文件操作和存储逻辑 缺点: 性能损耗:每次请求都要调用AI生成语音(高并发时可能超时) 重复计算:相同文本会被多次合成浪费资源 响应体积大:可能影响HTTP响应速度 存储后返回URL 优点: 缓存复用:相同文本只生成一次 性能优化:减少重复调用AI接口 可扩展性:支持后续添加语音更新/删除功能 缺点: 需要存储管理(本地或云存储) 需要维护数据库字段 还是选择用传统存储MP3的方式 现在需要修改表结构 添加 MP3URL、gameURL、arCodeURL字段 其中 MP3 arcode都需要上传到cos gameurl只需要以字符串写入即可 还差一个上传MP3的逻辑 需要前端提供一个组件上传MP3文件 后端接口 cos 都需要写 搞定 --- **项目分区导航**:⬅️ [[15-服饰模块|15-服饰模块]] | 16-语音模块 | ➡️ [[17-服务交互流程|17-服务交互流程]]