跳转到内容

VoxCPM2

使用 OpenBMB 的 VoxCPM2 语音合成模型合成跨 30 种语言的富有表现力的 48 kHz 语音。

VoxCPM2 是一款 2B 参数的多语言语音模型,支持语音克隆、转写辅助终极克隆(Ultimate Cloning)以及自然语言语音设计。TomoriBot 通过 servers/tts/voxcpm2/ 中的服务器连接到官方 voxcpm Python 库,在 16 GB 显存内即可轻松运行官方未量化的 openbmb/VoxCPM2 BF16 检查点。

VoxCPM2 代码与模型权重基于 Apache-2.0 许可证发布,在遵守许可条款的前提下允许商用。TomoriBot 本身不分发模型权重;安装脚本会直接从官方 Hugging Face 仓库下载它们。

官方上游资源:

VoxCPM2 官方支持 30 种语言,无需语言标签:

阿拉伯语、缅甸语、中文、丹麦语、荷兰语、英语、芬兰语、法语、德语、希腊语、希伯来语、印地语、印度尼西亚语、意大利语、日语、高棉语、韩语、老挝语、马来语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰语、土耳其语和越南语。

OpenBMB 还记载了若干中文方言。为了兼容通用的 TTS 规范,TomoriBot 仍可能发送 language 字段,但 VoxCPM2 会直接从合成文本中检测语言,包装脚本不会强制添加语言标签。

对于克隆和语音设计,请使用 Auto 语音源模式与 Plain 脚本标记。提供参考文本可启用终极克隆;表达方式指令具有更高优先级,并在该请求中忽略参考文本。

推荐的运行环境:

  • Python 3.10 到 3.12
  • 配备 8 GB 显存或更多的 NVIDIA GPU 用于官方 BF16 运行时;12 到 16 GB 显存更为从容
  • 最新的 NVIDIA 驱动,以及支持 CUDA 的 PyTorch 构建版本用于 GPU 加速
  • 也支持 CPU 作为后备方案,但运行速度会慢很多

官方包还提供了 CPU 与 Apple MPS 设备选项。在 Windows 上,TomoriBot 可以直接原生运行标准 Python 包,不需要 WSL。Windows PowerShell 安装脚本默认安装支持 CUDA 的 PyTorch 2.10(cu128)和 triton-windows,默认的 VOXCPM2_OPTIMIZE=1 需要借此编译模型。

启用编译后,首次启动大约需要 2 到 3 分钟来让 PyTorch 编译模型;由于编译后的内核会被缓存,后续启动耗时不到一分钟。此时合成速度大约比未编译快 2.5 到 3 倍。编译还会多占用约 2 GB 系统内存。如果服务器启动时因提示缺少 Triton 而停止,请重新运行安装脚本,或者设置 VOXCPM2_OPTIMIZE=0 以未编译方式运行。

若要在纯 CPU 设备上显式安装,请传入 -Cpu 开关:

Terminal window
.\servers\tts\voxcpm2\install-voxcpm2.ps1 -Cpu

如果你的原生 Windows PyTorch 安装需要手动重装或重新对齐驱动,请将支持 CUDA 的 PyTorch 构建直接安装到服务器的虚拟环境中:

Terminal window
.\servers\tts\voxcpm2\.venv\Scripts\pip.exe install --force-reinstall torch==2.10.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu128
.\servers\tts\voxcpm2\.venv\Scripts\pip.exe install "triton-windows>=3.6,<3.7"

服务器固定使用当前稳定的 voxcpm 2.0.3 包,并将 openbmb/VoxCPM2 下载到标准的 Hugging Face 缓存目录中。

在 TomoriBot 代码仓库根目录下执行:

Terminal window
bash servers/tts/voxcpm2/install-voxcpm2.sh
servers/tts/voxcpm2/.venv/bin/python servers/tts/voxcpm2/server.py

在 TomoriBot 代码仓库根目录下执行:

