モデル概要
モデル特徴
モデル能力
使用事例
🚀 InspireMusic
InspireMusicは、音楽生成、歌曲生成、オーディオ生成に特化した統一的なツールキットです。高品質な音楽生成や長尺音楽生成など、様々なタスクをサポートしています。
スターを付けてコミュニティをサポートしてください、ありがとうございます。
ハイライト | 概要 | インストール | クイックスタート | チュートリアル | モデル | お問い合わせ
✨ 主な機能
InspireMusic は、音楽生成、歌曲生成、オーディオ生成に特化しています。
- 音楽、歌曲、オーディオ生成用の統一的なツールキット。
- 高品質な音楽生成タスクをサポート。
- 長尺音楽生成に対応。
📚 詳細ドキュメント
概要
⚠️ 重要提示
このリポジトリにはアルゴリズムのインフラストラクチャといくつかの簡単なサンプルが含まれています。現在は英語のテキストプロンプトのみをサポートしています。
💡 使用建议
パフォーマンスをプレビューするには、InspireMusicデモページ を参照してください。
InspireMusicは、オーディオトークナイゼーションを自己回帰トランスフォーマーとフローマッチングベースのモデルと統合した、音楽、歌曲、オーディオ生成の統一的なフレームワークです。このツールキットの主な目的は、一般ユーザーが音楽、歌曲、オーディオ制作を通じて音景を革新し、研究における美しさを高めることを可能にすることです。このツールキットは、高品質な音楽を作成するAIベースの生成モデルのトレーニングと推論コードの両方を提供します。統一的なフレームワークを備えたInspireMusicは、オーディオトークナイザーを自己回帰トランスフォーマーと超解像フローマッチングモデリングと組み合わせることで、テキストとオーディオのプロンプトの両方を使用して音楽、歌曲、オーディオを制御可能に生成することができます。現在は音楽生成をサポートしており、将来的には歌曲生成、オーディオ生成もサポート予定です。
InspireMusicの構成
![]() |
図1: InspireMusicフレームワークの概要。InspireMusicは、高品質な長尺オーディオを生成できる音楽、歌曲、オーディオ生成の統一的なフレームワークです。InspireMusicは以下の3つの主要なコンポーネントで構成されています。 オーディオトークナイザー は、生のオーディオ波形を自己回帰トランスフォーマーモデルで効率的に処理およびトレーニングできる離散的なオーディオトークンに変換します。低サンプリングレートのオーディオ波形は、高ビットレート圧縮オーディオトークナイザー[1] を介して離散的なトークンに変換されます。 自己回帰トランスフォーマー モデルは、Qwen2.5[2] をバックボーンモデルとして使用し、テキストとオーディオトークンの両方で次のトークン予測アプローチを使用してトレーニングされ、一貫性のある文脈に関連するトークンシーケンスを生成できるようになっています。オーディオとテキストトークンは、次のトークン予測を行う自己回帰モデルの入力となり、トークンを生成します。 超解像フローマッチングモデル は、フローモデリング手法に基づいており、生成されたトークンを、より高いサンプリングレートのオーディオから取得された高解像度の細粒度の音響詳細を持つ潜在的な特徴にマッピングします[3]。これにより、モデルを通じて音響情報の流れが高忠実度で接続されます。その後、ボコーダーがこれらの強化された潜在的な特徴から最終的なオーディオ波形を生成します。InspireMusicは、テキストから音楽への変換、音楽の続き生成、音楽の再構築、音楽の超解像などのさまざまなタスクをサポートしています。 |
📦 インストール
クローン
- リポジトリをクローンします。
git clone --recursive https://github.com/FunAudioLLM/InspireMusic.git
# ネットワーク障害によりサブモジュールのクローンに失敗した場合は、以下のコマンドを成功するまで実行してください。
cd InspireMusic
git submodule update --recursive
# または、third_partyリポジトリMatcha-TTSを手動でダウンロードすることもできます。
cd third_party && git clone https://github.com/shivammehta25/Matcha-TTS.git
ソースからインストール
InspireMusicは、Python>=3.8、PyTorch>=2.0.1、flash attention==2.6.2/2.6.3、CUDA>=11.2が必要です。以下のコマンドで依存関係をインストールできます。
- Condaをインストールします。詳細は https://docs.conda.io/en/latest/miniconda.html を参照してください。
- Conda環境を作成します。
conda create -n inspiremusic python=3.8
conda activate inspiremusic
cd InspireMusic
# pyniniはWeTextProcessingに必要です。すべてのプラットフォームで実行できるように、condaを使用してインストールします。
conda install -y -c conda-forge pynini==2.1.5
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
# トレーニングを高速化するためにflash attentionをインストールします。
pip install flash-attn --no-build-isolation
- パッケージ内でインストールします。
cd InspireMusic
# パッケージをインストールするには、以下のコマンドを実行します。
python setup.py install
pip install flash-attn --no-build-isolation
sox
または ffmpeg
のインストールも推奨します。システムまたはAnacondaを通じてインストールできます。
# # soxをインストールする場合
# ubuntu
sudo apt-get install sox libsox-dev
# centos
sudo yum install sox sox-devel
# ffmpegをインストールする場合
# ubuntu
sudo apt-get install ffmpeg
# centos
sudo yum install ffmpeg
Dockerを使用する場合
提供されているDockerfileからDockerイメージをビルドするには、以下のコマンドを実行します。
docker build -t inspiremusic .
インタラクティブモードでDockerコンテナを起動するには、以下のコマンドを実行します。
docker run -ti --gpus all -v .:/workspace/InspireMusic inspiremusic
Docker Composeを使用する場合
docker-compose.ymlファイルからDocker Compose環境とDockerイメージをビルドするには、以下のコマンドを実行します。
docker compose up -d --build
インタラクティブモードでDockerコンテナにアタッチするには、以下のコマンドを実行します。
docker exec -ti inspire-music bash
🚀 クイックスタート
音楽生成のクイックサンプル推論スクリプト
cd InspireMusic
mkdir -p pretrained_models
# モデルをダウンロードします。
# ModelScope
git clone https://www.modelscope.cn/iic/InspireMusic-1.5B-Long.git pretrained_models/InspireMusic-1.5B-Long
# HuggingFace
git clone https://huggingface.co/FunAudioLLM/InspireMusic-1.5B-Long.git pretrained_models/InspireMusic-1.5B-Long
cd examples/music_generation
# クイック推論サンプルを実行します。
sh infer_1.5b_long.sh
音楽生成タスクを実行するためのクイックスタートスクリプトです。データ準備パイプライン、モデルトレーニング、推論が含まれています。
cd InspireMusic/examples/music_generation/
sh run.sh
ワンライン推論
テキストから音楽へのタスク
テキストから音楽へのタスクのワンラインシェルスクリプトです。
cd examples/music_generation
# フローマッチングを使用して、ワンラインコマンドですぐに試すことができます。
python -m inspiremusic.cli.inference
# 以下のようなワンラインコマンドで設定をカスタマイズすることもできます。
python -m inspiremusic.cli.inference --task text-to-music -m "InspireMusic-1.5B-Long" -g 0 -t "Experience soothing and sensual instrumental jazz with a touch of Bossa Nova, perfect for a relaxing restaurant or spa ambiance." -c intro -s 0.0 -e 30.0 -r "exp/inspiremusic" -o output -f wav
# フローマッチングを使用せずに、ワンラインコマンドですぐに試すことができます。
python -m inspiremusic.cli.inference --task text-to-music -g 0 -t "Experience soothing and sensual instrumental jazz with a touch of Bossa Nova, perfect for a relaxing restaurant or spa ambiance." --fast True
あるいは、数行のPythonコードで推論を実行することもできます。
from inspiremusic.cli.inference import InspireMusic
from inspiremusic.cli.inference import env_variables
if __name__ == "__main__":
env_variables()
model = InspireMusic(model_name = "InspireMusic-Base")
model.inference("text-to-music", "Experience soothing and sensual instrumental jazz with a touch of Bossa Nova, perfect for a relaxing restaurant or spa ambiance.")
音楽の続き生成タスク
音楽の続き生成タスクのワンラインシェルスクリプトです。
cd examples/music_generation
# フローマッチングを使用する場合
python -m inspiremusic.cli.inference --task continuation -g 0 -a audio_prompt.wav
# フローマッチングを使用しない場合
python -m inspiremusic.cli.inference --task continuation -g 0 -a audio_prompt.wav --fast True
あるいは、数行のPythonコードで推論を実行することもできます。
from inspiremusic.cli.inference import InspireMusic
from inspiremusic.cli.inference import env_variables
if __name__ == "__main__":
env_variables()
model = InspireMusic(model_name = "InspireMusic-Base")
# オーディオプロンプトのみを使用する場合
model.inference("continuation", None, "audio_prompt.wav")
# テキストプロンプトとオーディオプロンプトの両方を使用する場合
model.inference("continuation", "Continue to generate jazz music.", "audio_prompt.wav")
🔧 モデル
モデルのダウンロード
音楽生成用の事前学習済みInspireMusicモデルをダウンロードできます。
# gitを使用してモデルをダウンロードします。git lfsがインストールされていることを確認してください。
mkdir -p pretrained_models
git clone https://www.modelscope.cn/iic/InspireMusic.git pretrained_models/InspireMusic
利用可能なモデル
現在、24KHzモノラルと48KHzステレオの音楽生成モデルをオープンソースで公開しています。 以下の表に、ModelScopeとHuggingfaceのモデルハブへのリンクを示します。
モデル名 | モデルリンク | 備考 |
---|---|---|
InspireMusic-Base-24kHz | 事前学習済み音楽生成モデル、24kHzモノラル、30秒 | |
InspireMusic-Base | 事前学習済み音楽生成モデル、48kHz、30秒 | |
InspireMusic-1.5B-24kHz | 事前学習済み音楽生成1.5Bモデル、24kHzモノラル、30秒 | |
InspireMusic-1.5B | 事前学習済み音楽生成1.5Bモデル、48kHz、30秒 | |
InspireMusic-1.5B-Long | 事前学習済み音楽生成1.5Bモデル、48kHz、数分までの長尺音楽生成をサポート | |
InspireSong-1.5B | 事前学習済み歌曲生成1.5Bモデル、48kHzステレオ | |
InspireAudio-1.5B | 事前学習済みオーディオ生成1.5Bモデル、48kHzステレオ | |
Wavtokenizer[1] (75Hz) | 24kHzオーディオで1つのコードブックを持つ極低ビットレートの音楽用オーディオトークナイザー | |
Music_tokenizer (75Hz) | 24kHzオーディオでHifiCodec[3]に基づく音楽トークナイザー | |
Music_tokenizer (150Hz) | 48kHzオーディオでHifiCodec[3]に基づく音楽トークナイザー |
💻 使用例
基本的な使用法
現時点で、InspireMusicには 音楽生成 のトレーニングと推論コードが含まれています。
トレーニング
LLMモデルをトレーニングする例です。BF16/FP16トレーニングをサポートしています。
torchrun --nnodes=1 --nproc_per_node=8 \
--rdzv_id=1024 --rdzv_backend="c10d" --rdzv_endpoint="localhost:0" \
inspiremusic/bin/train.py \
--train_engine "torch_ddp" \
--config conf/inspiremusic.yaml \
--train_data data/train.data.list \
--cv_data data/dev.data.list \
--model llm \
--model_dir `pwd`/exp/music_generation/llm/ \
--tensorboard_dir `pwd`/tensorboard/music_generation/llm/ \
--ddp.dist_backend "nccl" \
--num_workers 8 \
--prefetch 100 \
--pin_memory \
--deepspeed_config ./conf/ds_stage2.json \
--deepspeed.save_states model+optimizer \
--fp16
フローマッチングモデルをトレーニングする例です。FP16トレーニングはサポートしていません。
torchrun --nnodes=1 --nproc_per_node=8 \
--rdzv_id=1024 --rdzv_backend="c10d" --rdzv_endpoint="localhost:0" \
inspiremusic/bin/train.py \
--train_engine "torch_ddp" \
--config conf/inspiremusic.yaml \
--train_data data/train.data.list \
--cv_data data/dev.data.list \
--model flow \
--model_dir `pwd`/exp/music_generation/flow/ \
--tensorboard_dir `pwd`/tensorboard/music_generation/flow/ \
--ddp.dist_backend "nccl" \
--num_workers 8 \
--prefetch 100 \
--pin_memory \
--deepspeed_config ./conf/ds_stage2.json \
--deepspeed.save_states model+optimizer
推論
モデル推論をすぐに実行するためのサンプルスクリプトです。
cd InspireMusic/examples/music_generation/
sh infer.sh
通常モードで推論を実行する例です。つまり、テキストから音楽への変換と音楽の続き生成タスクでフローマッチングモデルを使用します。
pretrained_model_dir = "pretrained_models/InspireMusic/"
for task in 'text-to-music' 'continuation'; do
python inspiremusic/bin/inference.py --task $task \
--gpu 0 \
--config conf/inspiremusic.yaml \
--prompt_data data/test/parquet/data.list \
--flow_model $pretrained_model_dir/flow.pt \
--llm_model $pretrained_model_dir/llm.pt \
--music_tokenizer $pretrained_model_dir/music_tokenizer \
--wavtokenizer $pretrained_model_dir/wavtokenizer \
--result_dir `pwd`/exp/inspiremusic/${task}_test \
--chorus verse
done
高速モードで推論を実行する例です。つまり、テキストから音楽への変換と音楽の続き生成タスクでフローマッチングモデルを使用しません。
pretrained_model_dir = "pretrained_models/InspireMusic/"
for task in 'text-to-music' 'continuation'; do
python inspiremusic/bin/inference.py --task $task \
--gpu 0 \
--config conf/inspiremusic.yaml \
--prompt_data data/test/parquet/data.list \
--flow_model $pretrained_model_dir/flow.pt \
--llm_model $pretrained_model_dir/llm.pt \
--music_tokenizer $pretrained_model_dir/music_tokenizer \
--wavtokenizer $pretrained_model_dir/wavtokenizer \
--result_dir `pwd`/exp/inspiremusic/${task}_test \
--chorus verse \
--fast
done
ハードウェア要件
以前のH800 GPUでのテストでは、InspireMusicはリアルタイム係数(RTF)が約1.6~1.8で30秒のオーディオを生成することができました。通常モードでは、より良い体験を得るために少なくとも24GBのGPUメモリを持つハードウェアの使用を推奨します。高速モードでは、12GBのGPUメモリで十分です。







