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 的工作原理 #
架构概览 #
模型流水线分为三个阶段:
EnCodec 量化:使用 Meta 的 EnCodec 神经编解码器把原始音频波形量化为离散 token。每一帧音频都被表示为 K 个码本索引组成的向量(残差向量量化,RVQ)。
Token 重排:这是 VoiceCraft 的核心创新。一个两步流程把编辑/填充问题转化为标准的从左到右的语言建模任务:
- 因果掩码:随机的一段 token 被遮蔽并移动到序列末尾,使模型在自回归生成过程中能够关注双向上下文。
- 延迟堆叠:向量被对角移位,使得在时间 t 预测码本 k 时能以码本 k-1 为条件,从而实现高效的多码本建模。
Transformer 解码器:重排后的 token 序列由 Transformer 解码器进行自回归建模。文本音素和语音 token 被拼接起来作为条件输入。
模型版本 #
| 模型 | 参数量 | 最适合场景 | 最长时长 |
|---|---|---|---|
| giga330M | 330M | 质量与速度的平衡 | 16 秒 |
| giga830M | 830M | 最高质量 | 30+ 秒 |
| giga330M-TTS-Enhanced | 330M | 针对 TTS 场景微调 | 16 秒 |
RealEdit 数据集 #
VoiceCraft 推出了 RealEdit,这是一个包含 310 个真实世界语音编辑样本的基准数据集,来源涵盖有声书、YouTube 视频和 Spotify 播客。与干净的实验室数据集(LibriTTS、VCTK)不同,RealEdit 包含各种口音、背景噪音、音乐和说话风格——使其成为衡量语音编辑质量的实用标准。

安装与配置 #
方式一: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.ipynb 或 inference_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) | 8GB | 16GB 显存 | 16 GB |
| Gradio UI | 8GB | 16GB 显存 | 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 进行了对比:
| 模型 | WER | SIM | 可懂度 MOS | 自然度 MOS | 说话人相似度 MOS |
|---|---|---|---|---|---|
| VoiceCraft | 4.5 | 0.55 | 4.23 | 4.17 | 4.34 |
| XTTS v2 | 3.6 | 0.47 | 4.13 | 3.96 | 3.44 |
| VALL-E | 7.1 | 0.50 | 4.00 | 3.86 | 4.07 |
| FluentSpeech | 3.5 | 0.47 | 3.67 | 3.38 | 4.01 |
| YourTTS | 6.6 | 0.41 | 3.14 | 2.79 | 2.79 |
| Ground Truth | 3.8 | 0.76 | 4.39 | 4.48 | 4.44 |
VoiceCraft 在说话人相似度上(SIM 0.55)达到最高,并在所有人工评测的 MOS 分类中取得最佳成绩。它在可懂度上仅比真实录音低 0.16 分,在说话人相似度上仅低 0.10 分。
语音编辑基准测试 #
在 RealEdit 数据集(310 个真实世界编辑样本)上,VoiceCraft 的表现优于 FluentSpeech:
| 模型 | WER | 可懂度 MOS | 自然度 MOS |
|---|---|---|---|
| VoiceCraft | 6.1 | 4.11 | 4.03 |
| FluentSpeech | 4.5 | 3.97 | 3.81 |
| 原始(未编辑) | 5.4 | 4.22 | 4.17 |
值得注意的是,在盲听对比测试中,人类听众在 48% 的情况下更偏好 VoiceCraft 编辑后的语音,而不是原始未编辑的录音——这意味着该模型的输出几乎与真实音频难以区分。
真实世界的应用 #
| 使用场景 | 参考音频 | 输出质量 | 搭建耗时 |
|---|---|---|---|
| 播客编辑 | 5 秒主持人语音 | 自然度 MOS 4.03 | < 2 分钟 |
| 有声书声音克隆 | 5 秒朗读者语音 | SIM 0.55 | < 2 分钟 |
| YouTube 视频配音 | 5 秒说话人语音 | 自然度 MOS 4.17 | < 2 分钟 |
| 呼叫中心语音合成 | 3 秒客服语音 | SIM 0.55 | < 1 分钟 |

高级用法 / 生产环境加固 #
使用 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 端点做限流以防止滥用
与其他方案的比较 #
| 特性 | VoiceCraft | GPT-SoVITS | Coqui TTS (XTTS v2) | VALL-E |
|---|---|---|---|---|
| GitHub Star | 8,500 | 57,000 | 35,000* | 无(仅论文) |
| 参数量 | 330M / 830M | 合计约 1B | 467M | 1B |
| 语音编辑 | 原生支持,业界领先 | 不支持 | 不支持 | 有限 |
| 零样本 TTS | 3-5 秒参考音频 | 5 秒参考音频 | 6 秒参考音频 | 3 秒参考音频 |
| 说话人相似度 MOS | 4.34 | 约 4.0 | 3.44 | 4.07 |
| 自然度 MOS | 4.17 | 约 3.8 | 3.96 | 3.86 |
| 支持语言 | 英语 (EN) | 英语、日语、韩语、中文、粤语 | 17 种语言 | 英语 |
| 推理 RTF | 约 0.3x(GPU) | 0.028x(4060Ti) | 0.18x(A100) | 约 0.5x |
| 许可证 | CC BY-NC-SA 4.0 | MIT | CPML(非商业) | 无 |
| 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 并不适合所有音频任务。以下是维护者和论文自身承认的局限:
仅支持英语:已发布的模型只支持英语音素。后续的 VoiceCraft-X(2024 年 11 月)扩展到了 11 种语言,但那是一个独立的模型。
非商业许可证:代码(CC BY-NC-SA 4.0)和模型权重(Coqui Public Model License)都限制商业使用,除非另行签署协议。
硬件要求:830M 模型完整推理需要 32GB 显存。即使是 330M 模型,在消费级 GPU 上也需要仔细管理内存。
生成瑕疵:生成的音频中偶尔会出现较长的静音和刮擦声。变通方案(多次采样并挑选最短/最干净的输出)会增加计算开销。
不支持流式推理:VoiceCraft 以自回归方式生成完整序列,相比 Kokoro 或 MeloTTS 这类模型,实时流式 TTS 并不现实。
搭建较复杂:与 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 持续运营。
来源与延伸阅读 #
- VoiceCraft GitHub Repository
- VoiceCraft Paper — ACL 2024
- VoiceCraft arXiv (v3)
- VoiceCraft Demo Page
- VoiceCraft-X: Multilingual Extension
- HuggingFace Model Weights
- GPT-SoVITS Repository
- Coqui TTS / XTTS v2
- EnCodec — Meta’s Neural Codec
- RealEdit Dataset Information
- VoiceCraft Docker Setup Guide
- VoiceCraft_API — FastAPI Wrapper
本指南由 dibi8 技术团队独立撰写。VoiceCraft 由 Puyuan Peng、Po-Yao Huang、Shang-Wen Li、Abdelrahman Mohamed 和 David Harwath 开发。dibi8 与 VoiceCraft 项目之间不存在任何商业关联。
💬 留言讨论