← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

OpenBMB VoxCPM


好的,这是您要求的英文文章的中文翻译,已按照规范保留格式、术语和代码块。

OpenBMB VoxCPM

VoxCPM2: 无需分词器的多语言语音生成、创意声音设计与逼真克隆系统 English | 中文

👋 加入我们的社区进行讨论和获取支持!飞书 | Discord

VoxCPM 是一个无需分词器(Tokenizer-Free)的文本转语音(Text-to-Speech)系统,它通过端到端的扩散自回归(diffusion autoregressive)架构直接生成连续的语音表征,绕过了离散分词(discrete tokenization)过程,从而实现了高度自然且富有表现力的语音合成。

VoxCPM2 是最新的主要版本——一个拥有 20 亿(2B)参数的模型,在超过 200 万小时的多语言语音数据上训练而成,现已支持 30 种语言声音设计可控语音克隆 以及 48kHz 录音室级音频输出。该模型基于 MiniCPM-4 骨干网络构建。

亮点

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

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

新闻

目录

🚀 快速开始

安装

pip install voxcpm

要求: Python ≥ 3.10 (<3.13), PyTorch ≥ 2.5.0, CUDA ≥ 12.0。详情请参阅快速开始文档。

Python API

🗣️ 文本转语音

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,
)

sf.write("demo.wav", wav, model.tts_model.sample_rate)
print("saved: demo.wav")

如果您希望先从 ModelScope 下载,可以使用:

pip install modelscope
from modelscope import snapshot_download
snapshot_download("OpenBMB/VoxCPM2", local_dir='./pretrained_models/VoxCPM2') # 指定保存模型的本地目录

from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained(
    "./pretrained_models/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,
)

sf.write("demo.wav", wav, model.tts_model.sample_rate)

🎨 声音设计

根据自然语言描述创建声音——无需参考音频。格式:将描述放在文本开头的括号内(例如 "(你的声音描述)要合成的文本."):

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)

🎛️ 可控语音克隆

上传参考音频。模型会克隆音色,您仍然可以使用控制指令来调整速度、情感或风格。

wav = model.generate(
    text="This is a cloned voice generated by VoxCPM2.",
    reference_wav_path="path/to/voice.wav",
)

sf.write("clone.wav", wav, model.tts_model.sample_rate)

wav = model.generate(
    text="(slightly faster, cheerful tone)This is a cloned voice with style control.",
    reference_wav_path="path/to/voice.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="path/to/voice.wav",
    prompt_text="The transcript of the reference audio.",
    reference_wav_path="path/to/voice.wav",  # 可选,用于更好的相似度
)

sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)

🔄 流式 API

import numpy as np

chunks = []
for chunk in model.generate_streaming(
    text="Streaming text to speech
📖 阅读原文 →