☰
Amphion 中的 Vevo2:基于统一韵律学习的语音与歌声可控生成框架(零样本 TTS/SVS/VC 实战指南)
2026/10/2 2:14:32 网站建设 项目流程
  • 音频
  • 语音
  • 媒体生成
  • 深度学习

【免费下载链接】Amphion

Amphion (/æmˈfaɪən/) is a toolkit for Audio, Music, and Speech Generation. Its purpose is to support reproducible research and help junior researchers and engineers get started in the field of audio, music, and speech generation research and development.

项目地址:https://gitcode.com/GitHub_Trending/am/Amphion
点击查看免费下载

导读

Vevo2 是 Amphion 开源音频生成工具包中集成的一套统一且可控的语音(Speech)与歌声(Singing Voice)生成框架,其核心创新在于通过**统一韵律学习(Unified Prosody Learning)**打通语音与歌声两条任务线。本指南基于 models/svc/vevo2/README.md 及其配套推理源码,系统介绍 Vevo2 支持的零样本 TTS、文本转歌声、歌声合成、音色/风格可控的 VC/SVC、语音与歌声编辑、旋律控制等任务,并给出可直接运行的推理环境搭建步骤、脚本用法与关键参数说明。读完本文,你将掌握如何在本仓库中一键拉起 Vevo2 的预训练模型完成各类生成/转换任务,并能从源码层理解其"Prosody Tokenizer + Content-Style Tokenizer + AR 模型 + Flow-matching Transformer + Vocoder"的完整生成链路。

一、Vevo2 能做什么:六类生成任务一览

根据 models/svc/vevo2/README.md 的定义,Vevo2 是一个统一且可控的语音/歌声生成框架,它通过统一韵律学习将可控语音生成与歌声生成桥接在一起,支持以下任务:

  1. 零样本 TTS、文本转歌声(Text-to-Singing)与歌声合成(SVS)——无需额外训练即可模仿参考说话人/歌手的发音风格与音色;
  2. 风格保持的语音/歌声转换(VC/SVC)——保留源内容与韵律,仅替换音色;
  3. 风格转换的语音/歌声转换(VC/SVC)——同时改变音色与表达风格;
  4. 语音/歌声编辑(Editing)——对已有人声的局部文本进行改写重合成,其余部分保持不变;
  5. 歌声风格转换(Singing Style Conversion)——例如把气声唱法(breathy)转为颤音唱法(vibrato);
  6. 哼唱转歌声(Humming-to-Singing)与乐器旋律转歌声(Instrument-to-Singing)——用哼唱或钢琴等乐器的旋律来控制歌声的音高走向。

这些任务的差异在仓库推理脚本 models/svc/vevo2/infer_vevo2_ar.py 中体现得非常直接:它们都是对同一个Vevo2InferencePipeline.inference_ar_and_fm()入口以不同的"参考音频/韵律音频/文本"组合进行调用,只是开关use_prosody_code、use_pitch_shift等控制项不同,这正是"统一框架"设计思想的落地体现。

二、系统架构:从波形到可交换的离散 Token

Vevo2 的生成链路可以概括为"离散化 → 自回归预测 → 声学建模 → 声码器合成"四级流水线,其组成单元与它们在推理时的协作关系可以从 models/svc/vevo2/vevo2_utils.py 中的Vevo2InferencePipeline类(第 215 行起)得到印证。

2.1 Prosody Tokenizer(韵律/旋律 Tokenizer)

  • 作用:把语音/歌声波形转换为粗粒度韵律 Token。从音乐角度看,这些 Token 可以理解为旋律轮廓(melody contour);
  • 实现:单一码本(single codebook)VQ-VAE,词表大小512;
  • 帧率:6.25 Hz,即码率56.25 bps;
  • 训练数据与权重:Emilia-101k 与 SingNet-7k,存放在 HuggingFace 仓库RMSnow/Vevo2的tokenizer/prosody_fvq512_6.25hz目录下。

在源码中,韵律 Token 的提取走的是extract_coco_codec(..., coco_codec_type="style", ...)分支(vevo2_utils.py),输入是24 维 chromagram(色度特征),由get_chromagram()使用chroma_stft计算(vevo2_utils.py)。也就是说,韵律 Token 本质上是"旋律"的离散量化表达,不依赖具体音色。

2.2 Content-Style Tokenizer(内容-风格 Tokenizer)

  • 作用:把波形转换为细粒度内容-风格 Token;
  • 实现:单一码本 VQ-VAE,词表大小16384;
  • 帧率:12.5 Hz,即码率175 bps;
  • 训练数据与权重:同样来自 Emilia-101k 与 SingNet-7k,权重位于tokenizer/contentstyle_fvq16384_12.5hz目录。

