VoiceCraft:8.5K+ Star

VoiceCraft 是一个用于零样本语音编辑和语音合成(TTS)的 token 填充式神经编解码器语言模型。兼容 GPT-SoVITS、Coqui TTS 和 RVC。涵盖搭建、基准测试、Docker 部署和对比表格。

  • MIT
  • 更新于 2026-05-19

简介 #

编辑语音音频过去意味着要在录音室里重新录制整段内容。如果播客主持人说错了一个词,或者有声书朗读者念错了某个名字,修复方式就是重新预约一次录音,架好麦克风,还要尽量匹配原来的语气。这个流程既昂贵又缓慢。2024 年,来自德克萨斯大学奥斯汀分校和 Meta FAIR 的一支研究团队发布了 VoiceCraft,这是一款神经编解码器语言模型,只需几秒钟的参考音频就能编辑语音、克隆声音。该仓库目前已拥有 8,500+ GitHub star、796 个 fork,论文也已被 ACL 2024 接收。本指南将带你完成 VoiceCraft 的搭建,将它与 GPT-SoVITS、XTTS v2 和 Coqui TTS 进行对比,并展示使用 Docker 的生产部署模式。

VoiceCraft 是什么? #

VoiceCraft 是一款 token 填充式神经编解码器语言模型,能完成两项核心任务:(1) 零样本文本转语音(TTS)声音克隆;(2) 对已有录音进行语音编辑。与需要每个说话人数小时训练数据的传统 TTS 流水线不同,VoiceCraft 只需 3-5 秒的参考音频就能高保真地复现一个声音。它构建在 Transformer 解码器架构之上,并引入了一种新颖的 token 重排流程,将因果掩码(causal masking)与延迟堆叠(delayed stacking)相结合,从而在自回归生成中实现基于双向上下文的条件生成。

VoiceCraft overview
图 1:VoiceCraft 架构概览 —— 结合因果掩码与延迟堆叠的 token 填充,用于语音编辑和 TTS。

VoiceCraft 的工作原理 #

架构概览 #

模型流水线分为三个阶段:

  1. EnCodec 量化:使用 Meta 的 EnCodec 神经编解码器把原始音频波形量化为离散 token。每一帧音频都被表示为 K 个码本索引组成的向量(残差向量量化,RVQ)。

  2. Token 重排:这是 VoiceCraft 的核心创新。一个两步流程把编辑/填充问题转化为标准的从左到右的语言建模任务:

    • 因果掩码:随机的一段 token 被遮蔽并移动到序列末尾,使模型在自回归生成过程中能够关注双向上下文。
    • 延迟堆叠:向量被对角移位,使得在时间 t 预测码本 k 时能以码本 k-1 为条件,从而实现高效的多码本建模。
  3. Transformer 解码器:重排后的 token 序列由 Transformer 解码器进行自回归建模。文本音素和语音 token 被拼接起来作为条件输入。

模型版本 #

模型参数量最适合场景最长时长
giga330M330M质量与速度的平衡16 秒
giga830M830M最高质量30+ 秒
giga330M-TTS-Enhanced330M针对 TTS 场景微调16 秒

RealEdit 数据集 #

VoiceCraft 推出了 RealEdit,这是一个包含 310 个真实世界语音编辑样本的基准数据集,来源涵盖有声书、YouTube 视频和 Spotify 播客。与干净的实验室数据集(LibriTTS、VCTK)不同,RealEdit 包含各种口音、背景噪音、音乐和说话风格——使其成为衡量语音编辑质量的实用标准。

VoiceCraft speech editing diagram
图 2:VoiceCraft 语音编辑工作流程 —— 原始音频、目标文本,以及合成后的编辑输出。

安装与配置 #

方式一:Docker(推荐) #

Docker 是搭建可用 VoiceCraft 环境最快的方式。官方 Dockerfile 已经处理好所有依赖,包括 EnCodec、Montreal Forced Aligner(MFA)以及 CUDA 绑定。

# 1. Clone the repository
git clone https://github.com/jasonppy/VoiceCraft.git
cd VoiceCraft

# 2. Build the Docker image
docker build --tag "voicecraft" .

# 3. Start the container (Linux)
./start-jupyter.sh
# Or on Windows:
# start-jupyter.bat

# 4. Access Jupyter — copy the URL from logs
docker logs jupyter | grep "127.0.0.1:8888"

# 5. Verify GPU access inside the container
docker exec -it jupyter nvidia-smi

