VoxCPM_语音生成媲美真人_声音复刻超级像

VoxCPM Logo

概述

VoxCPM 是一个端到端的扩散自回归语音生成模型,旨在从输入文本直接合成高质量的连续语音表征,并且支持流式地实时输出生成音频片段。

与当前 CosyVoice、FireRedTTS 及 SparkTTS 等普遍遵循将连续的语音信号转换为离散的声学词元(Speech token)序列进行处理的方法不同,VoxCPM 采用融合公众号 选择层次化语言建模的端到端 TTS 方案。该模型以 MiniCPM 4.0 文本基座模型为基础进行初始化,通过引入有限标量约束构建结构化的中间表征,巧妙地实现了 " 语义 - 声学 " 生成过程的隐式解耦。此设计不仅显著提升了语音生成的表现力与自然度,也有效改善了生成的稳定性。

模型核心架构由局部音频编码模块 (LocEnc Module)、文本 - 语义语言模型 (Text-Semantic LM, TSLM)、残差声学语言模型 (Residual Acoustic LM, RALM)、局部扩散生成模块 (LocDiT Module) 四大模块组成,整个模型以端到端方式联合训练,通过最终 VAE 语音连续特征上的 Diffusion loss 优化上述所有模块。FSQ 层建立的 " 半离散 " 的中间表示作为一种结构性约束,隐式地引导 TSLM 和 RALM 分别专注于语义主干建模和声学细节细化,从而形成高效的分工协作。此外,系统还包含一个局部扩散生成,用于将原始音频波形压缩至低帧率的隐空间,并将生成的语音表征重构回波形信号。

图片

亮点

  • 上下文感知、富有表现力的语音生成 —— VoxCPM 能够理解文本并推断、生成合适的韵律,使语音具有出色的表现力和自然的流畅度。它能够根据内容自发调整说话风格,生成高度契合的声音表达,其训练数据规模高达 180 万小时的双语语料库。

  • 逼真语音克隆 —— VoxCPM 只需一小段参考音频,就能实现高精度的零样本语音克隆,不仅能捕捉说话者的音色,还能细致还原其口音、情感语气、节奏与语速,生成自然、真实的声音副本。

  • 高效合成 —— VoxCPM 支持流式合成,在消费级 NVIDIA RTX 4090 GPU 上的实时因子(RTF)低至 0.17,可满足实时应用场景的需求。

SOTA 级性能表现

相似度、词错误率是评判语音模型的关键指标。VoxCPM 在 Seed-TTS-EVAL 等权威语音合成评测榜单中,均达到了业界 SOTA 水平。

在词错率方面,VoxCPM 在 Seed-TTS-EVAL 正常样本下达到极低水平,在困难样本上也取得不错表现。在音色相似度方面,尤其在 Zero-shot 音色克隆任务中,VoxCPM 同样展示出顶尖性能。

图片

同时,VoxCPM 保持了卓越的推理效率,VoxCPM-0.5B 在一张 NVIDIA RTX 4090 显卡上实现了 RTF(Real-Time Factor)≈ 0.17 的高效推理速度,且理论支持流式输出,为不同场景下高性能语音合成应用的普及提供了基础。

RTF = 模型生成音频所花费的时间 / 生成音频的实际时长。数字越小,生成速度和效率越快。「RTF < 0.2」属于极好的推理水平,完全满足甚至远超高质量实时交互的需求,且成本及负载低。

超拟人的听感 难辨真假的克隆音

得益于文本基座的强大能力和大规模的语音训练数据,VoxCPM 无论是文本理解和表达、极少样本的声音复刻、甚至公式及符号音频输出等能力,都展现了出色效果。实际听感上,VoxCPM 生成的语音在情绪、音色、口音、停顿、韵律等方面表现与真人无异。

VoxCPM 可根据对文本内容的超强理解,自主选择合适的声音、腔调、韵律风格生成音频,带来 " 声 " 临其境的听觉体验。比如,化身为天气预报员字正腔圆的播报、甚至还可以模拟方言主播:

近日,陕西多地遭遇高温天气。7 月 15 日,全省有 8 个气象站最高气温突破历史极值,多地发布高温红色预警。16 日,多地高温持续,西安、宝鸡、咸阳、渭南、汉中、安康等地达 40℃ 以上。陕西省气象台预计,从 17 日开始,部分区域将出现分散性降雨,持续多日的高温晴热有望得到缓解。

我感觉说河南话不影响我的颜值啊,我自己听不出来,恁感觉呢,恁感觉说河南话影响我的颜值吗?恁感觉呢姐妹们。

快速开始

pip install voxcpm

模型下载(可选)

from huggingface_hub import snapshot_downloadsnapshot_download("openbmb/VoxCPM-0.5B",local_files_only=local_files_only)

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

from modelscope import snapshot_downloadsnapshot_download('iic/speech_zipenhancer_ans_multiloss_16k_base')snapshot_download('iic/SenseVoiceSmall')

基本用法

import soundfile as sffrom voxcpm import VoxCPMmodel = VoxCPM.from_pretrained("openbmb/VoxCPM-0.5B")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")

CLI 用法

# 1) Direct synthesis (single text)voxcpm --text "VoxCPM is an innovative end-to-end TTS model from ModelBest, designed to generate highly expressive speech." --output out.wav# 2) Voice cloning (reference audio + transcript)voxcpm --text "VoxCPM is an innovative end-to-end TTS model from ModelBest, designed to generate highly expressive speech." \   --prompt-audio path/to/voice.wav \   --prompt-text "reference transcript" \   --output out.wav \   --denoise# 3) Batch processing (one text per line)voxcpm --input examples/input.txt --output-dir outs# (optional) Batch + cloningvoxcpm --input examples/input.txt --output-dir outs \   --prompt-audio path/to/voice.wav \   --prompt-text "reference transcript" \   --denoise# 4) Inference parameters (quality/speed)voxcpm --text "..." --output out.wav \   --cfg-value 2.0 --inference-timesteps 10 --normalize# 5) Model loading# Prefer local pathvoxcpm --text "..." --output out.wav --model-path /path/to/VoxCPM_model_dir# Or from Hugging Face (auto download/cache)voxcpm --text "..." --output out.wav \   --hf-model-id openbmb/VoxCPM-0.5B --cache-dir ~/.cache/huggingface --local-files-only# 6) Denoiser controlvoxcpm --text "..." --output out.wav \   --no-denoiser --zipenhancer-path iic/speech_zipenhancer_ans_multiloss_16k_base# 7) Helpvoxcpm --help python -m voxcpm.cli --help

开始 Web Demo

python app.py

目前发现一个小问题:条件不变,多次生成同一内容,音色差异变化较大,一致性不太稳定

更多技术细节,请关注即将发布的 VoxCPM 技术报告。欢迎大家下载试用。