在源码中,内容-风格 Token 由extract_coco_codec(..., coco_codec_type="content_style", ...)分支提取(vevo2_utils.py),其输入是Whisper(medium 模型)embed_audio 特征与 24 维 chromagram 的拼接(分别对应extract_whisper_features()与get_chromagram())。Whisper 特征负责内容(说什么),chromagram 负责风格/旋律(怎么说),两者共同量化成内容-风格 Token。值得注意的是 vevo2_utils.py 中加载的 Whisper 是medium版本(1024 维),且帧长为 30 秒上限。

2.3 AR 模型(自回归 Token 预测)

  • 作用:以文本 Token(以及可选的韵律 Token)为条件,自回归地预测内容-风格 Token;
  • 实现:基于Qwen2.5-0.5B的大语言模型(LLM),在 Emilia-101k 与 SingNet-7k 上做过后训练(post-trained),实现了跨语音/歌声的统一韵律学习;
  • 权重:contentstyle_modeling/posttrained目录。

源码层面的证据:build_ar_model()通过AutoModelForCausalLM.from_pretrained(ckpt_path, trust_remote_code=True)直接加载 Qwen 因果语言模型(vevo2_utils.py),若环境支持且 CUDA 可用则自动启用flash_attention_2注意力实现。Prompt 构造逻辑在 models/svc/vevo2/qwen_utils.py 中:gen_chat_prompt()按 Qwen 的 ChatML 模板(<|im_start|>/<|im_end|>)组织 system/user 消息,gen_chat_response()则把韵律 ID 与内容-风格 ID 编码为<|prosody_X|>、<|content_style_X|>形式的特殊 Token 序列。

2.4 Flow-matching Transformer(声学模型)

  • 作用:从内容-风格 Token 预测mel 频谱;
  • 实现:Flow-matching Transformer,约 350M 参数;
  • 权重:acoustic_modeling/fm_emilia101k_singnet7k_repa目录。

源码中对应build_fmt_model()(vevo2_utils.py)与code2mel()(vevo2_utils.py):推理时将"音色参考的内容-风格 Token + 待合成内容-风格 Token"拼接后经cond_emb编码作为扩散条件,再把音色参考音频的 mel 频谱作为 prompt,调用fmt_model.reverse_diffusion(..., n_timesteps=flow_matching_steps)反扩散出目标 mel。默认flow_matching_steps=32。

2.5 Vocoder(声码器)

  • 作用:从 mel 频谱还原音频波形;
  • 实现:基于 Vocos 的声码器,约 250M 参数;
  • 权重:vocoder目录。

源码中build_vocoder_model()直接构造Vocos模型(vevo2_utils.py),mel2audio()完成 mel 到波形的转换(vevo2_utils.py)。

2.6 训练数据

  • Emilia-101k:约 10.1 万小时的语音数据;
  • SingNet-7k:约 7000 小时的内部歌声数据,使用 SingNet 流水线预处理。

三、快速开始(仅推理)

3.1 克隆仓库与环境搭建

Vevo2 的推理不依赖额外训练步骤,克隆仓库后按以下步骤配置环境:

git clone https://github.com/open-mmlab/Amphion.git cd Amphion

确认处于Amphion目录后,推荐使用 conda 创建 Python 3.10 环境并安装依赖:

conda create -n vevo2 python=3.10 conda activate vevo2 pip install -r models/svc/vevo2/requirements.txt

models/svc/vevo2/requirements.txt 中直接声明的关键依赖包括:praat-parselmouth(基频相关处理)、torchcrepe(CREPE 基频估计)、openai-whisper(内容特征提取)。注意:这只是 Vevo2 推理所需的追加依赖,transformers、torch、torchaudio、librosa、accelerate、safetensors、huggingface_hub、torchvision等基础依赖需按 Amphion 主仓库的整体安装说明(见 env.sh)先行就绪。

3.2 运行推理脚本

Vevo2 提供两个推理入口,对应两种模型组合:

# FM 模型单独使用(风格保持的 VC/SVC) python -m models.svc.vevo2.infer_vevo2_fm # AR + FM 联合使用(TTS、SVS、风格转换 VC/SVC、编辑、旋律控制等) python -m models.svc.vevo2.infer_vevo2_ar