Terminal window
.\servers\tts\voxcpm2\install-voxcpm2.ps1
.\servers\tts\voxcpm2\.venv\Scripts\python.exe servers\tts\voxcpm2\server.py

初次配置会下载数 GB 的模型权重。若想只配置 Python 环境而不预取模型,可设置 VOXCPM2_PREFETCH=0;官方库将在首次启动服务器时下载检查点。

Linux 与 WSL:

Terminal window
VOXCPM2_PREFETCH=0 bash servers/tts/voxcpm2/install-voxcpm2.sh

PowerShell:

Terminal window
$env:VOXCPM2_PREFETCH = "0"
.\servers\tts\voxcpm2\install-voxcpm2.ps1

配置完成后,运行 bun run launch --voxcpm2 可将服务器与 TomoriBot 一同启动。默认端点为 http://127.0.0.1:8016。

运行 /providers,选择 + 添加新自定义端点,并配置语音端点:

  • 功能:Speech
  • API 兼容性:tts-clone
  • 端点 URL:http://127.0.0.1:8016
  • 语音源模式:Auto
  • 脚本标记:Plain
  • 支持 Instruct:Yes

保存连接之后,选中它并使用其模型下拉菜单添加语音模型。然后打开 /config > 模型 > 切换模型,选择 VoxCPM2 语音模型。

推荐使用 Auto,因为同一个服务器同时支持参考音频克隆与语音设计。你不需要为这两种模式分别运行独立的 VoxCPM2 进程。

用于需要模仿现有说话者音色的人格:

  1. 准备一段干净的参考音频片段,仅包含单人说话,几乎无背景音乐。上游将 5 到 30 秒视为实用区间。
  2. 打开 /config 下的模型 > TTS 参数与语音并上传音频片段。
  3. 若有参考音频片段的精确文本,请一并输入。VoxCPM2 会将其用于终极克隆,能够还原更多参考音频的节奏、情感与风格。
  4. 打开 /config 下的人格 > 语音,选择对应人格并分配保存好的语音样本。

如果未提供参考文本,VoxCPM2 仍会执行常规的参考音频语音克隆。

用于需要根据文本描述而非参考音频创建的人格:

  1. 打开 /config 下的人格 > 语音并选择“语音设计”。
  2. 选择对应人格。
  3. 输入自然语言描述,例如 Young adult woman, soft warm voice, relaxed pace, slightly playful delivery。

对于克隆语音,单次表达方式指令的优先级高于参考文本。

变量默认值用途
VOXCPM2_MODEL_IDopenbmb/VoxCPM2Hugging Face 模型 ID 或本地模型目录
VOXCPM2_DEVICEauto运行时设备:auto、cuda、cuda:N、cpu 或 mps
VOXCPM2_OPTIMIZE1在 CUDA 上使用 torch.compile 编译模型;需要 Triton,缺少时服务器会在启动时停止
VOXCPM2_LOAD_DENOISER0加载可选的上游降噪器;默认禁用以节省内存
VOXCPM2_CFG_VALUE2.0引导强度
VOXCPM2_INFERENCE_TIMESTEPS10流匹配推理步数;增加步数可提高质量但会牺牲速度
VOXCPM2_MAX_LEN4096最大生成长度
VOXCPM2_NORMALIZE0启用上游文本规范化
VOXCPM2_RETRY_BADCASE1启用上游针对异常生成结果的自动重试行为
VOXCPM2_RETRY_BADCASE_MAX_TIMES3最大自动重试次数
VOXCPM2_RETRY_BADCASE_RATIO_THRESHOLD6.0上游异常长度阈值
VOXCPM2_PREFETCH1仅限安装脚本:在安装过程中下载模型
VOXCPM2_PORT8016VoxCPM2 本地服务器端口
TOMORI_TTS_HOST127.0.0.1本地服务器绑定地址;参见网络访问

参考音频必须是解码后不超过 10 MB 的非空 WAV 容器,包装脚本会在写入临时文件之前对此进行验证。