Back to Blog

用 Python 实现 AI 语音克隆与生成

2026/9/173 min read
用 Python 实现 AI 语音克隆与生成

用 Python 实现 AI 语音克隆与生成

要实现低成本的 AI 语音克隆,目前最实用的方案是基于 RVC(Retrieval-based Voice Conversion)或 OpenVoice 等开源架构。核心逻辑是提取参考音频的声纹特征,再驱动预训练的 TTS 或 vocoder 模型合成目标文本。相比传统的需要数月微调的训练模式,这套方案只需几十秒的参考音频即可输出自然度较高的克隆结果。

环境准备与模型选型

我倾向于使用 RVC-WebUI,因为它的生态最成熟,且对显存要求相对友好。首先确保你的环境安装了 PyTorch 和 CUDA。如果不想手动配置复杂的依赖,直接克隆官方仓库是最稳妥的做法。

用 Python 实现 AI 语音克隆与生成 - 插图 1

我们需要两个核心组件:一个是用于特征提取的 Hubert 模型,另一个是基础的音色转换模型。对于大多数场景,RVC-v2 已经足够强大,支持 0-shot(零样本)和 few-shot(少样本)两种模式。

# 克隆项目

git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI
cd Retreival-based-Voice-Conversion-WebUI

# 安装依赖
pip install -r requirements.txt

# 启动 WebUI
python api.py

启动后,访问 http://localhost:7860 即可看到可视化的操作界面。这是目前最稳定的起步方式。

提取参考音频声纹

很多人卡在第一步:如何获取干净的参考音频?我一般会先对原始录音做预处理。使用 ffmpeg 截取一段 5 到 15 秒的音频,并去除背景噪音。

在 WebUI 的「训练」标签页中,选择「0 秒训练」或者「快速提取特征」。上传你的参考音频后,系统会自动提取音高和音色特征。这一步不需要模型迭代训练,只是提取索引信息。

如果你追求极致质量,建议录制时保持麦克风距离稳定,尽量在无混响的环境下操作。嘈杂的背景音会导致生成的语音带有明显的杂质。

推理与语音合成

特征提取完成后,进入「推理」标签页。这里需要上传你要合成的文本对应的音频,或者直接输入文本由 TTS 模型朗读。

关键参数如下:

  • 模型路径:选择你之前下载的 RVC 模型文件。
  • 变调:通常设置为 0,男女声转换时可适当调整。
  • 索引比率:建议设为 0.8 左右,过高会显得假,过低则与原始音色差异较大。
  • 过滤半径:设为 3 可以有效平滑音质,减少爆音。
# 如果是通过 API 调用,代码大致如下
import requests

url = "http://localhost:7860/audio"
files = {
    "input_audio": open("input.wav", "rb"),
    "output_audio": open("output.wav", "wb")
}
data = {
    "model": "your_model.pth",
    "index": "your_index.file",
    "f0_up_key": 0,
    "filter_radius": 3
}
requests.post(url, files=files, data=data)

常见问题与优化

在实际操作中,我发现最大的坑在于音频采样率不匹配。模型通常期望 48kHz 的音频,如果你的参考音频是 16kHz,生成的语音会有严重的失真。务必在上传前使用 ffmpeg 重新采样:

ffmpeg -i input.wav -ar 48000 -ac 1 output_48k.wav

此外,显存不足是导致 OOM 的常见原因。如果在 8GB 显存的显卡上运行失败,可以尝试减小 batch size 或者使用 CPU 推理模式,虽然速度会慢一些,但能保证流程跑通。

下一步

掌握了基础的推理流程后,你可以尝试将这套语音克隆能力集成到你的自动化工作流中。推荐深入研究 Whisper 作为前置转写工具,配合 TTS 生成高质量的有声内容。

相关阅读

原文出处

本文首发于 用 Python 实现 AI 语音克隆与生成 — https://lyxq.com.cn/en/blog/python-ai-voice-cloning-generation

转载或引用请注明出处,商业使用请联系作者获得授权。