Windows 11 5060ti部署体验VoxCPM2

发布于 2026年05月04日

VoxCPM2

VoxCPM2 是一个无需分词器的扩散自回归文本到语音(TTS)模型——拥有 20亿参数、支持 30种语言、输出 48kHz 音频,基于超过 200万小时 的多语言语音数据训练而成。

亮点

  • 🌍 30种语言多语种支持 —— 无需语言标签;直接输入任意支持语言的文本

  • 🎨 语音设计 —— 仅凭自然语言描述(性别、年龄、音调、情感、语速等)即可生成全新语音;无需参考音频

  • 🎛️ 可控克隆 —— 从短音频片段克隆任意声音,并可选提供风格引导以控制情感、语速和表达,同时保留音色

  • 🎙️ 终极克隆 —— 提供参考音频及其对应转录文本,实现音频延续式克隆;忠实复现每一个声音细节

  • 🔊 48kHz 录音室级音质输出 —— 接受16kHz参考音频;通过 AudioVAE V2 内置的超分辨率模块输出48kHz音频,无需外部升采样器

  • 🧠 上下文感知合成 —— 自动根据文本内容推断合适的韵律和表现力

  • 实时流式合成 —— 在 NVIDIA RTX 4090 上 RTF 低至约 0.3,使用 Nano-VLLM 加速后可达约 0.13

  • 📜 完全开源且可商用 —— Apache-2.0 许可证,允许免费用于商业用途

支持的语言(30种)

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

中文方言:四川话、粤语、吴语、东北话、河南话、陕西话、山东话、天津话、闽南话

VoxCPM2 · 模型库

🛠️ 准备工作

在开始之前,请确保你的电脑满足以下条件:

  1. NVIDIA 显卡驱动:请更新到最新版本(确保支持 CUDA 12.x)。NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA

  2. Git:如果未安装,请参照Win11系统安装WSL2(Linux子系统)、安装GIT、安装miniconda、安装Pytorch等 - 晓拂实践录安装。

  3. Python 3.10:推荐安装 Python 3.10 或 3.11(不要使用最新版 3.12+,可能会有兼容性问题)。安装时记得勾选 "Add Python to PATH"。如果已经安装了其他版本Python,就不要勾选Add Python to PATH。下载地址 https://mirrors.aliyun.com/python-release/windows/python-3.10.9-amd64.exe


🚀 极简部署步骤

第一步:安装 PyTorch (GPU 版本)

这是最关键的一步,必须安装支持 CUDA 的版本,否则只能用到 CPU,速度会非常慢。

  1. Win + R,输入 cmd 打开命令提示符(或者使用 PowerShell)。

  2. 执行以下命令:

#1、创建项目目录,进入项目目录
"D:\08pythonproject\VoxCPM2"
#2、创建虚拟环境
D:\08pythonproject\VoxCPM2>"D:\02soft\python310\python.exe" -m venv VoxCPM2-venv
#3、激活虚拟环境,后续操作都在虚拟环境中进行
D:\08pythonproject\VoxCPM2>VoxCPM2-venv\Scripts\activate
#下载模型
python.exe -m pip install --upgrade pip
pip install modelscope
modelscope download --model OpenBMB/VoxCPM2 --local_dir "D:\07modeles\TTS\OpenBMB\VoxCPM2"
#这个命令下载很慢
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
#可以使用下面这种方式下载安装
#可以将whl文件下载到本地通过pip install *.whl进行安装,[推荐使用这个方式]
访问https://mirrors.aliyun.com/pytorch-wheels/cu128/ 下载以下3个文件
torch-2.10.0+cu128-cp310-cp310-win_amd64.whl
torchaudio-2.10.0+cu128-cp310-cp310-win_amd64.whl
torchvision-0.25.0+cu128-cp310-cp310-win_amd64.whl
#我将这3个文件下载到了项目目录同级的torch目录中
#然后执行pip install 安装
pip install D:/08pythonproject/torch/torch-2.10.0+cu128-cp310-cp310-win_amd64.whl D:/08pythonproject/torch/torchaudio-2.10.0+cu128-cp310-cp310-win_amd64.whl D:/08pythonproject/torch/torchvision-0.25.0+cu128-cp310-cp310-win_amd64.whl

验证安装:
输入 python 进入交互模式,然后输入:
import torch; print(torch.cuda.is_available())
如果输出 True,说明显卡加速已就绪。输入 exit() 退出。

第二步:使用源码或者VoxCPM库

