モデル概要
モデル特徴
モデル能力
使用事例
🚀 InspireMusic
InspireMusicは、音楽生成、歌曲生成、オーディオ生成に特化した統一的なツールキットです。高品質な音楽生成や長尺音楽生成をサポートし、一般ユーザーが独自の音楽を創作する手助けをします。
スターを付けてコミュニティをサポートしてください。ありがとうございます。
主な特徴 | 概要 | インストール | クイックスタート | チュートリアル | モデル | お問い合わせ
✨ 主な機能
InspireMusic は、音楽生成、歌曲生成、オーディオ生成に焦点を当てています。
- 音楽、歌曲、オーディオ生成用に設計された統一的なツールキット。
- 高品質な音楽生成タスク。
- 長尺音楽生成。
📚 ドキュメント
⚠️ 重要提示
このリポジトリにはアルゴリズムのインフラストラクチャといくつかの簡単な例が含まれています。現在は英語のテキストプロンプトのみをサポートしています。
💡 使用建议
パフォーマンスをプレビューするには、InspireMusicデモページ を参照してください。
InspireMusicは、オーディオトークン化と自己回帰Transformer、フローマッチングベースのモデルを統合した、統一的な音楽、歌曲、オーディオ生成フレームワークです。このツールキットの元々の動機は、一般ユーザーが音楽、歌曲、オーディオ制作を通じて音響空間を革新し、研究における美しさを高めることを可能にすることです。このツールキットは、高品質な音楽を作成するAIベースの生成モデルのトレーニングと推論コードの両方を提供します。統一的なフレームワークを持ち、オーディオトークナイザーと自己回帰Transformer、超解像フローマッチングモデリングを組み込んでおり、テキストとオーディオのプロンプトで音楽、歌曲、オーディオを制御可能に生成できます。現在は音楽生成をサポートしており、将来的には歌曲生成、オーディオ生成もサポート予定です。
InspireMusic
![]() |
Figure 1: InspireMusicフレームワークの概要。我々は、高品質な長尺オーディオを生成できる、音楽、歌曲、オーディオ生成用の統一的なフレームワークであるInspireMusicを紹介します。InspireMusicは以下の3つの主要なコンポーネントで構成されています。オーディオトークナイザー は、生のオーディオ波形を、自己回帰Transformerモデルで効率的に処理およびトレーニングできる離散的なオーディオトークンに変換します。低サンプリングレートのオーディオ波形は、高ビットレート圧縮オーディオトークナイザー[1] を介して離散的なトークンに変換されます。自己回帰Transformer モデルは、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
高度な使用法
テキストから音楽へのタスク
テキストから音楽へのタスクのための1行のシェルスクリプトです。
cd examples/music_generation
# フローマッチングを使用して、1行のコマンドで簡単に試す
python -m inspiremusic.cli.inference
# 以下の1行のコマンドのように設定をカスタマイズする
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
# フローマッチングを使用せずに、1行のコマンドで簡単に試す
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.")
音楽の続き生成タスク
音楽の続き生成タスクのための1行のシェルスクリプトです。
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] に基づく音楽トークナイザー。 |
💻 使用例
トレーニング
これは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メモリで十分です。







