<?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/zh-tw/tags/wavflow/</link>
        <description>Recent content in WavFlow on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Mon, 25 May 2026 08:00:37 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/wavflow/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>WavFlow：Meta 開源原始波形空間音訊生成專案</title>
        <link>https://knightli.com/zh-tw/2026/05/25/wavflow-raw-waveform-audio-generation/</link>
        <pubDate>Mon, 25 May 2026 08:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/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>
