一、概述

仅需0.5B参数,VoxCPM就能用你的声音说任何话:这款开源语音模型在音色克隆和情感表达上突破极限,实时生成媲美真人的播报、演讲甚至方言,错误率低至行业新标杆。

在语音合成技术快速发展的背景下,面壁智能与清华大学深圳国际研究生院人机语音交互实验室(THUHCSI)近日联合发布了一款新型语音生成模型 ——VoxCPM。这款模型以0.5B 的参数尺寸,致力于为用户提供高质量、自然的语音合成体验。

VoxCPM 的推出标志着高拟真语音生成领域的又一里程碑。该模型在自然度、音色相似度及韵律表现力等关键指标上,均达到了行业领先水平。通过零样本声音克隆技术,VoxCPM 能够以极少的数据,生成用户独特的声音,从而实现个性化的语音合成。这一技术进步为语音生成的应用场景带来了更多可能性,尤其是在个性化语音助手、游戏角色配音等领域。

据悉,VoxCPM 已在 GitHub、Hugging Face 等平台开源,并为开发者提供了线上体验平台,便于用户探索和使用其强大功能。模型在权威语音合成评测榜单 Seed-TTS-EVAL 中表现出色,尤其是在词错误率和音色相似度方面取得了极低的错误率,展示了其卓越的推理效率。在一张 NVIDIA RTX4090显卡上,VoxCPM 的实时因子(RTF)达到约0.17,满足了高质量实时交互的需求。

VoxCPM 不仅在技术性能上有所突破,其在音质和情感表达方面也表现出色。模型能够根据文本内容智能选择合适的声音、腔调和韵律,模拟出与真人无异的听感。无论是气象播报、英雄演讲,还是方言主播,VoxCPM 都能精准再现,提供沉浸式的听觉体验。

此外,VoxCPM 的技术架构基于最新的扩散自回归语音生成模型,融合了层次化语言建模和局部扩散生成的连续表征,显著提升了生成语音的表现力与自然度。该模型的核心架构包括多个模块,协同工作,实现了高效的 “语义 - 声学” 生成过程。

Github:

Hugging Face:

ModelScope:

PlayGround体验:

音频样例页面地址:

二、音频样例

打开音频样例页面地址:

这里列举几个

宝儿姐

叫啥子叫,之前不是说了吗,有姐罩着你呢。那个啥子,小师叔,打狗还要看主人呢,你要是再继续的话,我就是你的对手

方言

风车车,你不要跑,我来抓你来咯!你莫怪老子心狠手辣哈,哪个叫你娃儿不听话?抓住你,我就要把你做成耗儿肉!

粤语

九流十家無一能,八仙過海七星聚,六親不認五更雞,四海為家三餐飽,兩手空空一場夢。

数学符号标识

沸羊羊,如果 △ABC∽△DEF,且AB:DE=1:2,那我问你,△ABC的面积与△DEF的面积之比是多少?

这里比较亮眼的是,VoxCPM居然支持方言因为一般的语言生成模型,比如Index-TTS2,只支持普通话即使原始的音频是方言,输出的也依然是普通话。

还有一点,VoxCPM也支持比较复杂的数学符号

三、实战音频输出

代码生成

访问github地址:https://github.com/OpenBMB/VoxCPM/

下载代码到本地,安装模块

pip install voxcpm

下载模型VoxCPM-0.5B

pip install modelscope

modelscope download --model OpenBMB/VoxCPM-0.5B

下载ZipEnhancer和SenseVoice Small。在网络演示中,我们使用ZipEnhancer增强语音提示,使用SenseVoice Small增强语音提示ASR。

modelscope download --model iic/speech_zipenhancer_ans_multiloss_16k_base

modelscope download --model iic/SenseVoiceSmall

基本用法

