本文是一篇实操指南,详细讲解如何快速上手微软最新开源 TTS 模型 VibeVoice-1.5B,将输入的文字一次性合成长达 90 分钟的播客式音频,支持最多 4 位不同说话人的自然对话生成。
VibeVoice-1.5B 是微软开源发布的一款创新型文本转语音模型,支持一次生成最长约 90 分钟音频、最多 4 位说话人的对话式场景,适合构建播客、有声读物等长篇语音内容。模型基于 Qwen2.5-1.5B LLM 和“连续语音标记器 + 扩散头”生成架构,训练上下文最长 65,536 tokens,开源并采用 MIT 协议授权。市面上常见 TTS 多限于单人、短句,而 VibeVoice 在长时与多说话人处理方面具有技术优势,是当前公开模型中少有用途更加广泛的长格式语音生成框架。
环境与资源配置指南
1)硬件要求
GPU 显存:实测 RTX 3060(12GB VRAM)可运行,约耗费 7GB 左右显存。
CPU / 内存:GPU 之外推荐 16GB+ RAM 与现代 CPU,避免影响数据加载与推理效率。
2)软件准备
conda create -n vibevoice python=3.11
conda activate vibevoice
# 安装 PyTorch 与附加优化库
pip install torch torchvision –index-url https://download.pytorch.org/whl/cu126
pip install triton-3.0.0+… # 根据具体环境
pip install flash_attn-2.7.4+… # 同样需配合你的 CUDA 版本
以上配置是基于社区分享的经验(如 Reddit 中用户反馈),可稳定运行 1.5B 模型。
3) 下载模型
- GitHub 代码仓:https://github.com/microsoft/VibeVoice
- Hugging Face 模型卡与下载链接:microsoft/VibeVoice-1.5B(MIT 许可),提供结构说明、安全条款与示例调用代码。
3 零安装:在线试玩两种方式(3 分钟见声)
3.1 官方 Live Playground / Demo(免部署)
仓库 README 提供了 Live Playground(aka.ms 短链)与 Colab入口;此外还有 Hugging Face 社区空间可直接输入文本试听。
- 入口:Try it on Colab or Demo(README “Try it on Colab or Demo” 一节)
- 示例空间:Hugging Face Space(第三方 Demo,文本输入→生成音频)
用法:在输入框写剧本(英文/中文均可),设定说话人(如 Alice/Bob),点击生成,即可在线得到音频文件。注意:当前多语种以英/中文为主,其他语言输出不可预期。
4 本地一键跑 Gradio(推荐,10–20 分钟)
4.1 环境准备(官方推荐 Docker)
README 建议直接使用 NVIDIA PyTorch 官方容器(24.07/24.10/24.12 已验证),可最大化减少 CUDA/依赖踩坑。
# 1) 启动官方 PyTorch 容器(需本机装好 NVIDIA 驱动与 Docker + nvidia-container-toolkit)
sudo docker run --privileged --net=host --ipc=host --ulimit memlock=-1:-1 --ulimit stack=-1:-1 \
--gpus all --rm -it nvcr.io/nvidia/pytorch:24.07-py3
# 2) (可选)容器内安装 flash-attn(若容器镜像未预装)
# 参考官方 README 的说明
# pip install flash-attn --no-build-isolation
4.2 安装与启动 Gradio Demo
# 3) 拉仓库并安装
git clone https://github.com/microsoft/VibeVoice.git
cd VibeVoice
pip install -e .
# 4) 安装 ffmpeg(用于音频处理)
apt update && apt install -y ffmpeg
# 5) 启动 Gradio Demo(1.5B 版本)
python demo/gradio_demo.py --model_path microsoft/VibeVoice-1.5B --share
执行后命令行会出现一个 本地地址 + 公网 share 链接,浏览器打开即可输入文本、多说话人配置,点生成拿到 .wav。上述命令与参数均来自官方 README。
小贴士(中文场景):官方给出若干中文稳定性建议(使用英文标点、尽量只用逗号与句号;7B 变体更稳),若你发现少量字词读不出或读错,可分句/换标点重试。
5 批量把「长文稿 → 播客音频」(文件驱动,一条命令)
如果你已经有完整播客脚本(含说话人轮次),可以直接用官方的 inference_from_file.py 一次性生成:
5.1 准备你的播客脚本(示例)
创建 demo/text_examples/podcast_4p.txt(UTF-8):
Alice: 欢迎来到我们的播客,本期我们聊聊“长文本 TTS”带来的新机会。
Bob: 我想先抛个问题:为什么传统 TTS 很难做 30 分钟以上的自然对话?
Carol: 关键在于长上下文与多说话人轮次的稳定建模……
Dave: 那 VibeVoice 的连续语音 tokenizer + 扩散头,是怎么配合 LLM 实现的?
5.2 一条命令生成 .wav
python demo/inference_from_file.py \
--model_path microsoft/VibeVoice-1.5B \
--txt_path demo/text_examples/podcast_4p.txt \
--speaker_names Alice Bob Carol Dave
这条命令与参数形式(–txt_path、–speaker_names)出自官方 README 的「Usage 2: Inference from files directly」示例。
格式要点:文本文件中用「说话人名: 内容」表示轮次;–speaker_names 顺序要与你脚本中用到的角色一致。
6 进阶:把「文稿 → 播客」做成流水线
下面给一份极简的 Python 脚本范例(参考官方接口与用法组织),做批量章节生成与拼接。你可以直接替换 INPUT_TXT 为你的长稿,脚本会按行解析说话人并调用模型:
# demo_pipeline.py —— 伪代码结构,按官方README的用法组织
import argparse, re, os
from vibevoice import VibeVoice # 来自 pip install -e . 的包
from datetime import datetime
def parse_dialogue_lines(lines):
"""解析 'Speaker: text' 格式"""
pat = re.compile(r"^(\w+)\s*:\s*(.+)$")
items = []
for ln in lines:
m = pat.match(ln.strip())
if m:
items.append((m.group(1), m.group(2)))
return items
def main(model_path, input_txt, speakers, out_dir="outputs"):
os.makedirs(out_dir, exist_ok=True)
with open(input_txt, "r", encoding="utf-8") as f:
items = parse_dialogue_lines(f.readlines())
model = VibeVoice.load_pretrained(model_path) # 与官方用法一致
# 拼接成模型期望的长文本(含说话人轮次)
script = "\n".join([f"{spk}: {utt}" for spk, utt in items])
audio = model.generate(
script,
speakers=len(speakers),
speaker_names=speakers, # 与 README 的文件推理示例一致
max_length="90m"
)
ts = datetime.now().strftime("%Y%m%d-%H%M%S")
out_wav = os.path.join(out_dir, f"podcast_{ts}.wav")
with open(out_wav, "wb") as f:
f.write(audio)
print("Saved:", out_wav)
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("--model_path", default="microsoft/VibeVoice-1.5B")
ap.add_argument("--input_txt", required=True)
ap.add_argument("--speaker_names", nargs="+", required=True)
args = ap.parse_args()
main(args.model_path, args.input_txt, args.speaker_names)
说明:上面是示意结构,与官方 README 的 gradio_demo.py / inference_from_file.py 参数语义一致,便于你把现有播客稿直接换成文件批量合成。请以官方仓库中的实际 API 为准(以免未来接口小改动)。
通过本文的实操指南,你已经掌握了如何在本地快速运行微软开源发布的 VibeVoice‑1.5B 模型,从环境配置到模型体验,再到批量处理与自动化流水线搭建,一步步实现输入文本转化为自然、连贯、最多 90 分钟的对话式播客音频。VibeVoice‑1.5B 不仅升级了 TTS 的使用边界,更为内容创作者、播客制作者与AI开发者提供一个高效、开放、具实验价值的工具。若你的需求是生成长格式语音内容,或者探索多说话人 AI 合成,此模型无疑具备极高价值。同时,微软即将发布的 7B 流式版本和未来的实时 0.5B 模型正逐步推动这项技术走向更低延迟、更轻量级应用场景,值得关注。在尝试过程中,务必注意模型的使用限制与合规边界 —— 它目前仅支持中英文纯语音生成、不适用于重叠语音或背景音效果,也不宜用于语音克隆或欺诈场景。你可通过 Hugging Face 模型卡与官方 README 获取更多技术细节和责任使用建议。