使用源码安装OpenBMB/VoxCPM: VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning

可以包含 WebUI 界面,直接在浏览器里操作。

源码:https://177857.xyz/upload/VoxCPM.zip

  1. 在 D 盘或桌面创建一个文件夹,例如 "D:\08pythonproject\VoxCPM2"。

  2. 进入该目录,克隆项目代码:

#开启科学上网
set http_proxy=127.0.0.1:12334
set https_proxy=127.0.0.1:12334
#set 命令设置的环境变量是临时的,只对当前打开的命令行窗口有效。
#这意味着:
#关闭即焚:一旦你关闭了这个 CMD 窗口,刚才设置的代理、Python 路径等所有变量都会立即消失。
#窗口隔离:如果你再打开一个新的 CMD 窗口,里面是没有这些变量的,需要重新设置。
#克隆源码
git clone https://github.com/OpenBMB/VoxCPM.git
cd VoxCPM
#代码克隆完成以后,关闭科学上网。关闭cmd界面,重新打开一个cmd界面,进入项目目录,激活虚拟环境。

安装项目依赖:

pip install -e .

第三步:启动 Web 界面

安装完成后,直接运行官方提供的 WebUI 脚本。

  1. 确保你仍在 VoxCPM 文件夹内。

  2. 修改app.py中最末尾模型路径为本地模型路径

    #原代码
    if __name__ == "__main__":
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument(
            "--model-id", type=str, default="openbmb/VoxCPM2",
            help="Local path or HuggingFace repo ID (default: openbmb/VoxCPM2)",
        )
        parser.add_argument("--port", type=int, default=8808, help="Server port")
        args = parser.parse_args()
        run_demo(model_id=args.model_id, server_port=args.port)
    #修改成如下
    if __name__ == "__main__":
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument(
            "--model-id", type=str, default=r"D:\07modeles\TTS\OpenBMB\VoxCPM2",
            help="Local path or HuggingFace repo ID (default: openbmb/VoxCPM2)",
        )
        parser.add_argument("--port", type=int, default=8808, help="Server port")
        args = parser.parse_args()
        run_demo(model_id=args.model_id, server_port=args.port)
    #即将app.py中所有的"openbmb/VoxCPM2" 使用 r"D:\07modeles\TTS\OpenBMB\VoxCPM2" 来替换掉
  3. 执行启动命令:

python app.py
  1. 自动打开浏览器
    终端会显示类似 Running on local URL: http://127.0.0.1:8808 的提示。
    此时,你的浏览器会自动打开(或手动访问该地址),你就可以看到 VoxCPM 的操作界面了。

使用VoxCPM库

安装voxcpm

pip install voxcpm

文本到语音

from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained(r"D:\07modeles\TTS\OpenBMB\VoxCPM2", load_denoiser=False)

wav = model.generate(
    text="VoxCPM2 brings multilingual support, creative voice design, and controllable voice cloning.",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("output.wav", wav, model.tts_model.sample_rate)

语音设计

将语音描述放在 text 开头的括号内,后接要合成的内容:

wav = model.generate(
    text="(A young woman, gentle and sweet voice)Hello, welcome to VoxCPM2!",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)

可控语音克隆

# Basic cloning
wav = model.generate(
    text="This is a cloned voice generated by VoxCPM2.",
    reference_wav_path="speaker.wav",
)
sf.write("clone.wav", wav, model.tts_model.sample_rate)

# Cloning with style control
wav = model.generate(
    text="(slightly faster, cheerful tone)This is a cloned voice with style control.",
    reference_wav_path="speaker.wav",
    cfg_value=2.0,
    inference_timesteps=10,
)
sf.write("controllable_clone.wav", wav, model.tts_model.sample_rate)

终极克隆

为获得最高保真度,请同时提供参考音频及其精确转录文本。为达到最高相似度,请将同一音频片段同时传入 reference_wav_pathprompt_wav_path

wav = model.generate(
    text="This is an ultimate cloning demonstration using VoxCPM2.",
    prompt_wav_path="speaker_reference.wav",
    prompt_text="The transcript of the reference audio.",
    reference_wav_path="speaker_reference.wav",
)
sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)

流式合成

import numpy as np

chunks = []
for chunk in model.generate_streaming(text="Streaming is easy with VoxCPM!"):
    chunks.append(chunk)
wav = np.concatenate(chunks)
sf.write("streaming.wav", wav, model.tts_model.sample_rate)



评论