ai-clone/ai-clone
2026-03-05 14:29:21 +08:00
..
sql first commit 2026-03-05 14:29:21 +08:00
src/main first commit 2026-03-05 14:29:21 +08:00
static first commit 2026-03-05 14:29:21 +08:00
uploads first commit 2026-03-05 14:29:21 +08:00
.gitignore first commit 2026-03-05 14:29:21 +08:00
init_model_status.sql first commit 2026-03-05 14:29:21 +08:00
pom.xml first commit 2026-03-05 14:29:21 +08:00
README.md first commit 2026-03-05 14:29:21 +08:00
run_synthesis.bat first commit 2026-03-05 14:29:21 +08:00
start.bat first commit 2026-03-05 14:29:21 +08:00

声音克隆系统 (Voice Cloning System)

基于阿里云通义千问 TTS 声音复刻技术的完整声音克隆应用,包含 Java Spring Boot 后端和 React 前端。

功能特性

  • 声音复刻: 上传 10-20 秒音频,快速创建专属音色
  • 📋 音色管理: 查看、管理所有已创建的音色
  • 🗑️ 删除音色: 支持删除不需要的音色
  • 🎨 现代化界面: 使用 React + TailwindCSS 构建的美观 UI
  • 🔒 安全可靠: 支持环境变量配置 API Key

技术栈

后端

  • Java 17
  • Spring Boot 3.2.0
  • Maven
  • Gson (JSON 处理)
  • Apache HttpClient 5

前端

  • React 18
  • Vite
  • TailwindCSS
  • Axios
  • Lucide React (图标)

快速开始

前置要求

  1. Java 17+: 确保已安装 Java 17 或更高版本
  2. Maven: 用于构建 Java 项目
  3. Node.js 18+: 用于运行前端项目
  4. 阿里云 API Key: 从阿里云百炼获取

1. 配置 API Key

有两种方式配置 API Key

方式一:环境变量(推荐)

# Windows PowerShell
$env:DASHSCOPE_API_KEY="your-api-key-here"

# Windows CMD
set DASHSCOPE_API_KEY=your-api-key-here

# Linux/Mac
export DASHSCOPE_API_KEY=your-api-key-here

方式二:配置文件

编辑 src/main/resources/application.properties:

dashscope.api.key=your-api-key-here

2. 启动后端服务

# 进入项目根目录
cd cosyvoice

# 使用 Maven 运行
mvn spring-boot:run

# 或者先编译再运行
mvn clean package
java -jar target/voice-cloning-1.0.0.jar

后端服务将在 http://localhost:20001 启动

3. 启动前端服务

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端服务将在 http://localhost:3000 启动

4. 访问应用

在浏览器中打开 http://localhost:3000 即可使用声音克隆系统。

使用说明

创建音色

  1. 点击"创建音色"标签
  2. 点击上传区域选择音频文件(支持 WAV、MP3、M4A
  3. 输入音色名称(仅支持字母、数字、下划线,最长 16 字符)
  4. 点击"创建音色"按钮
  5. 等待处理完成,系统会返回音色 ID

音频要求

  • 格式: WAV (16bit)、MP3、M4A
  • 时长: 推荐 10-20 秒,最长 60 秒
  • 大小: < 10 MB
  • 采样率: ≥ 24 kHz
  • 声道: 单声道
  • 内容:
    • 必须包含至少 3 秒连续清晰朗读
    • 避免背景音乐、噪音或其他人声
    • 使用正常说话音频,不要上传歌曲

查看音色列表

  1. 点击"音色列表"标签
  2. 查看所有已创建的音色
  3. 可以删除不需要的音色

使用音色进行语音合成

创建音色后,您可以使用返回的音色 ID 在语音合成接口中使用。详见阿里云文档

API 接口

创建音色

POST /api/voice/create
Content-Type: multipart/form-data

参数:
- audio: 音频文件
- name: 音色名称

响应:
{
  "success": true,
  "voiceId": "qwen-tts-vc-guanyu-voice-20250812105009984-838b",
  "message": "音色创建成功"
}

查询音色列表

GET /api/voice/list

响应:
{
  "success": true,
  "voices": [
    {
      "voice": "qwen-tts-vc-guanyu-voice-20250812105009984-838b",
      "target_model": "qwen3-tts-vc-realtime-2025-11-27",
      "create_time": 1723439409
    }
  ]
}

删除音色

DELETE /api/voice/delete/{voiceId}

响应:
{
  "success": true,
  "message": "音色删除成功"
}

健康检查

GET /api/voice/health

响应:
{
  "status": "ok",
  "message": "Voice Cloning API is running"
}

项目结构

cosyvoice/
├── src/
│   └── main/
│       ├── java/
│       │   └── com/aliyun/voicecloning/
│       │       ├── VoiceCloningApplication.java    # 主应用类
│       │       ├── config/
│       │       │   └── CorsConfig.java             # CORS 配置
│       │       ├── controller/
│       │       │   └── VoiceCloningController.java # REST 控制器
│       │       └── service/
│       │           └── VoiceCloningService.java    # 业务逻辑
│       └── resources/
│           └── application.properties              # 应用配置
├── frontend/
│   ├── src/
│   │   ├── App.jsx                                 # 主应用组件
│   │   ├── main.jsx                                # 入口文件
│   │   └── index.css                               # 全局样式
│   ├── index.html                                  # HTML 模板
│   ├── package.json                                # 前端依赖
│   ├── vite.config.js                              # Vite 配置
│   └── tailwind.config.js                          # TailwindCSS 配置
├── pom.xml                                         # Maven 配置
└── README.md                                       # 项目文档

常见问题

1. API Key 配置错误

错误: "API Key未配置请在application.properties中设置dashscope.api.key"

解决: 确保已正确配置环境变量或在 application.properties 中设置 API Key。

2. 文件上传失败

错误: "文件大小不能超过10MB" 或 "不支持的音频格式"

解决:

  • 确保音频文件小于 10MB
  • 使用支持的格式WAV、MP3、M4A
  • 确保音频质量符合要求

3. 跨域问题

错误: CORS 相关错误

解决: 后端已配置 CORS确保前端运行在 localhost:3000localhost:5173

4. 音色创建失败

可能原因:

  • 音频质量不符合要求
  • 音频时长不符合要求(推荐 10-20 秒)
  • 音频包含背景噪音或多人声音
  • API Key 额度不足

开发指南

修改 API 地域

如果需要使用新加坡地域,修改 application.properties:

dashscope.api.url=https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization

前端开发

cd frontend
npm run dev    # 开发模式
npm run build  # 生产构建
npm run preview # 预览生产构建

后端开发

mvn spring-boot:run  # 开发模式(支持热重载)
mvn clean package    # 打包

许可证

本项目仅供学习和研究使用。使用阿里云 API 需遵守阿里云服务协议

参考资料

支持

如有问题,请参考阿里云官方文档或提交 Issue。