该容器会在 8888 端口暴露 Jupyter Lab,并在 7860 端口暴露 Gradio UI。打开 inference_tts.ipynbinference_speech_editing.ipynb 即可运行推理。

方式二:Conda 环境(本地开发) #

对于模型开发和微调,本地 Conda 环境能提供更多灵活性。

# Create and activate the environment
conda create -n voicecraft python=3.9.16
conda activate voicecraft

# Install PyTorch with CUDA 11.7
pip install torch==2.0.1 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117

# Install audiocraft (EnCodec dependency)
pip install -e git+https://github.com/facebookresearch/audiocraft.git@c5157b5bf14bf83449c17ea1eeb66c19fb4bc7f0#egg=audiocraft

# Install xformers for memory-efficient attention
pip install xformers==0.0.22

# Core dependencies
pip install tensorboard==2.16.2
pip install phonemizer==3.2.1
pip install datasets==2.16.0
pip install torchmetrics==0.11.1
pip install huggingface_hub==0.22.2

# System dependencies
apt-get install -y ffmpeg espeak-ng

# Install Montreal Forced Aligner (MFA) for text-audio alignment
conda install -c conda-forge montreal-forced-aligner=2.2.17 openfst=1.8.2 kaldi=5.5.1068

# Download MFA English models
mfa model download dictionary english_us_arpa
mfa model download acoustic english_us_arpa

# Jupyter kernel (optional)
conda install -n voicecraft ipykernel --no-deps --force-reinstall

方式三:Gradio 本地 UI #

如果想要一个基于浏览器的界面,而不使用 notebook:

# Additional system dependencies for Gradio
apt-get install -y espeak espeak-data libespeak1 libespeak-dev
apt-get install -y festival build-essential flac libasound2-dev libsndfile1-dev

# Install Gradio requirements
pip install -r gradio_requirements.txt

# Launch the Gradio server
python gradio_app.py

在浏览器中打开 http://127.0.0.1:7860 即可访问 Web UI。

硬件要求 #

配置最低 GPU推荐 GPU内存
完整推理(830M)8GB(开启 kvcache)32GB 显存32 GB
快速推理(330M)8GB16GB 显存16 GB
Gradio UI8GB16GB 显存16 GB

kvcache 优化以少量质量损失换取显存占用的显著降低,使 8GB 显卡也能运行推理。

与主流工具的集成 #

VoiceCraft + Gradio Web UI #

内置的 Gradio 界面提供了最简单的实验方式:

# Launch the Gradio app with default settings
python gradio_app.py --model-name "giga330M" --device "cuda"

# With custom model path
python gradio_app.py   --model-path "./pretrained_models/giga330M.pth"   --codec-model "encodec_16khz"   --share  # Create a public URL

Gradio UI 支持三种模式:TTS 模式(零样本声音克隆)、编辑模式(语音编辑)和 长文本 TTS 模式(分块生成长文本)。

VoiceCraft + Jupyter Notebook #

对于需要编程访问的场景,Jupyter notebook 提供了逐步的推理流程:

# inference_tts.ipynb — Zero-shot TTS example
from voicecraft import VoiceCraft

# Load the 330M model (faster, good quality)
model = VoiceCraft.from_pretrained("pyp1/VoiceCraft", subfolder="giga330M")

# Provide 3-5 seconds of reference audio
reference_audio = "demo/pam.wav"  # Your reference clip
reference_text = "I found the amazing VoiceCraft model"

# Text to synthesize
target_text = "This is a test of zero shot voice cloning with VoiceCraft"

# Generate
output = model.tts(
    target_text=target_text,
    reference_audio=reference_audio,
    reference_text=reference_text,
    top_k=40,  # March 2025 update: top-k=40 improves quality
    temperature=1.0
)
output.save("output_tts.wav")

VoiceCraft + 命令行 #

用于批处理和脚本化操作:

# TTS inference via CLI
python tts_demo.py   --audio_path "demo/pam.wav"   --target_transcript "This is the text to speak"   --model_name "giga330M"   --top_k 40   --temperature 1.0   --output_path "output.wav"

# Speech editing via CLI
python speech_editing_demo.py   --audio_path "demo/pam.wav"   --original_transcript "original text here"   --edited_transcript "edited text here"   --model_name "giga830M"   --output_path "edited_output.wav"

VoiceCraft + Docker API #

对于生产部署,可以把 VoiceCraft 封装成一个 REST API:

# Dockerfile.api — Production API wrapper
FROM voicecraft:latest

WORKDIR /app
COPY api.py ./
COPY requirements-api.txt ./

RUN pip install -r requirements-api.txt

EXPOSE 8000

CMD ["uvicorn", "api:app", "--host", "0.0.0.0", "--port", "8000"]
# api.py — FastAPI wrapper for VoiceCraft
from fastapi import FastAPI, UploadFile, File
from voicecraft import VoiceCraft
import torchaudio

app = FastAPI()
model = VoiceCraft.from_pretrained("pyp1/VoiceCraft", subfolder="giga330M")

@app.post("/tts")
async def tts(
    audio: UploadFile = File(...),
    reference_text: str = "",
    target_text: str = ""
):
    """Zero-shot TTS endpoint."""
    ref_audio, sr = torchaudio.load(audio.file)
    output = model.tts(
        target_text=target_text,
        reference_audio=ref_audio,
        reference_text=reference_text,
        top_k=40
    )
    return {"output": output.serialize()}

VoiceCraft + HuggingFace Hub #

直接从 HuggingFace 下载预训练模型:

from huggingface_hub import hf_hub_download

# Download model weights
model_path = hf_hub_download(
    repo_id="pyp1/VoiceCraft",
    filename="giga330M.pth",
    subfolder="",
    local_dir="./pretrained_models"
)

# Also available via ModelScope (for China region)
from modelscope import snapshot_download
model_dir = snapshot_download('AI-ModelScope/VoiceCraft')

基准测试 / 真实使用场景 #

零样本 TTS 基准测试 #

来自 ACL 2024 论文的人工评测结果,在 250 条测试语句(LibriTTS + YouTube)上,将 VoiceCraft 与 VALL-E、XTTS v2、FluentSpeech 和 YourTTS 进行了对比:

模型WERSIM可懂度 MOS自然度 MOS说话人相似度 MOS
VoiceCraft4.50.554.234.174.34
XTTS v23.60.474.133.963.44
VALL-E7.10.504.003.864.07
FluentSpeech3.50.473.673.384.01
YourTTS6.60.413.142.792.79
Ground Truth3.80.764.394.484.44

VoiceCraft 在说话人相似度上(SIM 0.55)达到最高,并在所有人工评测的 MOS 分类中取得最佳成绩。它在可懂度上仅比真实录音低 0.16 分,在说话人相似度上仅低 0.10 分。

语音编辑基准测试 #

在 RealEdit 数据集(310 个真实世界编辑样本)上,VoiceCraft 的表现优于 FluentSpeech:

模型WER可懂度 MOS自然度 MOS
VoiceCraft6.14.114.03
FluentSpeech4.53.973.81
原始(未编辑)5.44.224.17

值得注意的是,在盲听对比测试中,人类听众在 48% 的情况下更偏好 VoiceCraft 编辑后的语音,而不是原始未编辑的录音——这意味着该模型的输出几乎与真实音频难以区分。

真实世界的应用 #

使用场景参考音频输出质量搭建耗时
播客编辑5 秒主持人语音自然度 MOS 4.03< 2 分钟
有声书声音克隆5 秒朗读者语音SIM 0.55< 2 分钟
YouTube 视频配音5 秒说话人语音自然度 MOS 4.17< 2 分钟
呼叫中心语音合成3 秒客服语音SIM 0.55< 1 分钟

VoiceCraft demo page
图 3:VoiceCraft 演示页面展示语音编辑示例 —— 听众在 48% 的情况下无法区分编辑后的音频与原始音频。

高级用法 / 生产环境加固 #

使用 KV Cache 进行内存优化 #

对于显存有限的 GPU,可以启用键值缓存(key-value cache):

# Enable kvcache for 8GB GPU inference
output = model.tts(
    target_text=target_text,
    reference_audio=reference_audio,
    reference_text=reference_text,
    top_k=40,
    kvcache=True,  # Reduces VRAM usage by ~60%
    batch_size=1
)

Top-k 采样(2025 年 3 月更新) #

默认的采样策略已从 top-p=1.0 更新为 top-k=40,显著提升了输出质量:

# Recommended: top-k=40 for best quality
output = model.tts(
    target_text=target_text,
    reference_audio=reference_audio,
    reference_text=reference_text,
    top_k=40,
    temperature=1.0
)

在自定义数据上微调 #

对于特定领域的声音,可以对预训练模型进行微调:

