GitHub 趋势 · 第 101 期
3.7 万星的本地语音克隆:像不像赢了 22 项,准不准只赢 2 项
#VoxCPM2#语音克隆#本地模型#Apache2.0#TTS
这一族里少见的许可干净的一份:代码和权重都走 Apache-2.0,README 的亮点清单里直接写着 free for commercial use。但有两个前提得先摆上来 —— 它的头条速度数字是按 RTX 4090 量出来的,而 pip install 拿到的是 5 月 11 日那版,不是仓库现在这版。
前面写过的那个本地语音 GUI(VoiceStudio),是把模型套在一层壳里:应用 AGPL-3.0、默认权重 CC-BY-NC,本地跑通不等于能拿去商用。这次回到模型本身。它自己是什么许可、在不是 4090 的机器上能跑多快、装到的是哪一版,才是决定你要不要在这个上面搭产品的东西。
这个项目是什么
VoxCPM2 来自 OpenBMB,一个组织账号而不是个人仓库。GitHub 上 37,107 star、4,215 fork、117 个未关 issue。按 API 的 subscribers_count 算,star 与 watcher 的比例是 226:1 —— 收藏它的人很多,订阅它动态的人很少;未关 issue 对 star 的比值是 0.32%。
它冲着语音合成那条主流路线来的:主流做法先把语音切成离散 token 再建模,VoxCPM 不做 tokenization,直接在连续语音表示上生成,走 diffusion autoregressive 的路子。VoxCPM2 是 2B 参数、官方自述用 200 万小时以上多语种数据训练、30 种语言、48kHz 输出;语言模型底座是 MiniCPM-4,整条链路压成四段:LocEnc → TSLM → RALM → LocDiT。
五种用法,一种比一种重
它把语音这件事拆成了四档加一个流式接口,分档依据是你要给它多少东西:
| 用法 | 你给它什么 | 它做什么 |
|---|---|---|
| 直接合成 | 一段文字 | 30 种语言直接读,不用加语言标签 |
| Voice Design | 一句自然语言描述 | 从零造一个音色,不需要参考音频 |
| Controllable Cloning | 参考音频,可选加风格指令 | 克隆音色,同时改情绪、语速、表达 |
| Ultimate Cloning | 参考音频加它的逐字转写 | 从参考音频续写,保留音色、节奏、情绪 |
| 流式 | 一段文字 | generate_streaming 逐块吐,用来做实时对话 |
- ▪48kHz 输出这条路是它自己走的:接受 16kHz 参考音频,靠 AudioVAE V2 的非对称编解码直接出 48kHz,内置超分,官方说不需要任何外挂升采样器
- ▪30 种语言之外另有 9 种中文方言:四川话、粤语、吴语、东北话、河南话、陕西话、山东话、天津话、闽南话
- ▪微调两条路都给:SFT 和 LoRA,官方说自己准备 5 到 10 分钟音频就能适配一个特定说话人
- ▪生态表里 13 个第三方项目,从 Nano-vLLM、vLLM-Omni、llama.cpp-omni 到 ONNX、Apple Neural Engine、Rust 重写、三个 ComfyUI 节点、视频配音翻译都有 —— 但 README 自己标注了这些社区项目不由 OpenBMB 维护
一个仓库里同时活着三代模型
它的 README 用三档状态把三个版本并排列出来:
| VoxCPM2 | VoxCPM1.5 | VoxCPM-0.5B | |
|---|---|---|---|
| 官方状态 | Latest | Stable | Legacy |
| 主干参数 | 2B | 0.6B | 0.5B |
| 输出采样率 | 48kHz | 44.1kHz | 16kHz |
| 语言 | 30 | 2 | 2 |
| 克隆模式 | 隔离参考 + 续写 | 仅续写 | 仅续写 |
| 显存 | 约 8 GB | 约 6 GB | 约 5 GB |
这三代不是躺在 git 历史里,是躺在根目录里。v2 的模型实现 54,715 字节和 v1 的 43,178 字节并排放;两代音频 VAE 一起在,19,201 对 10,871(1.77 倍);conf/ 下三套微调配置各一份;连 Web Demo 都留了个 app_old.py(12,572 字节)在 app.py(24,384 字节)旁边。
顺带一处对不上的地方:同一个 VoxCPM1.5,在版本表里主干参数写 0.6B,在下面那张 Seed-TTS-eval 基准表里写 0.8B;而名字里带着 0.5B 的那个,基准表里又写成 0.6B。两张表都没跟着对方改。
上手:README 原文命令
最省事的一行就是包管理器:
pip install voxcpm
然后是最短的 Python 调用,照着 README 的 Quick Start 抄:
from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained(
"openbmb/VoxCPM2",
load_denoiser=False,
)
wav = model.generate(
text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
cfg_value=2.0,
inference_timesteps=10,
seed=42,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)不想写代码就走 CLI,这条克隆命令也是 README 原文:
voxcpm clone \ --text "This is a voice cloning demo." \ --reference-audio path/to/voice.wav \ --output out.wav
代码一直在动,版本停在 114 天前
GitHub 上 14 个 tag、14 个 Release,PyPI 上 14 个版本 —— 三处数字完全对得上。三处的最新一个也都是 2.0.3,2026-05-11。
而仓库最后一次推送是 2026-09-02,中间隔着 114 天。GitHub 的 compare 接口给的是 total_commits: 33、ahead_by: 33、behind_by: 0 —— 33 个提交全部在 tag 前面,一个都没落后。
这 33 个提交里有实东西:可复现生成的 seed(PR #327)、生成后时间戳对齐(PR #332)、LoRA 配置自动加载(PR #329)、Docker 部署与反代流式(PR #380)、Mac MPS 支持(PR #298)、本地推理引擎文档(PR #348)、checkpoint 加载加固(PR #347)。
原因写在一个 1,302 字节的工作流文件里 ——
on:
release:
types: [created]发版动作绑在 Release 被创建这个事件上,不是绑在打 tag 上。没人去点那个按钮,PyPI 就停在 5 月 11 日。配套还有两件事:14 个 Release 的 assets 全都是空数组,一个二进制附件都没有,装它只能走包管理器或者源码;而 pyproject.toml 里版本号是动态的,靠 setuptools_scm 从 git tag 反推。所以你要么等有人建 Release,要么直接从源码装。
它自己的性能表里,赢的是哪一列
README 里那张 MiniMax-MLS-test 表按语言列了 24 行,两列指标:WER 是念得对不对,SIM 是像不像。我把两列的加粗逐个点过一遍,结果是 WER 表里它只在 2 行最优(芬兰语 2.632、泰语 2.961),而 SIM 表里它是 22 行最优,只有捷克语和罗马尼亚语旁落。
| 语言 | VoxCPM2 的 WER | 同行最好 | 差多少 |
|---|---|---|---|
| 芬兰语 | 2.632 | 2.632(它自己) | —— |
| 泰语 | 2.961 | 2.961(它自己) | —— |
| 印地语 | 19.699 | 5.827 | 3.4 倍 |
| 乌克兰语 | 6.316 | 0.997 | 6.3 倍 |
| 阿拉伯语 | 13.046 | 1.665 | 7.8 倍 |
| 捷克语 | 24.132 | 2.108 | 11.4 倍 |
| 罗马尼亚语 | 21.577 | 1.347 | 16.0 倍 |
直接说结论:音色这件事它做到了第一档,但念得准这件事在相当多语言上排在后面。做配音、做有声书的人不太受影响,因为人耳听的是像不像;做电话客服、做播客转写回环的人,这几行就是硬伤。
还有一张它自己跑的内部 30 语言基准,均值 1.68%。但那张表的对比列只填了一半:VoxCPM2 一列有均值,对手那格是空的 —— 这个 1.68% 目前没有同行参照。
许可:代码和权重同一套 Apache-2.0
这是它相对前面那份本地语音 GUI 最实在的差异。
- ▪LICENSE 是 11,298 字节的标准 Apache-2.0 全文,附录里填的是 Copyright OpenBMB,尾部没有任何追加条款
- ▪README 两处写明:亮点清单里写代码与权重都在 Apache-2.0 下、可免费商用;License 一节写 model weights and code are open-sourced under the Apache-2.0 license
- ▪pyproject.toml 里写 license = "Apache-2.0",与上面两处一致
- ▪对比:前面写过的 VoiceStudio 是 AGPL-3.0 应用加默认 CC-BY-NC 权重,本地跑不等于能商用。这一份代码和权重是同一套许可,商用这条路是通的
三个未核实项要说清:模型权重放在 HuggingFace 与 ModelScope 上,本轮抓取不到,没纳入核实范围,相关结论一律没写进正文;llama.cpp-omni 用的 GGUF 权重挂在第三方账号下,不是 OpenBMB 自己发布的;PyPI 上 2.0.3 的元数据里许可字段是空的,是旧版打包没带上。另外 README 的 Risks 一节写着严禁用于冒充、欺诈与虚假信息 —— 那是伦理声明,不是许可证。
我的判断
适合谁:要在自己机器上跑语音克隆、并且打算拿去做商用的人;做中文内容的,因为 30 种语言里有中文加 9 种方言;需要原创音色但手上没有参考音频的,Voice Design 那一档不需要任何音频输入;手上有 8GB 以上显存,或者愿意走 llama.cpp-omni 上 Mac 的。
不适合谁:显存 8GB 以下的;要做阿拉伯语、捷克语、罗马尼亚语、印地语这类语言的,它在那种表里排在后面;要一次生成就定稿的,官方自己写了可控克隆与音色设计每次结果会有起伏,可能得生成 1 到 3 次;以及只想 pip 装完就用上最新特性的人。
上手之前,这四处值得先看清楚:
- ▪pip install voxcpm 装到的是 2.0.3,5 月 11 日上传;仓库已经往前走了 33 个提交
- ▪头条那个 RTF 0.3 是 RTX 4090 的数字,同一份 README 里 Apple M4 Pro 走 Metal 是 1.76,差 5.9 倍;跟 Nano-VLLM 的 0.13 比是 13.5 倍。安装要求那行只提 CUDA,没提 MPS
- ▪python app.py 的 --host 默认是 0.0.0.0,而源码里这个参数的说明自己就写着这个默认会把无鉴权的 UI 与 API 暴露到网络上;README 的 Web Demo 一节只给了 --port,全文没出现过 --host、0.0.0.0 和鉴权字样
- ▪README 要求 Python 3.10 到 3.12(原文写 <3.13),而 pyproject.toml 和 PyPI 的元数据都只写 >=3.10,上界没落进元数据里
仓库:github.com/OpenBMB/VoxCPM(https://github.com/OpenBMB/VoxCPM)
Star:37,107(REST API,2026-09-14 抓取);Trending 日榜同期显示 37,192、今日 +204
Fork 4,215 · 未关 issue 117 · watcher 164 · 仓库 size 4,120 KB · Python · 默认分支 main · 未归档
许可:Apache-2.0,覆盖代码与权重(LICENSE 11,298 字节标准全文,无追加条款);HuggingFace 与 ModelScope 上的权重页本轮抓取失败,未纳入核实范围
版本:最新 Release 与最新 PyPI 版本均为 2.0.3(2026-05-11);14 个 tag / 14 个 Release / 14 个 PyPI 版本,Release 附件全为空
体量:文件级合计约 5.68 MB,其中图片与两段示例音频占 72.0%,uv.lock 占 18.5%,代码约占 7.9%
抓取时间:2026-09-14
想在本地跑语音克隆、又在意许可的人,这一份的许可是这十几期里最干净的一份之一;但别只看 README 的头条数字,先把 pip 拿到的版本号对一遍。已经在跑 VoxCPM2 的,说说你在什么机器上、RTF 是多少 —— 那比一张只有一个硬件锚点的性能表有用。
下期预告:短视频方向,继续按方向的实时榜单找没写过的新面孔;更早预告过的开源替代 SaaS 合集不在给定方向内,继续欠着。
#VoxCPM2#语音克隆#本地模型#Apache2.0#TTS