import soundfile as sf
import numpy as np
from voxcpm import VoxCPM model = VoxCPM.from_pretrained("openbmb/VoxCPM-0.5B") # Non-streaming
wav = model.generate(
text="VoxCPM is an innovative end-to-end TTS model from ModelBest, designed to generate highly expressive speech.",
prompt_wav_path=None, # optional: path to a prompt speech for voice cloning
prompt_text=None, # optional: reference text
cfg_value=2.0, # LM guidance on LocDiT, higher for better adherence to the prompt, but maybe worse
inference_timesteps=10, # LocDiT inference timesteps, higher for better result, lower for fast speed
normalize=True, # enable external TN tool
denoise=True, # enable external Denoise tool
retry_badcase=True, # enable retrying mode for some bad cases (unstoppable)
retry_badcase_max_times=3, # maximum retrying times
retry_badcase_ratio_threshold=6.0, # maximum length restriction for bad case detection (simple but effective), it could be adjusted for slow pace speech
) sf.write("output.wav", wav, 16000)
print("saved: output.wav") # Streaming
chunks = []
for chunk in model.generate_streaming(
text = "Streaming text to speech is easy with VoxCPM!",
# supports same args as above
):
chunks.append(chunk)
wav = np.concatenate(chunks) sf.write("output_streaming.wav", wav, 16000)
print("saved: output_streaming.wav")

例如,要生成宝儿姐的语音

先下载音频文件,地址:https://openbmb.github.io/VoxCPM-demopage/audio/dialect_zeroshot/prompt_wav/baoerjie.wav

修改代码

import soundfile as sf
import numpy as np
from voxcpm import VoxCPM model = VoxCPM.from_pretrained("openbmb/VoxCPM-0.5B") # Non-streaming
wav = model.generate(
text="叫啥子叫,之前不是说了吗,有姐罩着你呢。那个啥子,小师叔,打狗还要看主人呢,你要是再继续的话,我就是你的对手",
# optional: path to a prompt speech for voice cloning
prompt_wav_path="baoerjie.wav",
prompt_text="他们总说我瓜,其实我一点儿都不瓜,大多时候我都机智的一笔。", # optional: reference text
# LM guidance on LocDiT, higher for better adherence to the prompt, but maybe worse
cfg_value=2.0,
# LocDiT inference timesteps, higher for better result, lower for fast speed
inference_timesteps=10,
normalize=True, # enable external TN tool
denoise=True, # enable external Denoise tool
# enable retrying mode for some bad cases (unstoppable)
retry_badcase=True,
retry_badcase_max_times=3, # maximum retrying times
# maximum length restriction for bad case detection (simple but effective), it could be adjusted for slow pace speech
retry_badcase_ratio_threshold=6.0,
) sf.write("output.wav", wav, 16000)
print("saved: output.wav") # Streaming
chunks = []
for chunk in model.generate_streaming(
text="Streaming text to speech is easy with VoxCPM!",
# supports same args as above
):
chunks.append(chunk)
wav = np.concatenate(chunks) sf.write("output_streaming.wav", wav, 16000)
print("saved: output_streaming.wav")

执行代码,等待5分钟,会生成文件output.wav,试听一下,就是上面的实例效果。

CLI方式生成

本地新建文件1.txt,内容如下:

他们总说我瓜,其实我一点儿都不瓜,大多时候我都机智的一笔。

执行命令:

voxcpm --model-path "D:\file\lmstudio\model\OpenBMB\VoxCPM-0___5B" --text "叫啥子叫,之前不是说了吗,有姐罩着你呢。那个啥子,小师叔,打狗还要看主人呢,你要是再继续的话,我就是你的对手" --prompt-audio baoerjie.wav --prompt-file "1.txt" --output out.wav --denoise

等待5分钟,会生成文件out.wav,试听一下,就是上面的实例效果。

web页面生成

可以通过运行python app.py启动UI界面,它允许您执行语音克隆和语音创建。

执行命令:

python app.py

输出:

 Running on device: cuda
funasr version: 1.2.7.
Downloading Model to directory: C:\Users\xiao\.cache\modelscope\hub\iic/SenseVoiceSmall
2025-09-23 17:05:28,488 - modelscope - WARNING - Using branch: master as version is unstable, use with caution
WARNING:root:trust_remote_code: False
* Running on local URL: http://localhost:7860

打开网页地址:http://localhost:7860

效果如下:

上传音频文件,修改Prompt Text和Target Text,点击Generate Speech,生成语音

等待5分钟,会生成文件out.wav,试听一下,就是上面的实例效果。

