进阶 docs.voicebox.sh 2026-10-11 09:58:06 · 28 阅读

第19章 开发环境搭建指南

第19章:开发环境搭建

配置你的本地 Voicebox 开发环境

快速开始(推荐)

通过两条命令快速上手:

# 克隆并进入仓库
git clone https://github.com/jamiepine/voicebox.git
cd voicebox

# 配置所有环境(Python venv、JS 依赖、开发 sidecar)
just setup

# 启动开发模式(后端 + 桌面应用)
just dev

just dev 命令会自动启动 Python 后端(如果尚未运行)并启动 Tauri 桌面应用。

前置依赖

请确保已安装以下工具:

  • Bun
    下载 Bun
    curl -fsSL https://bun.sh/install | bash
  • Python 3.12
    下载 Python
    python3.12 --version # macOS/Linux — 应为 3.12.x
    py -3.12 --version # Windows
    Voicebox 将 venv 固定为 3.12 以匹配 CI 环境,因为部分依赖尚未发布 3.13 版本。在 Debian/Ubuntu 上还需安装 python3.12-venv。
  • Rust
    安装 Rust
    rustc --version
  • Just
    安装 Just
    brew install just # macOS
    cargo install just # Linux/Windows
    Just 支持 macOS、Linux 和 Windows。

Just 命令

运行 just --list 查看所有可用命令。重点如下:

配置

命令描述
just setup完整配置(Python venv + JS 依赖 + dev sidecar)。将 venv 固定为 Python 3.12(若版本错误则重建),并检测 Apple Silicon 以使用 MLX,或在 Windows 上检测 NVIDIA/Intel Arc 以加速 PyTorch。
just setup-python仅配置 Python venv 和依赖
just setup-js仅运行 bun install

开发

命令描述
just dev启动后端 + Tauri 桌面应用(若已有后端运行则复用)
just dev-web启动后端 + Web 应用(无需构建 Tauri/Rust)
just dev-backend仅启动后端
just dev-frontend仅启动 Tauri 应用(需后端已运行)
just kill停止所有开发进程

构建

命令描述
just buildCPU 服务器二进制文件 + Tauri 安装包
just build-localWindows:CPU + CUDA 服务器二进制文件 + Tauri 安装包
just build-server仅 CPU 服务器二进制文件
just build-server-cudaWindows:仅 CUDA 服务器二进制文件,放置于 %APPDATA%/sh.voicebox.app/backends/cuda 用于本地测试
just build-tauri仅 Tauri 应用
just build-web仅 Web 应用

质量检查

命令描述
just checkLint + 格式化 + 类型检查(Biome + ruff)
just fix自动修复 Lint 和格式问题
just lint / just format仅 Lint 或仅格式化
just test运行 Python 测试(pytest)
just test-models使用冻结二进制文件针对所有 TTS 引擎进行端到端生成测试

数据库

命令描述
just db-init初始化 SQLite 数据库
just db-reset删除并重新初始化数据库

实用工具

命令描述
just generate-api根据后端的 OpenAPI schema 生成 TypeScript API 客户端
just docs在浏览器中打开 http://localhost:17493/docs
just logs实时查看后端日志
just clean清除构建产物
just clean-python删除 Python venv 和 __pycache__
just clean-all彻底清理(包含所有 node_modules)

项目结构

(此处原文未提供具体结构图,仅保留标题)

请求流程

HTTP 请求 → routes/(验证输入) → services/(业务逻辑) → backends/(TTS/STT 推理) → utils/(音频处理)

核心模块

  • app.py — FastAPI 应用工厂、CORS、生命周期事件
  • main.py — 入口点(导入 app,运行 uvicorn)
  • server.py — Tauri sidecar 启动器、父进程 PID 监控
  • services/generation.py — 处理所有生成模式的单一函数
  • backends/ — TTS/STT 引擎实现(MLX、PyTorch 等)

模型下载

模型会在首次使用时自动从 HuggingFace Hub 下载,并向 UI 实时推送进度:

  • Whisper(转录)— 首次转录时自动下载
  • TTS 引擎 — 首次生成时自动下载。大小范围从 82 M(Kokoro,约 350 MB)到 3 B(TADA,约 8 GB)

完整列表请参阅“模型管理”。首次使用因模型下载速度较慢,但后续运行将使用缓存的模型。

生成 OpenAPI 客户端

启动后端服务器后,生成 TypeScript API 客户端:

just generate-api

这将下载 OpenAPI schema 并在 app/src/lib/api/ 中生成 TypeScript 客户端。

手动配置(高级)

如果不想使用 Just,请遵循以下手动步骤:

1. 安装 JavaScript 依赖

bun install

这将安装以下项目的依赖:

  • app/ - 共享 React 前端
  • tauri/ - Tauri 桌面包装器
  • web/ - Web 部署包装器

2. 配置 Python 后端

cd backend

# 创建虚拟环境(使用 Python 3.12 — 参见前置依赖)
python3.12 -m venv venv   # macOS/Linux
# 或者
py -3.12 -m venv venv     # Windows

# 激活虚拟环境
source venv/bin/activate  # macOS/Linux
# 或者
venv\Scripts\activate  # Windows

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

# Apple Silicon:安装 MLX 依赖
pip install -r requirements-mlx.txt

# Chatterbox 固定了 numpy<1.26 / torch==2.6,在 Python 3.12+ 上会失效
pip install --no-deps chatterbox-tts

# HumeAI TADA 固定了 torch>=2.7,<2.8,与我们要求的 torch>=2.1 冲突
pip install --no-deps hume-tada

# 从源码安装 Qwen3-TTS
pip install git+https://github.com/QwenLM/Qwen3-TTS.git

# PyInstaller 和 Lint 工具
pip install pyinstaller ruff pytest pytest-asyncio

3. 启动开发

启动后端:

cd backend
source venv/bin/activate
uvicorn main:app --reload --port 17493

在新终端中启动桌面应用:

cd tauri
bun run tauri dev

后续步骤

  • 架构 — 了解系统架构
  • 贡献 — 阅读贡献指南
  • 构建 — 学习如何构建生产发行版
  • TTS 引擎 — 端到端添加新的 TTS 引擎

故障排查

▶ 后端无法启动

  • 检查 Python 版本(必须是 3.12)
  • 确保已激活虚拟环境:source backend/venv/bin/activate
  • 验证所有依赖已安装:pip install -r requirements.txt
  • 检查端口 17493 是否可用

▶ Tauri 构建失败

  • 确保已安装 Rust:rustc --version
  • 清理构建:cd tauri/src-tauri && cargo clean
  • 尝试重新构建:just dev

▶ OpenAPI 客户端生成失败

  • 确保后端正在运行:curl http://localhost:17493/openapi.json
  • 检查网络连接
  • 验证后端是否可通过 localhost:17493 访问

更多问题及解决方案请参阅完整的“故障排查指南”。

在 GitHub 上编辑 | 获取模型进度 | 通过 Server-Sent Events 获取模型下载进度 | 架构:理解 Voicebox 的技术架构

评论 (0)