Skip to content

RWRHACKER/voice-cloner

Repository files navigation

Voice Cloner — 实时语音克隆桌面应用

基于 SV2TTS 三阶段模型的语音克隆系统,支持系统音频实时捕获、声音注册与文本到语音合成。

🎯 功能概览

核心流程

系统音频 (WASAPI Loopback)
     ↓  [实时捕获 + VAD 自动切分]
  语音片段
     ↓  [SV2TTS Encoder / GPT-SoVITS]
  声音特征 → 注册到声音库
     ↓  [TTS 合成]
  合成语音 → 播放 / 导出 WAV

6 个功能面板

面板 功能
Model 选择模型路径、自动检测 GPU/CPU、加载模型
Capture WASAPI 环回捕获系统音频,VAD 自动切分语音段,试听预览
Register 选择音频文件(WAV/MP3/AMR/SILK) → 提取声音特征 → 注册声音
Synthesize 选择已注册声音 → 输入文本 → 合成语音 → 播放/保存
Library 浏览、搜索、删除已注册声音,导出/导入声音特征
LLM Settings 配置大模型接口(DeepSeek/Qwen/GLM),用于文本预处理和参数推荐

🏗️ 项目结构

voice-cloner/
├── main.py                     # 入口文件
├── pyproject.toml              # 项目依赖
│
├── app_config/
│   └── config.py               # 全局配置(路径发现、配色系统、GPU 检测)
│
├── audio_capture/              # 实时音频捕获模块
│   ├── loopback.py             # WASAPI Loopback 捕获(sounddevice + PyAudio 双后端)
│   ├── vad_detector.py         # WebRTC VAD + 能量检测双模语音活动检测
│   └── voice_buffer.py         # 语音段缓冲区管理(自动保存 WAV)
│
├── audio_decoder/
│   └── decoder.py              # 统一音频解码层(WAV/MP3/AMR/SILK v3/AUD)
│
├── cloner/
│   ├── __init__.py
│   ├── engine.py               # SV2TTS 三阶段管线(Encoder→Synthesizer→Vocoder)
│   ├── gptsovits_engine.py     # GPT-SoVITS 引擎(零样本声音克隆)
│   ├── llm_client.py           # LLM API 客户端(DeepSeek/Qwen/GLM)
│   ├── text_preprocessor.py    # TTS 文本预处理(数字转读、多音字、中英混排)
│   ├── param_advisor.py        # LLM 驱动的合成参数推荐
│   └── audio_enhance.py        # 音频后处理增强
│
├── voice_manager/
│   └── manager.py              # 声音库管理器(CRUD + JSON 持久化 + 单例)
│
├── gui/
│   ├── main_window.py          # PyQt5 主窗口(暗色极简 Retro-Futuristic 风格)
│   ├── i18n.py                 # 中英文国际化(数据驱动,动态切换)
│   ├── panels/
│   │   ├── model_panel.py      # 模型加载面板
│   │   ├── capture_panel.py    # 音频捕获面板
│   │   ├── registration_panel.py # 声音注册面板
│   │   ├── synthesis_panel.py  # 语音合成面板
│   │   ├── library_panel.py    # 声音库管理面板
│   │   └── llm_settings_panel.py # LLM 配置面板
│   └── widgets/
│
├── voice_db/                   # 声音库存储
├── captured_voices/            # 捕获的语音段存储
└── tests/                      # 单元测试

🎛️ 技术选型

语音克隆引擎

引擎 说明
SV2TTS Speaker Encoder(256维声纹)→ Tacotron2 → WaveRNN,16kHz 输出
GPT-SoVITS BERT → GPT → VITS → BigVGAN,零样本克隆,32kHz 高保真输出

实时音频捕获

组件 技术
环回捕获 Windows WASAPI Loopback(sounddevice 主力 + PyAudio 回退)
语音检测 WebRTC VAD + 能量双模检测,30ms 帧级判断
流管理 播放锁 + 暂停/恢复机制 + 后台线程隔离,解决双流设备独占冲突

文本处理

功能 实现
LLM 预处理 数字→中文读法、多音字消歧、中英混排,离线正则回退
参数推荐 LLM 根据文本语境和情感推荐 top_k/temperature/speed

GUI

  • 框架: PyQt5
  • 风格: 暗色极简 Retro-Futuristic(深空黑 + 霓虹青 + 暖琥珀)
  • 国际化: 数据驱动 i18n,中英文动态切换

🚀 快速开始

环境要求

  • Windows 10/11
  • Python 3.9+
  • PyTorch 2.0+
  • ffmpeg(用于 AMR/SILK 解码)
  • SV2TTS 模型权重(首次运行自动下载)

安装

# 1. 克隆本项目
git clone https://github.com/RWRHACKER/voice-cloner.git
cd voice-cloner

# 2. 克隆 SV2TTS 到同级目录
cd ..
git clone https://github.com/CorentinJ/Real-Time-Voice-Cloning.git Real-Time-Voice-Cloning-master

# 3. (可选) 克隆 GPT-SoVITS 到同级目录
git clone https://github.com/RVC-Boss/GPT-SoVITS.git

# 4. 安装依赖
cd voice-cloner
pip install -e .[cpu]    # CPU 版本
# 或 pip install -e .[cuda]   # GPU 版本

# 5. 安装 ffmpeg (Windows)
# 下载: https://ffmpeg.org/download.html
# 解压后将 bin/ 目录加入系统 PATH

启动

python main.py

使用流程

  1. 加载模型 → 在「模型」面板选择引擎并加载
  2. 捕获语音 → 在「捕获」面板点击开始,外放音频即可自动采集
  3. 注册声音 → 选中捕获的语音段,命名并注册到声音库
  4. 合成语音 → 在「合成」面板选择声音,输入文本,生成克隆语音

⚙️ 配置

环境变量

变量 说明 默认值
SV2TTS_PATH SV2TTS 项目路径 ../Real-Time-Voice-Cloning-master

LLM 配置

在应用内「LLM Settings」面板配置:

  • Provider: DeepSeek / Qwen / GLM
  • API Key
  • Model 名称

📄 许可

MIT License

About

Voice Cloner - SV2TTS real-time voice cloning desktop app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages