Closed6

テキスト・動画から音声・音楽を生成する「AudioX」を試す

kun432kun432

GitHubレポジトリ

https://github.com/ZeyueT/AudioX

🎧 AudioX: Anything-to-Audio 生成のためのDiffusion Transformer

これは "AudioX: Diffusion Transformer for Anything-to-Audio Generation" の公式リポジトリです。

📺 デモ動画

(訳注: GitHubのREADMEを参照)

✨ 概要

オーディオおよび音楽生成は多くのアプリケーションにおいて重要な課題として浮上していますが、既存の手法には重大な制約があります。それらはモダリティ間で統一的な能力を持たずに個別に機能し、高品質なマルチモーダル学習データが不足しており、多様な入力を効果的に統合するのが困難です。本研究では、Anything-to-Audioおよび音楽生成のための統一的なDiffusion TransformerモデルであるAudioXを提案します。従来のドメイン特化型モデルとは異なり、AudioXは高品質な一般オーディオおよび音楽の生成が可能であり、柔軟な自然言語制御やテキスト、動画、画像、音楽、音声といった様々なモダリティのシームレスな処理が可能です。本モデルの主要な革新点は、モダリティを超えて入力をマスクし、マスクされた入力から学習を行うマルチモーダルマスキング訓練戦略にあります。これにより、頑健で統一されたクロスモーダル表現の獲得が可能になります。データ不足への対応として、VGGSoundデータセットに基づく19万件のオーディオキャプションを含むvggsound-capsと、V2Mデータセット由来の600万件の音楽キャプションを含むV2M-capsという2つの包括的なデータセットを整備しました。広範な実験の結果、AudioXは最先端の専門モデルに匹敵またはそれを上回る性能を示し、多様な入力モダリティおよび生成タスクへの高い汎用性を統一的なアーキテクチャで実現することが確認されました。

✨ ティーザー


referred from https://github.com/ZeyueT/AudioX
(a) AudioXの概要図。様々なタスクにおける能力を示しています。(b) 複数のベンチマークにおける各手法の性能比較レーダーチャート。AudioXは多様なオーディオおよび音楽生成タスクにおいて、優れたInception Score(IS)を示しています。

✨ 手法


referred from https://github.com/ZeyueT/AudioX
AudioXフレームワークの概要

ライセンス

CC-BY-NC に従ってください。

論文はalphaXivのまとめを参照

https://www.alphaxiv.org/ja/overview/2503.10522

kun432kun432

Ubuntu-22.04(RTX4090・CUDA-12.4)で試す。

レポジトリクローン

git clone https://github.com/ZeyueT/AudioX AudioX-work && cd AudioX-work

uvでPython仮想環境を作成。なお、試してみた限りだと、Python-3.11 / 3.12では動かず。READMEで記載のあるPython-3.8で実施。

uv venv -p 3.8
uv pip install pop
source .venv/bin/activate

パッケージインストール

pip install git+https://github.com/ZeyueT/AudioX.git

あと自分はインストール済みだったのだけど、以下も必要みたい。

sudo apt install ffmpeg libsndfile

モデルを modelディレクトリにダウンロード

mkdir -p model
wget https://huggingface.co/HKUSTAudio/AudioX/resolve/main/model.ckpt -O model/model.ckpt
wget https://huggingface.co/HKUSTAudio/AudioX/resolve/main/config.json -O model/config.json

GradioのWebUIが用意されているので起動。デフォルトだと127.0.0.1でしかLISTENせず、自分の場合はLAN内のリモートサーバになるので、GRADIO_SERVER_NAME=0.0.0.0を付与している。あと初回起動時はおそらくstable-audio-toolsのモデルもダウンロードされていると思われるので少し時間がかかる。

GRADIO_SERVER_NAME=0.0.0.0 python run_gradio.py --model-config model/config.json

なお、このまま使うと、推論時にコンソールに以下の出力が出るので、

出力
No module named 'flash_attn'
flash_attn not installed, disabling Flash Attention

FlashAttentionはインストールしておいてもいいかも(以前はsetup.pyに記載されてたみたいだけど今は削除されてる、多分インストール時に時間がかかるせいだと思う)

pip install flash-attn --no-build-isolation

起動してブラウザで7860番ポートにアクセスするとこんな感じ。

基本的にHuggingFace Spaceのデモと同じ(なので試すだけならそっちのほうがお手軽)で、できることはREADMEにある以下

🎯 プロンプト構成例

タスク video_path text_prompt audio_path
Text-to-Audio (T2A) None "Typing on a keyboard" None
Text-to-Music (T2M) None "A music with piano and violin" None
Video-to-Audio (V2A) "video_path.mp4" "Generate general audio for the video" None
Video-to-Music (V2M) "video_path.mp4" "Generate music for the video" None
TV-to-Audio (TV2A) "video_path.mp4" "Ocean waves crashing with people laughing" None
TV-to-Music (TV2M) "video_path.mp4" "Generate music with piano instrument" None

それぞれのサンプルがGradio内に用意されているのでそれを試すと良い

kun432kun432

HuggingFace上のデモで試せるのであまり意味がないかもだが、一応一通り試してみる。

Text-to-Audio

テキストから環境音や効果音を生成

プロンプト
Typing on a keyboard

生成されたもの

https://audio.com/kun432/audio/audiox-sample-1

プロンプト
rain and thunder

https://audio.com/kun432/audio/audiox-sample-2

Text-to-Music

テキストから楽曲を作成

プロンプト
new york style  punk rock

https://audio.com/kun432/audio/audiox-sample-3

プロンプト
8bit game music

https://audio.com/kun432/audio/audiox-sample-4

Video-to-Audio / Video-to-Music

(無音の)動画から、環境音や効果音(Audio)、または 音楽(Music)を生成する。出力は音声データ単体とその音声データをミックスした動画になる。

入力する動画を用意するのがちょっと面倒なので、サンプルの動画を1つ使って、V2A/V2Mをそれぞれ試してみる。使用するのは以下。

https://github.com/ZeyueT/AudioX/blob/main/example/V2A_sample-1.mp4


参考: 上記をGIFアニメ化したもの

サンプルで用意されているプロンプトは以下のようなシンプルなものだったが、ここを工夫するとTV-to-Audio (TV2A) / TV-to-Music (TV2M) ということになるのだろうと思う。

Video-to-Audio

V2Aプロンプト
Generate general audio for the video

https://www.youtube.com/watch?v=SDs4rEHXWBI

Video-to-Music

V2Mプロンプト
Generate music for the video

https://www.youtube.com/watch?v=lS1oRp25D-M

kun432kun432

推論時のVRAMは7.6GBぐらいだった

出力
Sat May 24 11:54:16 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.05              Driver Version: 560.35.05      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4090        Off |   00000000:01:00.0 Off |                  Off |
|  0%   51C    P8              5W /  450W |    7581MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
kun432kun432

サンプルは概ね10秒程度の生成になるけども、推論は概ね3秒程度。結構速いのではないだろうか?と感じた。

このスクラップは4ヶ月前にクローズされました