<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>WavFlow on KnightLi的博客</title>
        <link>https://knightli.com/tags/wavflow/</link>
        <description>Recent content in WavFlow on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Mon, 25 May 2026 08:00:37 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/wavflow/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>WavFlow：Meta 开源原始波形空间音频生成项目</title>
        <link>https://knightli.com/2026/05/25/wavflow-raw-waveform-audio-generation/</link>
        <pubDate>Mon, 25 May 2026 08:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/wavflow-raw-waveform-audio-generation/</guid>
        <description>&lt;p&gt;&lt;code&gt;facebookresearch/WavFlow&lt;/code&gt; 是 Meta AI 发布的多模态音频生成项目，论文标题是 &lt;code&gt;WavFlow: Audio Generation in Waveform Space&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它关注的不是语音合成，也不是单纯的音乐生成，而是从视频和文本条件生成同步、高保真的音频。更特别的是，它不走常见的 latent compression 路线，而是尝试直接在 raw waveform space 里做端到端音频生成。&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub 页面显示仓库约有 55 star、3 fork，代码主要是 Python，项目没有发布 release。仓库 README 也明确提醒：由于组织政策限制，目前不能发布 production-trained checkpoints，团队正在训练基于完全开源数据的 foundation checkpoint。在那之前，用户需要自己训练模型。&lt;/p&gt;
