vibevoice-rs
danielclough/vibevoice-rs加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,只需要提供一段几秒钟的语音样本,就能让 AI 用完全相同的声音朗读任何文字?VibeVoice-RS 正在将这个能力带入 Rust 生态——用纯 Rust 实现的高质量文本转语音系统,支持从音频样本克隆音色、支持多人对话合成、支持 GPU 加速实时流式输出,全部开源。
传统 TTS 系统(如 Coqui TTS、Fish Speech)大多基于 Python/PyTorch 开发,虽然模型精度高,但运行时依赖繁重、内存占用大、冷启动慢。Rust 语言凭借其零成本抽象和精细的内存控制,成为追求性能极限的开发者的新选择。
VibeVoice-RS 的作者 Daniel Clough 选择了 HuggingFace Candle 作为底层 ML 框架——Candle 是 Rust 原生的极简 ML 框架,支持 CUDA/Metal GPU 加速,包体积远小于 PyTorch。
项目采用 Cargo workspace 架构,将整个系统拆分为 5 个独立的 crate,形成了从核心库到最终产品的完整工具链。

VibeVoice-RS 不是一个单一的 TTS 程序,而是一套完整的语音合成解决方案,包含 5 个核心组件:
| 组件 | 类型 | 说明 |
|---|---|---|
vibevoice | Rust Crate | 核心推理引擎,支持多种 TTS 模型 |
vibevoice-cli | 命令行工具 | 适合批处理和脚本集成 |
vibevoice-server | HTTP 服务器 | 支持 SSE 流式输出,适合集成到其他系统 |
vibevoice-web | Web 前端 | Leptos 构建的浏览器界面 |
vibevoice-tauri | 桌面应用 | 跨平台桌面客户端,支持系统托盘+全局快捷键 |
这是 VibeVoice-RS 最具差异化的能力。用户只需提供一段 WAV 格式的语音样本,模型就能提取音色特征,用这个声音朗读任意文本:
let audio = vv.synthesize("Hello!", Some("path/to/voice.wav"))?;
VibeVoice-RS 支持多角色对话脚本,适合播客自动生成、有声书多角色旁白等场景:
# 准备脚本文件
Speaker 1: 欢迎收听今天的节目。
Speaker 2: 感谢邀请,我来分享最新研究。
# 配合语音样本目录运行
vibevoice --script dialogue.txt --voices-dir voices/
VibeVoice-RS 在不同平台上有不同的加速路径:
--features metal--features cuda⚠️ 已知问题:Apple Metal 在处理超长文本时可能触发缓冲区溢出,建议超长文本使用 batch 模型。
适合脚本集成和批量处理:
cargo build --release -p vibevoice-cli --features metal
./target/release/vibevoice --text "Hello" --output hello.wav
vibevoice-server 提供 REST API + SSE 流式输出:
# config.yaml
port: 3908
safetensors_dir: /path/to/voices
vibevoice-web 是 Leptos 构建的单页应用,配合 server 使用,支持模型选择、音色选择、SSE 流式输出、音频播放下载。
vibevoice-tauri 支持系统托盘、全局快捷键(Ctrl+Shift+V)、嵌入式 server 模式,可本地独立运行。
Candle 是 HuggingFace 开发的纯 Rust ML 框架,VibeVoice-RS 使用了作者自定义的 Candle fork。项目核心依赖:
candle-core / candle-nn / candle-transformers:自定义分支tokenizers = "0.19":HuggingFace 分词器hound = "3.5":WAV 文件读写serde:YAML 配置序列化Candle + Rust 的组合带来独特的性能优势:启动速度快(无 Python 解释器开销)、内存效率高(无 GC)、部署简单(单一静态二进制)。
超长文本可能触发 Metal 缓冲区溢出,Candle 的 Flash Attention 目前仅支持 CUDA。
无 Docker 支持,服务器部署需完整 Rust 编译工具链 + GPU 驱动配置。
# 1. 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 2. 配置 HuggingFace Token(必须)
mkdir -p ~/.cache/huggingface
echo "hf_xxxxxxxxxxxx" > ~/.cache/huggingface/token
chmod 600 ~/.cache/huggingface/token
# 3. 编译运行(macOS Metal)
cargo build --release -p vibevoice-cli --features metal
./target/release/vibevoice --text "Hello from VibeVoice-RS" --output hello.wav
MIT 协议开源,欢迎 fork 和贡献。