首次运行会自动从 HuggingFace(RMSnow/Vevo2)下载全部预训练权重到本地目录./ckpts/Vevo2(对应 infer_vevo2_ar.py 中snapshot_download(..., local_dir="./ckpts/Vevo2", resume_download=True)的逻辑),随后进入推理。生成的音频默认保存在models/svc/vevo2/output/*.wav(脚本会先os.makedirs(output_dir, exist_ok=True)创建该目录,见 infer_vevo2_ar.py)。

设备选择逻辑:若检测到 CUDA 则自动使用 GPU,否则回退到 CPU(infer_vevo2_ar.py)。需要说明的是,Vevo2 的完整链路包含 0.5B 的 LLM、350M 的声学模型等,在 CPU 上运行仅作为可用性兜底,实际推理强烈建议使用 GPU。另外,源码检测到非 CUDA 环境时不会启用 Flash Attention(vevo2_utils.py)。

四、AR 推理脚本的任务拆解(含参考音频与文案)

models/svc/vevo2/infer_vevo2_ar.py 的if __name__ == "__main__":块内置了五组演示任务,可直接复现。仓库在 models/svc/vevosing/wav 目录下提供了adele.wav、breathy.wav、humming.wav、jaychou.wav、piano.wav、taiyizhenren.wav、vibrato.wav等示例参考音频(歌声、气声、颤音、哼唱、钢琴等),可以直接使用;而arabic_male.wav路径指向 models/vc/vevo/wav(当前仓库中该目录为空),运行前需要你自行准备一段阿拉伯语男声参考音频,并相应修改ref_wav_path。

4.1 零样本 TTS 与文本转歌声(vevo2_tts)

核心参数:

参数含义
tgt_text目标合成文本
ref_wav_path风格参考音频(提供韵律/表达风格)
ref_text风格参考音频对应的文本转写
timbre_ref_wav_path音色参考音频(提供音色);不传时默认与ref_wav_path相同
output_path输出 wav 路径

调用时use_prosody_code=False,即不注入外部韵律 Token,由 AR 模型自行按参考风格生成自然韵律。脚本演示了三种组合:

  • 风格参考 = 音色参考:用arabic_male.wav生成zstts.wav,实现最基础的零样本 TTS;
  • 风格参考 ≠ 音色参考(解耦):用arabic_male.wav提供风格、jaychou.wav提供音色,生成zstts_disentangled.wav,体现"风格与音色可分离控制";
  • 风格参考是歌声:以jaychou.wav(含中文歌词转写jaychou_text)为风格参考、taiyizhenren.wav为音色参考,将一段中文独白文本合成为歌声zstts_singing.wav——这正是"文本转歌声(Text-to-Singing)"的体现。

4.2 零样本语音/歌声编辑(vevo2_editing)

vevo2_editing( tgt_text="Never mind, you'll find anyone like me. You wish nothing but.", raw_wav_path=adele_path, raw_text=adele_text, output_path=os.path.join(output_dir, "editing_adele.wav"), )

编辑任务的做法是:以原音频自身的韵律 Token(prosody_wav_path=raw_wav_path)作为韵律条件,同时以原音频作为风格与音色参考,仅把文本替换为改写后的目标文本。由于韵律 Token 与音色参考都来自原音频,合出来的声音能在尽量保留原有人声的旋律走向与音色的前提下,只修改歌词内容(use_prosody_code=True)。脚本还演示了对jaychou.wav中文歌词的局部改写(editing_jaychou.wav)。

4.3 歌声风格转换(vevo2_singing_style_conversion)

vevo2_singing_style_conversion( raw_wav_path=breathy_path, # 气声唱法原声 raw_text=breathy_text, style_ref_wav_path=vibrato_path, # 颤音唱法风格参考 style_ref_text=vibrato_text, output_path=os.path.join(output_dir, "ssc_breathy2vibrato.wav"), )

该任务通过use_prosody_code=True与use_pitch_shift=True组合实现:源歌声提供内容与音色(timbre_ref_wav_path=raw_wav_path),风格参考歌声提供新的韵律/旋律 Token。其中use_pitch_shift是关键的音高对齐机制——源码get_shifted_steps()(vevo2_utils.py)会分别提取源音频与音色参考的基频(F0),计算两者中位数音高差(以半音为单位,12 * log2(f0_ref/f0_src)),再对 chromagram/Whisper 提取过程施加pitch_shift平移,使源歌声的旋律适配参考音色的音域。这样"气声"就能被转成"颤音"的唱法。

4.4 歌声旋律控制(vevo2_melody_control)

# 用哼唱控制旋律 vevo2_melody_control( tgt_text="你是我的小呀小苹果,怎么爱,不嫌多", tgt_melody_wav_path=humming_path, # 哼唱 ... ) # 用钢琴控制旋律 vevo2_melody_control( tgt_text="你是我的小呀小苹果,怎么爱,不嫌多", tgt_melody_wav_path=piano_path, # 钢琴 ... )

旋律控制任务把tgt_melody_wav_path(哼唱或钢琴演奏)作为prosody_wav_path传入:先提取该音频的韵律 Token(即旋律轮廓),再由 AR 模型依据"文本 + 旋律 Token + 风格/音色参考"合成歌声,从而让任意文本"唱出"指定的旋律。这即对应 README 所列的Humming-to-Singing 与 Instrument-to-Singing能力。两个演示用例分别输出melody_humming.wav与melody_piano.wav。

五、FM-only 模式:轻量级风格保持 VC/SVC

models/svc/vevo2/infer_vevo2_fm.py 提供了不加载 AR 模型的轻量推理入口,仅使用 Content-Style Tokenizer + Flow-matching Transformer + Vocoder,用于风格保持的语音/歌声转换(保留源内容与韵律,只换音色):

vevo2_fm( content_wav_path="./models/svc/vevosing/wav/jaychou.wav", reference_wav_path="./models/svc/vevosing/wav/adele.wav", output_path=os.path.join(output_dir, "svc.wav"), )

其核心函数签名(infer_vevo2_fm.py):

def vevo2_fm(content_wav_path, reference_wav_path, output_path, shifted_src=True): gen_audio = inference_pipeline.inference_fm( src_wav_path=content_wav_path, timbre_ref_wav_path=reference_wav_path, use_pitch_shift=shifted_src, flow_matching_steps=32, )
  • content_wav_path:内容来源(说什么/唱什么);
  • reference_wav_path:音色参考;
  • shifted_src=True(默认):启用音高平移对齐,使源内容适配参考音色音域,逻辑同上文的get_shifted_steps();
  • flow_matching_steps=32:反扩散步数,可在速度与质量之间权衡调整。

由于该模式不经过 LLM,其内存占用与推理耗时显著低于 AR+FM 全链路,适合只需"换音色"的批量转换场景。

六、推理流水线的核心调用链

统一理解 Vevo2 两种推理模式,可以看 models/svc/vevo2/vevo2_utils.py 中Vevo2InferencePipeline提供的两个高层入口:

  • inference_fm()(第 512 行起):加载源音频 → 提取内容-风格 Token(extract_coco_codec)→ 以音色参考的 Token 为 prompt、其 mel 为条件,code2mel()反扩散得到 mel →mel2audio()声码器合成波形;
  • inference_ar_and_fm()(第 803 行起):拼接风格参考文本与目标文本构造 LLM Prompt(get_llm_prompt_text)→ 按需注入韵律 Token(get_llm_prompt_prosody)与内容-风格前缀(get_llm_prompt_contentstyle)→ AR 模型以top_k=25, top_p=0.8, temperature=1.0, max_new_tokens=500采样生成内容-风格 Token 序列(默认采样参数,均可通过函数参数覆盖)→parse_llm_generated_ids用正则提取<|content_style_X|>ID → 后续走与 FM 相同的code2mel+mel2audio链路。

音频输出前还会做RMS 归一化:save_audio()以目标响度target_db=-25.0 dB对波形做增益调整后写入 24 kHz 采样率的 wav 文件(vevo2_utils.py)。

七、相关资源与引用

  • Vevo2 论文:arXiv 2508.16332;模型权重与演示页可分别通过 HuggingFace 仓库RMSnow/Vevo2与项目网页获取(详见 models/svc/vevo2/README.md 顶部的徽章链接);
  • 推理全流程代码:models/svc/vevo2/vevo2_utils.py、models/svc/vevo2/qwen_utils.py;
  • 任务入口脚本:models/svc/vevo2/infer_vevo2_ar.py、models/svc/vevo2/infer_vevo2_fm.py;
  • 依赖清单:models/svc/vevo2/requirements.txt;
  • 示例参考音频:models/svc/vevosing/wav;
  • 相关 Tokenizer 训练配置可参考 egs/codec/coco 下的contentstyle_fvq16384_12.5hz.json与prosody_fvq512_6.25hz.json;
  • 底层声学模型实现:models/svc/flow_matching_transformer/fmt_model.py;Token 量化实现可参考 models/codec/coco/rep_coco_model.py;Vocoder 实现见 models/codec/amphion_codec/vocos.py。

如果 Vevo2 对你的研究工作有帮助,请按 models/svc/vevo2/README.md 结尾提供的 BibTeX 条目引用 Vevo2 论文;若同时使用了 Vevo2 预训练模型或 Amphion 的训练配方,也请一并引用 Amphion 系列论文(Amphion v0.2 概述与 SLT 2024 的 Amphion 论文)。

  • 音频
  • 语音
  • 媒体生成
  • 深度学习

【免费下载链接】Amphion

Amphion (/æmˈfaɪən/) is a toolkit for Audio, Music, and Speech Generation. Its purpose is to support reproducible research and help junior researchers and engineers get started in the field of audio, music, and speech generation research and development.

项目地址:https://gitcode.com/GitHub_Trending/am/Amphion
点击查看免费下载

相关推荐

上一篇:深度解锁联想刃7000K BIOS:完全掌控硬件性能优化的技术解密
下一篇:终极指南:如何用Video2X免费让老旧视频重获新生,提升至4K超高清画质

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询