WavFlow:Meta の raw waveform space におけるオープンな音声生成プロジェクト

facebookresearch/WavFlow の位置づけ、手法、インストール、推論入口、訓練フロー、利用上の制限を整理する。WavFlow は latent compression を迂回し、raw waveform space で動画とテキストから同期した高忠実度音声を直接生成しようとする。

facebookresearch/WavFlow は、Meta AI が公開したマルチモーダル音声生成プロジェクトだ。論文タイトルは WavFlow: Audio Generation in Waveform Space である。

プロジェクト:https://github.com/facebookresearch/WavFlow

対象は音声合成でも、単純な音楽生成でもない。動画とテキスト条件から、同期した高忠実度の音声を生成することに焦点を当てている。さらに特徴的なのは、よくある latent compression の経路を使わず、raw waveform space でエンドツーエンドの音声生成を試みている点だ。

執筆時点で、GitHub ページでは約 55 star、3 fork が表示されている。コードは主に Python で、release は公開されていない。README も重要な注意点を明記している。組織上のポリシー制約により、production-trained checkpoints は現在公開できない。チームは完全にオープンソースのデータで訓練した foundation checkpoint に取り組んでおり、それまではユーザーが自分でモデルを訓練する必要がある。

WavFlow が解こうとしている問題

多くのマルチモーダル音声生成手法は、まず音声を latent 空間に圧縮し、その上で生成し、最後に波形へ戻す。この経路は効率的だが、圧縮の過程で細部が失われ、最終的な音の質感、同期性、高周波情報に影響が出る可能性がある。

WavFlow はこのステップを迂回し、原始波形空間で直接音声を生成しようとする。

README によると、WavFlow は waveform patchifying と amplitude lifting によって、raw audio 上で flow matching を安定して行えるようにし、直接の x-prediction を使う。平たく言えば、音を何らかの中間表現に圧縮してから生成するのではなく、音声波形そのものをモデルが扱いやすい patch に切り、振幅変換を行うことで、波形レベルで生成を学習する。

ここが最も注目すべき点だ。エンドツーエンドの波形生成が安定して動くなら、エンコーダー/デコーダーがもたらす情報ボトルネックを減らせる可能性がある。

対応する入力モード

README と訓練ガイドを見ると、WavFlow は三つの入力モードを想定している。

一つ目は VT2A、つまり video + text to audio だ。モデルに動画とテキスト説明を与え、画面と意味に同期した音声を生成させる。森、カエル、ドラム、スケートボードのような場面が例として挙げられている。

二つ目は T2A、つまり text to audio だ。テキスト説明だけがあり、動画入力はない。訓練時には CLIP text feature を使い、推論時には CSV で video_exist0 にできる。

三つ目は V2A、つまり video to audio だ。動画だけがあり、テキストはない。推論時には text_exist0 にでき、モデルは learned empty CLIP-text token を使う。

この設計は実用的だ。実データでは、すべてのサンプルに完全な動画、テキスト、音声アノテーションが揃っているとは限らない。WavFlow は video_existtext_exist のようなフィールドで欠損モダリティを明示し、訓練と推論の両方で異なる組み合わせを扱えるようにしている。

評価と位置づけ

README では、WavFlow が VGGSound の VT2A タスクと AudioCaps の T2A タスクで評価され、既存の latent-based 手法に匹敵する性能を示したと説明されている。

これは、すでに既存モデルを全面的に上回ったという意味ではない。端到端の raw waveform generation が、従来の latent フレームワークに必ずしも劣らないことを示している。少なくとも acoustic richness、fidelity、synchronization といった指標では、同じ水準に到達できる。

プロジェクトページには forest、frog、drum、skateboard などの demo もあり、24 個以上のサンプルと並列 benchmark 比較が掲載されている。音声生成モデルでは demo が重要だ。文字指標だけでは、音の質感、空間感、同期感を十分に説明できないからだ。

インストール

公式は自動インストールスクリプトを用意している。

1
2
3
4
git clone https://github.com/facebookresearch/WavFlow.git
cd WavFlow
bash scripts/setup.sh
conda activate wavflow

scripts/setup.shwavflow という conda 環境を作成し、必要な依存関係をインストールする。

手動で入れる場合は README の通り。

1
2
3
4
5
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

ここでの ffmpeg<7 は主に torio の動画デコード用だ。README では、CLIP、Synchformer、empty-string CFG embedding などの外部重みは初回実行時に自動でダウンロードまたは計算され、~/.cache/wavflow/ にキャッシュされるとも説明されている。

推論の実行

公式はまだ production-trained checkpoints を公開していないため、以下の推論入口は、すでに訓練済み checkpoint を持っている場合にのみ使える。

1
bash scripts/launch/predict.sh [--gpu N] [--config PATH]

デフォルト設定ファイルは次の通り。

1
wavflow/configs/infer.yaml

入力 CSV は data.csv_path で指定し、動画、テキスト、またはその両方を受け付ける。

1
2
3
4
5
video_path,caption,video_exist,text_exist
/abs/path/sample1.mp4,a whistling rocket explodes,1,1
/abs/path/sample2.mp4,birds chirping in a forest,1,1
,a whistling rocket explodes,0,1
/abs/path/sample3.mp4,,1,0

video_exist=0 は動画をデコードせず、learned empty CLIP/Sync tokens を使うことを意味する。text_exist=0 は caption を無視し、learned empty CLIP-text token を使うことを意味する。カンマを含む caption は引用符で囲む必要がある。

