通过用户录制声音样本,实现个性化文本转语音(TTS)的网页端应用应用
项目简介
本项目涵盖三款基于网页端应用和云开发的语音克隆产品:小豆配音、加一配音、铭文配音。用户只需录制1-3分钟的声音样本,系统即可提取声音特征,之后输入任意文本,即可生成符合自己音色的语音。
核心功能
- 声音录制: 录制用户声音样本,提供参考文本指导
- 语音合成: 输入任意文本,生成个性化语音
- 音频管理: 查看、播放、分享和下载历史音频
- 用户中心: 管理声纹档案,查看使用配额
技术特点
- 前后端分离架构
- 网页端应用云开发(云函数 + 云数据库 + 云存储)
- 深度学习语音克隆模型(SV2TTS)
- 异步任务队列处理
- 音频质量检测和优化
项目结构
三款产品均采用标准化项目结构,以小豆配音为例:
xiaodou-peiyin-miniapp/ ├── miniprogram/ # 网页端应用前端代码 │ ├── pages/ # 页面文件 │ │ ├── index/ # 首页 │ │ ├── record/ # 录音页面 │ │ ├── synthesize/ # 语音合成页面 │ │ ├── audio-list/ # 音频列表页面 │ │ └── profile/ # 个人中心 │ ├── components/ # 自定义组件 │ ├── utils/ # 工具函数 │ ├── app.js # 网页端应用入口 │ └── app.json # 网页端应用配置 ├── cloudfunctions/ # 云函数 │ ├── login/ # 用户登录 │ ├── upload/ # 文件上传 │ ├── extract/ # 声音特征提取 │ ├── synthesize/ # 语音合成 │ └── query/ # 数据查询 └── 其他配置文档
部署环境说明
重要: 本项目主要在中国大陆部署,网络环境有特殊要求。
部署约束
- 部署地区: 中国大陆
- 云服务商: 腾讯云 CVM
- 操作系统: Debian 12 (bookworm) / Ubuntu 20.04+
- 网络要求: 需要使用国内镜像源(Docker、PyPI、npm)
关键注意事项
- Docker 安装: 必须使用国内加速脚本(使用国内镜像源)
- 包管理: 所有依赖安装都应使用国内镜像源
- 网络限制: GitHub、Docker Hub 等国外源访问可能不稳定
快速开始
前置要求
- Node.js >= 14.x
- Python >= 3.8
- 网页端应用开发者工具
- 网页端应用账号(AppID)
- 中国大陆服务器(推荐腾讯云 CVM)
安装步骤
详细步骤参考各产品专属配置指南。
核心技术栈
前端
- 网页端应用框架: WXML + WXSS + JavaScript
- 云开发: 云函数 + 云数据库 + 云存储
后端
- 云函数: Node.js (wx-server-sdk)
- 数据库: MongoDB (云开发)
- 存储: 云对象存储
AI 模型
- 语音克隆: SV2TTS / YourTTS
- 深度学习: PyTorch + TorchAudio
- 音频处理: Librosa + FFmpeg
架构设计
用户录音 → 上传云存储 → 云函数触发特征提取 → 存储声纹特征 用户输入文本 → 调用TTS API → 云端合成音频 → 返回音频URL → 网页端应用播放
开发进度
整体进度: 各产品独立推进,平均进度约29%
MVP 完成度: 单产品MVP完成度约40%
已完成模块
- 项目初始化和环境搭建
- 数据库设计和模型定义
- 云存储配置
- 用户认证和授权
- 语音录制模块
- 音频上传和格式转换
- 语音克隆模型集成
进行中模块
- 声音特征提取服务 - 当前重点
后端部署指南
快速部署(腾讯云 CVM)
- 连接服务器 ssh root@YOURSERVERIP # 2. 克隆对应产品代码 cd /opt git clone 对应产品仓库地址 # 3. 安装 Docker(使用国内镜像源) chmod +x installdockerchina.sh sudo ./installdockerchina.sh # 4. 配置环境变量 nano .env.production # 修改 APIKEY 和 ALLOWEDORIGINS # 5. 部署应用 docker compose build docker compose up -d # 6. 验证部署 curl
部署文档
| 文档 | 说明 |
|---|---|
| DEPLOYMENT_CONSTRAINTS.md | 中国网络环境约束(必读) |
| SECURITYGROUPGUIDE.md | 安全组配置指南 |
| TENCENTCLOUDDEPLOYMENT.md | 完整部署指南 |
| APITESTREPORT.md | API 测试报告 |
数据库设计
主要集合
- voice_profiles: 用户声纹档案
- tts_tasks: TTS 任务记录
- audio_files: 音频文件记录
- users: 用户信息
API 接口
核心接口
POST /api/voice-profile/upload: 上传录音样本POST /api/voice-profile/extract: 触发特征提取GET /api/voice-profile/:id: 获取声纹档案POST /api/tts/synthesize: 文本转语音GET /api/tts/task/:taskId: 查询TTS任务状态
配额和限制
- 每日TTS合成次数: 10次/用户
- 单次文本长度: 1-500字
- 录音时长: 30秒-5分钟
- 用户存储空间: 100MB
安全和隐私
- 所有API调用需要网页端应用用户身份认证
- 声纹数据与用户ID强绑定,禁止跨用户访问
- 音频文件使用签名URL,限时访问(24小时)
- 敏感数据传输使用HTTPS加密
- 提供数据删除功能,符合隐私保护法规
贡献指南
欢迎各产品的代码贡献!请遵循以下步骤:
- Fork 对应仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
许可证
各产品均采用 MIT 许可证 - 查看对应仓库 LICENSE 文件了解详情
联系方式
- 项目问题: 各仓库 GitHub Issues
- 功能建议: 各仓库 GitHub Discussions
注意
本项目仅供学习和研究使用,请勿用于非法用途。使用他人声音进行克隆需获得明确授权。