&lt;h2 id=&#34;wavflow-想解决什么问题&#34;&gt;WavFlow 想解决什么问题
&lt;/h2&gt;&lt;p&gt;很多多模态音频生成方法会先把音频压缩到 latent 空间，再在 latent 上做生成，最后还原成波形。这条路线效率高，但也会带来一个问题：压缩过程可能损失细节，最终音频的质感、同步性和高频信息会受影响。&lt;/p&gt;
&lt;p&gt;WavFlow 的思路是绕开这一步，直接在原始波形空间生成音频。&lt;/p&gt;
&lt;p&gt;README 里提到，它通过 waveform patchifying 和 amplitude lifting，让 flow matching 可以稳定地作用在 raw audio 上，并使用直接的 &lt;code&gt;x&lt;/code&gt;-prediction。直白一点说，它不是先把声音压成某种中间表示再生成，而是把音频波形本身切成适合模型处理的 patch，并做幅度变换，让模型能在波形层面学习生成。&lt;/p&gt;
&lt;p&gt;这也是它最值得关注的地方：如果端到端波形生成能稳定工作，就有机会减少编码器/解码器带来的信息瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些输入模式&#34;&gt;支持哪些输入模式
&lt;/h2&gt;&lt;p&gt;从 README 和训练说明看，WavFlow 面向三类输入。&lt;/p&gt;
&lt;p&gt;第一类是 VT2A，也就是 video + text to audio。给模型视频和文本描述，让它生成与画面和语义同步的音频，比如森林、青蛙、鼓声、滑板等场景。&lt;/p&gt;
&lt;p&gt;第二类是 T2A，也就是 text to audio。只有文本描述，没有视频输入。训练时使用 CLIP text feature，推理时 CSV 里可以把 &lt;code&gt;video_exist&lt;/code&gt; 设为 &lt;code&gt;0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第三类是 V2A，也就是 video to audio。只有视频，没有文本。推理时可以把 &lt;code&gt;text_exist&lt;/code&gt; 设为 &lt;code&gt;0&lt;/code&gt;，模型会使用 learned empty CLIP-text token。&lt;/p&gt;
&lt;p&gt;这种设计比较实用。真实数据里不一定每条样本都有完整的视频、文本和音频标注，WavFlow 用 &lt;code&gt;video_exist&lt;/code&gt; 和 &lt;code&gt;text_exist&lt;/code&gt; 这类字段把缺失模态显式表达出来，训练和推理都能处理不同组合。&lt;/p&gt;
&lt;h2 id=&#34;评测和效果定位&#34;&gt;评测和效果定位
&lt;/h2&gt;&lt;p&gt;README 提到，WavFlow 在 VGGSound 的 VT2A 任务和 AudioCaps 的 T2A 任务上进行评测，表现可以和已有 latent-based 方法相当。&lt;/p&gt;
&lt;p&gt;这句话的意义不是说它已经全面碾压现有模型，而是证明一件事：端到端 raw waveform generation 并不一定输给传统 latent 框架。至少在 acoustic richness、fidelity 和 synchronization 这些指标上，它可以达到同一档水平。&lt;/p&gt;
&lt;p&gt;项目页还提供了 forest、frog、drum、skateboard 等 demo，并在项目主页放了 24 个以上样例和并排 benchmark 对比。对音频生成模型来说，demo 很重要，因为文字指标很难完整描述声音的质感、空间感和同步感。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;官方提供了自动安装脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/facebookresearch/WavFlow.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; WavFlow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/setup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate wavflow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;scripts/setup.sh&lt;/code&gt; 会创建名为 &lt;code&gt;wavflow&lt;/code&gt; 的 conda 环境，并安装所需依赖。&lt;/p&gt;
&lt;p&gt;如果想手动安装，可以按 README 里的方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda create -n wavflow &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.10 -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate wavflow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e . --no-deps
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda install -n wavflow -c conda-forge &lt;span class=&#34;s2&#34;&gt;&amp;#34;ffmpeg&amp;lt;7&amp;#34;&lt;/span&gt; -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;ffmpeg&amp;lt;7&lt;/code&gt; 主要是为了 torio 视频解码。README 还说明，CLIP、Synchformer、empty-string CFG embedding 等外部权重会在首次运行时自动下载或计算，并缓存到 &lt;code&gt;~/.cache/wavflow/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;推理怎么跑&#34;&gt;推理怎么跑
&lt;/h2&gt;&lt;p&gt;由于官方暂时没有发布 production-trained checkpoints，下面的推理入口只适用于你已经有训练好的 checkpoint 的情况。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/predict.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--gpu N&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--config PATH&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认配置文件是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wavflow/configs/infer.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输入 CSV 由 &lt;code&gt;data.csv_path&lt;/code&gt; 指定，支持视频、文本，或者两者同时存在：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csv&#34; data-lang=&#34;csv&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;video_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;caption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;video_exist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;text_exist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;/abs/path/sample1.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;/abs/path/sample2.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;birds chirping in a forest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;/abs/path/sample3.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;video_exist=0&lt;/code&gt; 表示不解码视频，使用 learned empty CLIP/Sync tokens；&lt;code&gt;text_exist=0&lt;/code&gt; 表示忽略 caption，使用 learned empty CLIP-text token。如果有逗号的 caption，需要加引号。&lt;/p&gt;
&lt;p&gt;常用启动参数包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--gpu N
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--config PATH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;WAVFLOW_ENV
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关键配置项包括 &lt;code&gt;model.name&lt;/code&gt;、&lt;code&gt;model.ckpt_path&lt;/code&gt;、&lt;code&gt;model.use_ema&lt;/code&gt;、&lt;code&gt;inference.duration_sec&lt;/code&gt;、&lt;code&gt;target_sample_rate&lt;/code&gt;、&lt;code&gt;inference.cfg&lt;/code&gt;、&lt;code&gt;num_steps&lt;/code&gt;、&lt;code&gt;noise_scale&lt;/code&gt;、&lt;code&gt;noise_shift&lt;/code&gt;、&lt;code&gt;prediction_type&lt;/code&gt;、&lt;code&gt;seed&lt;/code&gt; 和输出目录。&lt;/p&gt;
&lt;h2 id=&#34;ema-的一个坑&#34;&gt;EMA 的一个坑
&lt;/h2&gt;&lt;p&gt;README 特别提醒了 &lt;code&gt;model.use_ema&lt;/code&gt; 的问题。&lt;/p&gt;
&lt;p&gt;WavFlow 的 checkpoint 里可能有 &lt;code&gt;model_ema1&lt;/code&gt;，它按 &lt;code&gt;ema_decay = 0.9999&lt;/code&gt; 更新。如果训练只跑了几百或几千步，EMA 里可能还包含大量随机初始化值，推理时会产生噪声。&lt;/p&gt;
&lt;p&gt;所以，如果你只是做短跑、过拟合小样本或 smoke test，采样时应该考虑：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model.use_ema&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者使用训练足够久之后保存的 &lt;code&gt;ema_epoch_*.pth&lt;/code&gt;。这个细节很实用，否则很容易误以为模型坏了，其实只是 EMA 还没稳定。&lt;/p&gt;
&lt;h2 id=&#34;训练流程&#34;&gt;训练流程
&lt;/h2&gt;&lt;p&gt;官方的 &lt;code&gt;TRAINING.md&lt;/code&gt; 把训练分成两步。&lt;/p&gt;
&lt;p&gt;第一步是特征提取。&lt;/p&gt;
&lt;p&gt;T2A 只提取 CLIP text feature；VT2A 会提取 CLIP frame feature、Synchformer feature 和 CLIP text feature。示例 CSV 大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csv&#34; data-lang=&#34;csv&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;audio_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;video_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;caption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;sample1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/abs/or/relative/wav/sample1.wav&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/abs/or/relative/video/sample1.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;视频长度需要大于等于 &lt;code&gt;extraction.duration_sec&lt;/code&gt;，默认是 8 秒；更短的片段会被跳过。特征提取可以这样运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/extract_t2a.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/extract_vt2a.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要用更多 GPU 或自定义配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NPROC_PER_NODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; bash scripts/launch/extract_vt2a.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CONFIG_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;path/to/your_extract.yaml bash scripts/launch/extract_t2a.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第二步是训练。&lt;/p&gt;
&lt;p&gt;单机多卡可以用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/train_single_node.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;多节点训练需要设置 &lt;code&gt;NNODES&lt;/code&gt;、&lt;code&gt;NODE_RANK&lt;/code&gt;、&lt;code&gt;MASTER_ADDR&lt;/code&gt;、&lt;code&gt;MASTER_PORT&lt;/code&gt; 和 &lt;code&gt;NPROC_PER_NODE&lt;/code&gt;。训练输出包括 &lt;code&gt;checkpoint_latest.pth&lt;/code&gt;、&lt;code&gt;checkpoint_epoch_*.pth&lt;/code&gt;、&lt;code&gt;ema_epoch_*.pth&lt;/code&gt;、生成音频样本和 &lt;code&gt;training.log&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;训练可以自动 resume：如果实验目录里存在 &lt;code&gt;checkpoint_latest.pth&lt;/code&gt;，训练会从那里继续。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;WavFlow 更适合研究者和工程团队关注，而不是普通用户直接拿来做成品音效。&lt;/p&gt;
&lt;p&gt;适合关注它的人包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究 video-to-audio、text-to-audio 或 multimodal audio generation 的人。&lt;/li&gt;
&lt;li&gt;想比较 raw waveform generation 和 latent-based audio generation 的团队。&lt;/li&gt;
&lt;li&gt;需要训练自有音频生成模型，并能准备数据和 GPU 资源的用户。&lt;/li&gt;
&lt;li&gt;对视频画面和声音同步要求高的应用团队。&lt;/li&gt;
&lt;li&gt;想研究 flow matching 在原始音频波形上是否可行的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想找一个网页工具，输入 prompt 直接生成音效，WavFlow 现在不是最省事的选择。它暂时没有公开 production checkpoint，部署路径也更接近研究代码。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不能把它当成“下载即用”的音频生成模型。官方目前没有发布生产训练 checkpoint，真正推理前需要自己训练，或者等待后续开放数据 checkpoint。&lt;/p&gt;
&lt;p&gt;第二，许可证不是宽松商用默认选项。README 说明，WavFlow 大部分代码采用 CC-BY-NC 4.0，部分 vendored 组件沿用 MIT、Apache 2.0、CC BY-NC 4.0 和 Stability AI Community License 等原始许可证。商业使用前要仔细读 &lt;code&gt;LICENSE&lt;/code&gt; 和 &lt;code&gt;NOTICE.txt&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第三，训练数据很关键。WavFlow 的优势建立在音频、视频和文本对齐数据之上。如果数据质量差、caption 不准确、音画不同步，模型很难学到稳定的声音生成。&lt;/p&gt;
&lt;p&gt;第四，raw waveform generation 虽然减少 latent bottleneck，但也可能带来更高的训练和推理成本。实际项目里仍然要在音质、速度、显存、采样率和输出时长之间取舍。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;WavFlow 的价值在于提出了一个清晰问题：多模态音频生成一定要先压缩到 latent 空间吗？&lt;/p&gt;
&lt;p&gt;它用 waveform patchifying、amplitude lifting 和 flow matching，尝试直接在 raw waveform space 里生成同步高保真音频。评测结果说明，这条路线至少有机会和成熟的 latent-based 方法站在同一水平线上。&lt;/p&gt;
&lt;p&gt;不过，现阶段它更像一套研究和训练框架，而不是开箱即用的产品模型。没有公开生产 checkpoint、许可证偏非商用、训练需要音视频文本对齐数据，这些都决定了它更适合研究、复现和二次训练。如果你关注下一代 video-to-audio 或 text-to-audio 模型，WavFlow 值得认真看一眼。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;facebookresearch/WavFlow：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow Project Page：&lt;a class=&#34;link&#34; href=&#34;https://facebookresearch.github.io/WavFlow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://facebookresearch.github.io/WavFlow/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow arXiv：&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2605.18749&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://arxiv.org/abs/2605.18749&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow Training Guide：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow/blob/main/TRAINING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow/blob/main/TRAINING.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
