WavFlow が波形空間内で直接オーディオを生成(GitHub リポジトリ)
本文の状態
日本語全文を表示中
詳細モードで約5分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
TLDR AI
WavFlow という技術が、従来の中間表現を経由せず、波形空間そのもので直接オーディオデータを生成する手法を実現しました。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
概要
WavFlow は、動画とテキストの入力から直接、生波形空間内で同期した高忠実度のオーディオを生成する新たなパラダイムを導入しました。これは潜在表現への圧縮を完全に迂回し、*waveform patchifying* と *amplitude lifting* を活用することで、生の音声データに対して直接的な*x*-予測に基づく安定したフローマッチングを実現します。
VGGSound (VT2A) および AudioCaps (T2A) ベンチマークでの評価結果では、WavFlow は既存の潜在表現ベースの手法と同等以上の性能を示しました。これは、エンドツーエンドの波形生成が従来のフレームワークと比べても、音響的な豊かさ、忠実度、同期性において決して劣らないことを証明するものです。
デモ
| 🌳 森林 (自然) forest.mp4 | 🐸 カエル (動物) frog.mp4 |
|---|---|
| 🥁 ドラム (音楽) drum.mp4 | 🛹 スケートボード (スポーツ) skateboard.mp4 |
24 以上のサンプルと並列比較ベンチマークについては、プロジェクトページ をご覧ください。
手法
インストール
git clone https://github.com/facebookresearch/WavFlow.git
cd WavFlow
bash scripts/setup.sh # creates conda env 'wavflow' and installs everything
conda activate wavflow手動セットアップ
conda create -n wavflow python=3.10 -y
conda activate wavflow
pip install -r requirements.txt
pip install -e . --no-deps
conda install -n wavflow -c conda-forge "ffmpeg<7" -y # for torio video decoding必要な外部重み(CLIP、Synchformer、空文字列の CFG エンベディング)は、初回実行時に自動的にダウンロードまたは計算され、
~/.cache/wavflow/にキャッシュされます。
推論
⚠️ 組織の方針上の制約により、現在、本番環境で訓練されたチェックポイントの公開はできません。完全なオープンソースデータで訓練した基盤モデルの開発を進めており、その間はご自身で訓練することも可能です。詳しくは トレーニングガイド をご覧ください。
訓練済みのチェックポイントが揃ったら、以下を実行してください。
bash scripts/launch/predict.sh [--gpu N] [--config PATH]デフォルトの構成ファイルは wavflow/configs/infer.yaml です。入力 CSV(data.csv_path)には、動画、テキスト、またはその両方を指定できます。
video_path,caption,video_exist,text_exist
/abs/path/sample1.mp4,a whistling rocket explodes,1,1 # video + text
/abs/path/sample2.mp4,birds chirping in a forest,1,1 # video + text
,a whistling rocket explodes,0,1 # text-only
/abs/path/sample3.mp4,,1,0 # video-only構成リファレンス
ランチャーオプション
| フラグ / 環境変数 | デフォルト値 | 説明 |
|---|---|---|
--gpu N *(または GPU=N)* | 0 | CUDA デバイスインデックス |
--config PATH *(または CONFIG_PATH=...)* | wavflow/configs/infer.yaml | 読み込む YAML 設定ファイル |
WAVFLOW_ENV | wavflow | 自動アクティベートする conda 環境名 |
追加の位置引数はすべて、python -m wavflow.infer へ転送されます。
infer.yaml の主要フィールド
| 項目 | 設定内容 |
|---|---|
data.csv_path | 入力 CSV(上記) |
model.name | medium_16k, medium_44k, large_16k, large_44k のいずれか(学習済みチェックポイントと一致させる必要がある) |
model.ckpt_path | checkpoint_*.pth(完全なチェックポイント)または ema_epoch_*.pth(EMA のみ) |
model.use_ema | 完全なチェックポイントから model_ema1 を読み込む場合は true、生モデルの重みを使用する場合は false (原文の技術表記: model) |
inference.duration_sec / target_sample_rate | 出力長さとサンプリングレート(モデルアーキテクチャと一致させる必要がある) |
inference.cfg, num_steps, noise_scale, noise_shift, prediction_type, seed | サンプリングハイパーパラメータ |
inference.batch_size | ODE バッチあたりの行数 |
inference.trim_to_duration | 出力を duration_sec にトリミングする |
output.output_dir | wav ファイルが書き込まれる場所 |
output.loudness_norm, loudness_target_lufs | オプションの pyloudnorm 後処理 |
CSV の意味
video_exist=0→ 学習済みの空の CLIP/Sync トークンを使用(動画デコードなし)
text_exist=0→ 学習済みの空の CLIP-text トークンを使用(キャプションは無視される)
オプションの id カラムがない場合、wav ファイル名は Path(video_path).stem から派生し、テキストのみの行については row_ にフォールバックします。
カンマを含むキャプションは引用符で囲む必要があります。
EMA の注意点
モデルのEMAテンソルは model_ema1 として保存され、各ステップで ema_decay = 0.9999 の係数を用いて更新されます。しかし、学習が数百〜数千ステップ程度に留まっている場合、この変数はまだランダム初期化された値を含んだままとなり、推論時にはノイズを生成してしまいます。
短時間の学習や過学習したモデルからサンプリングする際は、model.use_ema: false を設定するか、十分なステップ数後に保存された ema_epoch_*.pth ファイルを指定してください。
学習
特徴抽出およびトレーニング(シングルノード、マルチノード)については、TRAINING.md をご覧ください。
引用
@misc{zhou2026wavflowaudiogenerationwaveform,
title={WavFlow: Audio Generation in Waveform Space},
author={Feiyan Zhou and Luyuan Wang and Shoufa Chen and Zhe Wang and Zhiheng Liu and Yuren Cong and Xiaohui Zhang and Fanny Yang and Belinda Zeng},
year={2026},
eprint={2605.18749},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2605.18749},
}謝辞
WavFlow はオープンソースコミュニティの上に成り立っています。以下の皆様に心より感謝いたします:
- MMAudio — 多モーダル音声生成
- JiT — Just Image Transformer
- Synchformer — オーディオとビジュアルの同期
ライセンス
WavFlow の大部分は **CC-BY-NC 4.0** ライセンスの下で提供されています。プロジェクトの一部は、MIT、Apache 2.0、CC BY-NC 4.0、Stability AI コミュニティライセンスといった元のライセンス条項に従い、第三者のオープンソースプロジェクトから移植されています。各コンポーネントごとの詳細な内訳とライセンス全文については、`NOTICE.txt` をご確認ください。
原文を表示
Overview
WavFlow introduces a paradigm for generating synchronized, high-fidelity audio from video and text inputs directly in the raw waveform space, bypassing latent compression entirely. Through *waveform patchifying* and *amplitude lifting*, WavFlow enables stable flow matching on raw audio via direct *x*-prediction. Evaluation on the VGGSound (VT2A) and AudioCaps (T2A) benchmarks shows that WavFlow delivers performance on par with established latent-based methods, proving that end-to-end waveform generation can match traditional frameworks in acoustic richness, fidelity, and synchronization.
Demo
| 🌳 Forest *(natural)* forest.mp4 | 🐸 Frog *(animal)* frog.mp4 |
|---|---|
| 🥁 Drum *(music)* drum.mp4 | 🛹 Skateboard *(sport)* skateboard.mp4 |
See the Project Page for 24+ samples and side-by-side benchmark comparisons.
Method
Installation
git clone https://github.com/facebookresearch/WavFlow.git
cd WavFlow
bash scripts/setup.sh # creates conda env 'wavflow' and installs everything
conda activate wavflowManual setup
conda create -n wavflow python=3.10 -y
conda activate wavflow
pip install -r requirements.txt
pip install -e . --no-deps
conda install -n wavflow -c conda-forge "ffmpeg<7" -y # for torio video decodingAll required external weights (CLIP, Synchformer, the empty-string CFG embedding) are downloaded or computed automatically on first run and cached under ~/.cache/wavflow/.
Inference
⚠️ Due to organizational policy constraints, we are currently unable to release the production-trained checkpoints. We are working on a foundation checkpoint trained on fully open-source data; in the meantime you can train your own — see the training guide.
Once you have a trained checkpoint, run:
bash scripts/launch/predict.sh [--gpu N] [--config PATH]The default config is wavflow/configs/infer.yaml. The input CSV (data.csv_path) accepts video, text, or both:
video_path,caption,video_exist,text_exist
/abs/path/sample1.mp4,a whistling rocket explodes,1,1 # video + text
/abs/path/sample2.mp4,birds chirping in a forest,1,1 # video + text
,a whistling rocket explodes,0,1 # text-only
/abs/path/sample3.mp4,,1,0 # video-onlyConfiguration reference
Launcher options
| Flag / env | Default | Description |
|---|---|---|
--gpu N *(or GPU=N)* | 0 | CUDA device index |
--config PATH *(or CONFIG_PATH=...)* | wavflow/configs/infer.yaml | YAML config to load |
WAVFLOW_ENV | wavflow | conda env name to auto-activate |
Any extra positional argument is forwarded to python -m wavflow.infer.
Key fields in infer.yaml
| Field | What to set |
|---|---|
data.csv_path | the input CSV (above) |
model.name | one of medium_16k, medium_44k, large_16k, large_44k (must match the trained ckpt) |
model.ckpt_path | a checkpoint_*.pth (full ckpt) or ema_epoch_*.pth (EMA-only) |
model.use_ema | true to load model_ema1 from a full ckpt; false to use the live model weights |
inference.duration_sec / target_sample_rate | output length and SR (must match model arch) |
inference.cfg, num_steps, noise_scale, noise_shift, prediction_type, seed | sampling hyperparameters |
inference.batch_size | rows per ODE batch |
inference.trim_to_duration | trim output to duration_sec |
output.output_dir | where wavs are written |
output.loudness_norm, loudness_target_lufs | optional pyloudnorm post-processing |
CSV semantics
- video_exist=0 → uses learned empty CLIP/Sync tokens (no video decode)
- text_exist=0 → uses learned empty CLIP-text token (caption ignored)
- Optional id column; otherwise the wav file name is derived from Path(video_path).stem, falling back to row_<idx> for text-only rows
- Captions with commas must be quoted
EMA caveat
The EMA tensor stored as model_ema1 is updated with ema_decay = 0.9999 per step. After only a few hundred / thousand steps it still contains random-init values and produces noise during inference. Set model.use_ema: false (or pass an ema_epoch_*.pth saved after enough steps) when sampling from a short / overfit run.
Training
For feature extraction and training (single-node and multi-node), see TRAINING.md.
Citation
@misc{zhou2026wavflowaudiogenerationwaveform,
title={WavFlow: Audio Generation in Waveform Space},
author={Feiyan Zhou and Luyuan Wang and Shoufa Chen and Zhe Wang and Zhiheng Liu and Yuren Cong and Xiaohui Zhang and Fanny Yang and Belinda Zeng},
year={2026},
eprint={2605.18749},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2605.18749},
}Acknowledgements
WavFlow builds on the open-source community. We gratefully acknowledge:
- MMAudio — multimodal audio generation
- JiT — Just Image Transformer
- Synchformer — audio-visual synchronization
License
The majority of WavFlow is licensed under CC-BY-NC 4.0. Portions of the project are vendored from third-party open source projects under their original license terms (MIT, Apache 2.0, CC BY-NC 4.0, and Stability AI Community License). See NOTICE.txt for the full per-component breakdown and license texts.
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み