将 FunAudioLLM/CosyVoice 封装为桌面应用,目标是本地开箱即用。
- 前端:
React + TypeScript + Vite - 桌面壳:
Tauri v2 (Rust) - 推理后端:
Python sidecar (FastAPI) + CosyVoice AutoModel - 资源打包:
src-tauri/resources/models/Fun-CosyVoice3-0.5B-2512(模型)src-tauri/resources/runtime/<target>/cosyvoice-sidecar(完整 sidecar 运行目录,含 Python 运行时与依赖)
- App 启动时只使用
resources内置资源,不依赖宿主机 Python、宿主机 pip 包、宿主机模型目录。 - 为了确保“无脑使用”,请先执行
pnpm prepare:desktop产出完整内置运行时。
- macOS: 支持(Apple Silicon / Intel)
- Windows: 支持(x64,建议 Windows 11)
- 注意:
sidecar与tauri安装包需要在对应平台本机构建,不支持跨平台直接产出。
说明:模型文件较大,不适合进 git;本项目提供构建前自动拉取脚本。
- 克隆 CosyVoice 源码(含 submodule):
pnpm bootstrap:cosyvoice- 下载默认模型(
FunAudioLLM/Fun-CosyVoice3-0.5B-2512):
pnpm fetch:model- 构建 sidecar 运行目录(包含 Python 运行时和依赖):
pnpm build:sidecar也可一步执行:
pnpm prepare:desktoppnpm install
pnpm tauri:dev- Python:
3.10(建议) - Rust: stable(已安装
cargo) - Node.js:
>=20 - Windows 额外建议:
- 使用 PowerShell 或 Windows Terminal
- 安装 Visual Studio C++ Build Tools(用于部分 Python 科学计算依赖编译)
打包前会自动执行资源校验(模型目录 + sidecar 二进制):
pnpm verify:resourcespnpm tauri:buildCOSYVOICE_MODEL_DIR: 覆盖模型目录(默认走resources/models/Fun-CosyVoice3-0.5B-2512)。COSYVOICE_SIDECAR_BIN: 强制指定 sidecar 可执行文件路径(仅调试时建议使用)。COSYVOICE_SPEAKER_STORE: 覆盖导入音色持久化文件路径(默认使用应用数据目录)。
- 已支持:
- SFT 文本合成(
inference_sft) - 参考音频导入克隆音色(
add_zero_shot_spk)+ 导入音色跨重启持久化 - 官方 demo 近似推理模式:
auto/sft/zero_shot/cross_lingual/instruct2 seed/speed/text_frontend参数透传- 本地 WAV 播放/下载
- SFT 文本合成(
- 暂未接入:voice-conversion(
inference_vc)UI 流程。