模型简介
模型特点
模型能力
使用案例
请通过点赞支持我们的社区 感谢大家支持
亮点 | 介绍 | 安装 | 快速开始 | 教程 | 模型 | 联系我们
亮点
InspireMusic 专注于音乐生成、歌曲生成和音频生成。
- 专为音乐、歌曲和音频生成设计的统一工具包。
- 具有高音频质量的音乐生成任务。
- 支持长篇幅音乐生成。
介绍
[!注意] 本仓库包含算法基础设施和一些简单示例。目前仅支持英文文本提示。
[!提示] 要预览性能,请参考 InspireMusic 演示页面。
InspireMusic 是一个通过音频标记化与自回归变换器和基于流匹配的模型集成的统一音乐、歌曲和音频生成框架。该工具包的初衷是让普通用户能够通过音乐、歌曲和音频创作来创新声音景观并增强研究的和谐性。该工具包提供了基于人工智能的生成模型的高质量音乐创作训练和推理代码。InspireMusic 采用统一框架,集成了音频标记器与自回归变换器和超分辨率流匹配建模,允许通过文本和音频提示可控地生成音乐、歌曲和音频。该工具包目前支持音乐生成,未来将支持歌曲生成和音频生成。
InspireMusic
![]() |
图1:InspireMusic框架概览。我们介绍了InspireMusic,一个能够生成高质量长篇幅音频的统一音乐、歌曲和音频生成框架。InspireMusic包含以下三个关键组件。音频标记器将原始音频波形转换为离散音频标记,这些标记可以通过自回归变换器模型高效处理和训练。较低采样率的音频波形通过高比特率压缩音频标记器[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
一行推理
文本到音乐任务
用于文本到音乐任务的一行Shell脚本。
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 "体验舒缓而感性的器乐爵士乐,带有一点波萨诺瓦风格,非常适合放松的餐厅或水疗氛围。" -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 "体验舒缓而感性的器乐爵士乐,带有一点波萨诺瓦风格,非常适合放松的餐厅或水疗氛围。" --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", "体验舒缓而感性的器乐爵士乐,带有一点波萨诺瓦风格,非常适合放松的餐厅或水疗氛围。")
音乐延续任务
用于音乐延续任务的一行Shell脚本。
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", "继续生成爵士音乐。", "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音频的音乐,具有一个码本。 | |
Music_tokenizer (75Hz) | 基于HifiCodec[3]的音乐标记器,用于24kHz音频。 | |
Music_tokenizer (150Hz) | 基于HifiCodec[3]的音乐标记器,用于48kHz音频。 |
基本用法
目前,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可以生成30秒的音频,实时因子(RTF)约为1.6~1.8。对于普通模式,我们建议使用至少24GB GPU内存的硬件以获得更好的体验。对于快速模式,12GB GPU内存足够。
引用
@misc{InspireMusic2025,
title={InspireMusic: Integrating Super Resolution and Large Language Model for High-Fidelity Long-Form Music Generation},
author={Chong Zhang and Yukun Ma and Qian Chen and Wen Wang and Shengkui Zhao and Zexu Pan and Hao Wang and Chongjia Ni and Trung Hieu Nguyen and Kun Zhou and Yidi Jiang and Chaohong Tan and Zhifu Gao and Zhihao Du and Bin Ma},
year={2025},
eprint={2503.00084},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2503.00084},
}
免责声明
上述内容仅供研究使用,旨在展示技术能力。部分示例来源于互联网。如有任何内容侵犯您的权利,请联系我们要求删除。