# Prepare your dataset
conda activate voicecraft
cd ./data
python phonemize_encodec_encode_hf.py   --dataset_size xs   --download_to /path/to/downloads   --save_dir /path/to/processed   --encodec_model_path /path/to/encodec   --mega_batch_size 120   --batch_size 32   --max_len 30000

# Start fine-tuning
cd ../z_scripts
bash e830M_ft.sh  # Fine-tune 830M model

监控与日志 #

import logging
from torch.utils.tensorboard import SummaryWriter

# Setup logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("voicecraft")

# TensorBoard for training monitoring
writer = SummaryWriter(log_dir="./runs/voicecraft-ft")
writer.add_scalar("loss/train", loss.item(), global_step)
writer.add_scalar("mos/validation", val_mos, global_step)

安全性考量 #

VoiceCraft 的许可证(代码为 CC BY-NC-SA 4.0,权重为 Coqui Public Model License)附带一项伦理免责声明,禁止未经同意生成或编辑他人语音。对于生产部署,建议:

  • 在克隆前实施说话人验证
  • 记录所有合成请求以便审计追溯
  • 为合成语音添加水印
  • 对 API 端点做限流以防止滥用

与其他方案的比较 #

特性VoiceCraftGPT-SoVITSCoqui TTS (XTTS v2)VALL-E
GitHub Star8,50057,00035,000*无(仅论文)
参数量330M / 830M合计约 1B467M1B
语音编辑原生支持,业界领先不支持不支持有限
零样本 TTS3-5 秒参考音频5 秒参考音频6 秒参考音频3 秒参考音频
说话人相似度 MOS4.34约 4.03.444.07
自然度 MOS4.17约 3.83.963.86
支持语言英语 (EN)英语、日语、韩语、中文、粤语17 种语言英语
推理 RTF约 0.3x(GPU)0.028x(4060Ti)0.18x(A100)约 0.5x
许可证CC BY-NC-SA 4.0MITCPML(非商业)
Docker 支持官方支持社区支持社区支持
Gradio UI内置内置仅 CLI/API
微调支持支持支持支持

*Coqui TTS 仓库的 star 数包含所有 TTS 模型,不仅限于 XTTS。

什么时候选择 VoiceCraft:

  • 语音编辑是你的主要使用场景——目前没有任何开源竞品能与之匹敌
  • 你需要最高的说话人相似度(MOS 4.34,对比 XTTS 的 3.44)
  • 处理嘈杂的、真实场景中的音频(播客、YouTube 视频)
  • 用于学术或非商业研究(CC BY-NC-SA 许可证)

什么时候选择 GPT-SoVITS:

  • 你需要中文或日语的声音克隆
  • 需要商业使用(MIT 许可证)
  • 极致的推理速度非常关键(RTF 0.028)
  • 只用 1 分钟数据做少样本微调

什么时候选择 XTTS v2:

  • 需要多语言支持(17 种语言)
  • 你已经在使用 Coqui TTS 生态
  • 可以接受 Coqui 的商业授权

局限性 / 客观评价 #

VoiceCraft 并不适合所有音频任务。以下是维护者和论文自身承认的局限:

  1. 仅支持英语:已发布的模型只支持英语音素。后续的 VoiceCraft-X(2024 年 11 月)扩展到了 11 种语言,但那是一个独立的模型。

  2. 非商业许可证:代码(CC BY-NC-SA 4.0)和模型权重(Coqui Public Model License)都限制商业使用,除非另行签署协议。

  3. 硬件要求:830M 模型完整推理需要 32GB 显存。即使是 330M 模型,在消费级 GPU 上也需要仔细管理内存。

  4. 生成瑕疵:生成的音频中偶尔会出现较长的静音和刮擦声。变通方案(多次采样并挑选最短/最干净的输出)会增加计算开销。

  5. 不支持流式推理:VoiceCraft 以自回归方式生成完整序列,相比 Kokoro 或 MeloTTS 这类模型,实时流式 TTS 并不现实。

  6. 搭建较复杂:与 pip 一键安装的 TTS 工具相比,VoiceCraft 需要 Docker 或 Conda,还要配合 MFA、EnCodec 以及特定的 CUDA 版本——不是 30 秒就能装好的东西。

常见问题 #

问题一:VoiceCraft 做语音克隆需要多少参考音频?

VoiceCraft 只需要 3-5 秒的参考音频即可完成零样本 TTS。为获得最佳效果,请使用没有背景噪音或音乐的干净录音。模型通过 EnCodec RVQ token 把参考音频编码为说话人嵌入,因此更长的参考音频并不一定能提升质量。