VoxCPM:新一代高拟真语音生成模型的更多相关文章

  1. 生成模型(Generative)和判别模型(Discriminative)

    生成模型(Generative)和判别模型(Discriminative) 引言    最近看文章<A survey of appearance models in visual object ...

  2. tflearn kears GAN官方demo代码——本质上GAN是先训练判别模型让你能够识别噪声,然后生成模型基于噪声生成数据,目标是让判别模型出错。GAN的过程就是训练这个生成模型参数!!!

    GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 ...

  3. AAAI 2020论文分享:通过识别和翻译交互打造更优的语音翻译模型

    2月初,AAAI 2020在美国纽约拉开了帷幕.本届大会百度共有28篇论文被收录.本文将对其中的机器翻译领域入选论文<Synchronous Speech Recognition and Spe ...

  4. 生成模型(Generative Model)与判别模型(Discriminative Model)

    摘要: 1.定义 2.常见算法 3.特性 4.优缺点 内容: 1.定义 1.1 生成模型: 在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下.它给观测值和标 ...

  5. 深度|OpenAI 首批研究成果聚焦无监督学习,生成模型如何高效的理解世界(附论文)

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载,原文. 选自 Open AI 作者:ANDREJ KARPATHY, PIETER ABBEEL, GREG BRO ...

  6. 生成模型(generative model)与判别模型(discriminative model)的区别

    监督学习可以分为生成方法与判别方法,所学到的模型可以分为生成模型与判别模型. 生成模型 生成模型由数据学习联合概率分布\(P(X,Y)\),然后求出条件概率分布\(P(Y|X)\)作为预测的模型,即生 ...

  7. GAN︱生成模型学习笔记(运行机制、NLP结合难点、应用案例、相关Paper)

    我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...

  8. 快速开发 HTML5 WebGL 的 3D 斜面拖拽生成模型

    前言 3D 场景中的面不只有水平面这一个,空间是由无数个面组成的,所以我们有可能会在任意一个面上放置物体,而空间中的面如何确定呢?我们知道,空间中的面可以由一个点和一条法线组成.这个 Demo 左侧为 ...

  9. ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文

    https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...

  10. 生成模型(Generative Model)和 判别模型(Discriminative Model)

    引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...

随机推荐

  1. volta初步使用

    前言 volta是用于管理nodejs和包管理器的工具. 类似的工具还有很多,比如nvm.n等. 除了node之外 volta还可以控制包管理工具,比如 yarn.cnpm.npm. 当然如果你使用的 ...

  2. windows failed to start

    现象 今天启动我的window11的时候,突然进不去系统了 解决办法 找一个winPe的u盘,进入. 然后找到Windows引导修复工具,这个是在winPe里都会内置的工具(比如老毛桃.大白菜.微PE ...

  3. 如何造成OOM各种情况

    简介 堆内存, 栈内存, native 内存 参考链接 https://www.cnblogs.com/guoyu1/p/13789077.html 简单记几个吧 频繁申请内存 Heap内存溢出, 一 ...

  4. MCP快速入门—快速构建自己的服务器

    引言 随着大语言模型(LLM)技术的快速发展,如何扩展其能力边界成为开发者关注的重点.MCP(Model Capability Protocol)作为一种协议标准,允许开发者构建自定义服务器来增强LL ...

  5. Dots生命周期和Mono生命周期对照

  6. zephyr学习: 1. windows环境下搭建 zephyr工作空间

    参考文章:1.Getting Started Guide - Zephyr Project Documentation 2.Zephyr RTOS -- 开发环境的搭建 (基于 Windows)_ze ...

  7. ARC 175 C 题解

    我们考虑经典套路,假设前 \(i - 1\) 个数已经被确定. 设 \(f_k(x)\) 表示 \(a_k = x\) 时 \(\sum_{i = k + 1}^n | \ a_i - a_{i - ...

  8. 轮廓线 dp

    轮廓线 dp 是一种和插头 dp 基本相同的东西,所以先看一下轮廓线 dp. Tiling Dominoes 与状压 dp 不同的是,轮廓线 dp 是通过逐格转移来进行 dp 的.我们用三维 \(f_ ...

  9. P6638 「JYLOI Round 1」常规

    容易把问题转换为求前缀和.设 \(p\) 为当前最大的下标使得 \(a_p \leq x\),则容易得到答案: \[\text{ans} = \sum_{i = 1}^{p}\left\lfloor\ ...

  10. 制作Linux系统SD启动卡

    一.sd卡连接虚拟机 在Xilinx开发板移植Linux操作系统,先制作一张启动卡,使用读卡器插入电脑,此处将sd卡从虚主机转移到虚拟机: 使用以下命令查看多了哪个设备,就是sd卡: df -h 这里 ...