よく使う起動パラメータは次の通り。

1
2
3
--gpu N
--config PATH
WAVFLOW_ENV

重要な設定項目には、model.namemodel.ckpt_pathmodel.use_emainference.duration_sectarget_sample_rateinference.cfgnum_stepsnoise_scalenoise_shiftprediction_typeseed、出力ディレクトリがある。

EMA の落とし穴

README は model.use_ema について特に注意している。

WavFlow の checkpoint には model_ema1 が含まれることがあり、これは ema_decay = 0.9999 で更新される。訓練が数百または数千 step しか進んでいない場合、EMA にはまだランダム初期化値が多く残り、推論時にノイズを出すことがある。

そのため、短い訓練、少数サンプルへの過学習、または smoke test を行う場合は、次の設定を検討したい。

1
model.use_ema: false

または十分に訓練した後に保存された ema_epoch_*.pth を使う。この細部は実用的だ。知らないと、モデルが壊れていると誤解しやすいが、実際には EMA がまだ安定していないだけかもしれない。

訓練フロー

公式の TRAINING.md は訓練を二段階に分けている。

第一段階は特徴抽出だ。

T2A は CLIP text feature のみを抽出する。VT2A は CLIP frame feature、Synchformer feature、CLIP text feature を抽出する。例の CSV はおおよそ次の形になる。

1
2
id,audio_path,video_path,caption
sample1,/abs/or/relative/wav/sample1.wav,/abs/or/relative/video/sample1.mp4,a whistling rocket explodes

動画の長さは extraction.duration_sec 以上である必要があり、デフォルトは 8 秒だ。それより短いクリップはスキップされる。特徴抽出は次のように実行できる。

1
2
bash scripts/launch/extract_t2a.sh
bash scripts/launch/extract_vt2a.sh

より多くの GPU やカスタム設定を使う場合:

1
2
NPROC_PER_NODE=4 bash scripts/launch/extract_vt2a.sh
CONFIG_PATH=path/to/your_extract.yaml bash scripts/launch/extract_t2a.sh

第二段階は訓練だ。

単一ノードのマルチ GPU では次を使う。

1
bash scripts/launch/train_single_node.sh

マルチノード訓練では NNODESNODE_RANKMASTER_ADDRMASTER_PORTNPROC_PER_NODE を設定する必要がある。訓練出力には checkpoint_latest.pthcheckpoint_epoch_*.pthema_epoch_*.pth、生成された音声サンプル、training.log が含まれる。

訓練は自動 resume に対応する。実験ディレクトリに checkpoint_latest.pth があれば、そこから続行される。

誰が注目すべきか

WavFlow は、完成済みの効果音ツールを探している一般ユーザーよりも、研究者やエンジニアリングチーム向けだ。

特に次のような人に向いている。

  • video-to-audio、text-to-audio、multimodal audio generation を研究している人。
  • raw waveform generation と latent-based audio generation を比較したいチーム。
  • 自前の音声生成モデルを訓練する必要があり、データと GPU リソースを用意できるユーザー。
  • 動画画面と音の同期を強く求める応用チーム。
  • flow matching が原始音声波形上で成立するかを調べたい人。

単に Web ツールで prompt を入力して効果音をすぐ作りたいなら、現時点の WavFlow は最も手軽な選択ではない。公開 production checkpoint はまだなく、デプロイ経路も研究コードに近い。

使うときの注意点

第一に、「ダウンロードしてすぐ使える」音声生成モデルとして扱うべきではない。公式は現時点で production-trained checkpoints を公開していないため、実際に推論するには自分で訓練するか、今後のオープンデータ checkpoint を待つ必要がある。

第二に、ライセンスは寛容な商用利用を前提にしたものではない。README によると、WavFlow の大部分は CC-BY-NC 4.0 で、vendored components の一部は MIT、Apache 2.0、CC BY-NC 4.0、Stability AI Community License など元のライセンスを維持している。商用利用前には LICENSENOTICE.txt を慎重に読む必要がある。

第三に、訓練データが非常に重要だ。WavFlow の強みは、音声、動画、テキストが揃った整合データに依存している。データ品質が低い、caption が不正確、音と映像が同期していない、といった場合、安定した音声生成を学習するのは難しい。

第四に、raw waveform generation は latent bottleneck を減らせる一方で、訓練と推論コストを上げる可能性もある。実際のプロジェクトでは、音質、速度、VRAM、サンプルレート、出力時間の間で調整が必要になる。

まとめ

WavFlow の価値は、一つの明確な問いを出している点にある。マルチモーダル音声生成は、必ず最初に latent 空間へ圧縮しなければならないのか。

WavFlow は waveform patchifying、amplitude lifting、flow matching によって、raw waveform space で同期した高忠実度音声を直接生成しようとする。評価結果は、この経路が少なくとも成熟した latent-based 手法と同じ水準に立てる可能性を示している。

ただし現段階では、これは開箱即用の製品モデルというより、研究と訓練のためのフレームワークだ。公開 production checkpoint がないこと、ライセンスが非商用寄りであること、訓練に音声・動画・テキストの整合データが必要なことから、研究、再現、追加訓練に向いている。次世代の video-to-audio や text-to-audio モデルに関心があるなら、WavFlow はじっくり見る価値がある。

参考資料

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。