问题二:我可以把 VoiceCraft 用于商业项目吗?

VoiceCraft 的代码采用 CC BY-NC-SA 4.0 许可证,模型权重采用 Coqui Public Model License 1.0.0 许可证——两者都限制商业使用。如果你需要商业友好的替代方案,可以考虑 GPT-SoVITS(MIT 许可证),或者从 Coqui 购买 XTTS v2 的商业许可证。

问题三:运行 VoiceCraft 需要什么样的 GPU?

830M 模型需要 32GB 显存(A100、V100,或 RTX 4090 加上系统内存共享)。330M 模型可以在 16GB 显卡上运行,设置 kvcache=True 后,8GB 显卡也能进行推理。纯 CPU 推理也是可行的,但在 8 核 Ryzen 上每句话大约需要 7 分钟以上,而 GPU 上只需要 35 秒。

问题四:VoiceCraft 在语音克隆方面与 GPT-SoVITS 相比如何?

在英语音频上,VoiceCraft 实现了更高的说话人相似度(SIM 0.55 对比约 0.50)和自然度(MOS 4.17 对比约 3.8)。不过 GPT-SoVITS 原生支持中文和日语,推理速度更快(RTF 0.028 对比约 0.3),并且采用更宽松的 MIT 许可证。单就语音编辑而言,VoiceCraft 没有开源竞品。

问题五:VoiceCraft 能不能在不重新合成整个文件的情况下编辑已有录音?

可以——语音编辑正是 VoiceCraft 最大的差异化能力。你在文本中指定编辑范围(插入、删除或替换),模型只会填充受影响的音频片段,同时保留周围的上下文。这比完整重新合成更高效,也能保持声学上的连贯性。

问题六:如何修复生成音频中的"刮擦声"?

这是自回归编解码器模型中一个已知的问题。2025 年 3 月的更新(用 top-k=40 替代 top-p=1.0)显著减少了这类瑕疵。其他补救方法包括:(1) 多次采样并挑选最短/最干净的输出;(2) 把温度降到 0.9;(3) 使用专门为 TTS 质量微调过的 330M-TTS-Enhanced 模型。

问题七:VoiceCraft 有没有 REST API 或 Web 服务?

官方仓库提供了 Gradio UI 和 Jupyter notebook。像 VoiceCraft_API 这样的社区项目把它封装成了 FastAPI 服务。对于生产环境,建议把 Docker 容器部署在带限流和说话人验证的 API 网关后面。

结语 #

VoiceCraft 填补了大多数 TTS 工具都忽视的一个空白:编辑已有语音,而不仅仅是合成新语音。它的 8,500 个 GitHub star 和被 ACL 2024 接收,反映出真正的技术价值——尤其是那套能在自回归生成中实现双向上下文的 token 重排流程。基准测试的结论很清楚:VoiceCraft 在说话人相似度上领先(MOS 4.34),生成的编辑音频在 48% 的情况下比原始录音更受听众青睐。

对于正在构建播客编辑器、有声书工具或声音克隆服务的开发者来说,VoiceCraft 值得投入搭建的成本。可以先从 Docker 快速上手指南开始,在 Gradio UI 上测试,然后再通过 Python API 集成到你的产品中。

加入我们的 Telegram 群组,一起讨论 VoiceCraft 的部署模式,分享微调配置,并获取生产环境搭建方面的帮助。

推荐的主机与基础设施 #

在将上述任何一款工具部署到生产环境之前,你都需要可靠的基础设施。以下是 dibi8 实际使用并推荐的两个选择:

  • DigitalOcean —— 覆盖全球 14+ 个地区,提供 60 天 $200 免费额度。这是独立开发者运行开源 AI 工具的默认选择。
  • HTStack —— 香港 VPS,从中国大陆访问延迟低。这正是承载 dibi8.com 的同一家 IDC —— 在生产环境中久经考验。

联盟链接 —— 不会让你多花一分钱,却能帮助 dibi8.com 持续运营。

来源与延伸阅读 #

本指南由 dibi8 技术团队独立撰写。VoiceCraft 由 Puyuan Peng、Po-Yao Huang、Shang-Wen Li、Abdelrahman Mohamed 和 David Harwath 开发。dibi8 与 VoiceCraft 项目之间不存在任何商业关联。

参考与来源 #

📦 出现在以下合集中

💬 留言讨论