diff --git a/README.md b/README.md index 1a0c386..76db50e 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,13 @@ Hugging Face | ModelScope | Space Demo | - Discord + Discord +

+

+ README in English + 简体中文版自述文件 + 日本語のREADME

- ---

StepFun Logo diff --git a/README_CN.md b/README_CN.md new file mode 100644 index 0000000..fa9162d --- /dev/null +++ b/README_CN.md @@ -0,0 +1,430 @@ +

ACE-Step

+

A Step Towards Music Generation Foundation Model

+

+ Project | + Hugging Face | + ModelScope | + Space Demo | + Discord +

+

+ README in English + 简体中文版自述文件 + 日本語のREADME +

+--- +

+ StepFun 标志 +

+ +## 目录 + +- [✨ 功能特性](#-功能特性) +- [📦 安装](#-安装) +- [🚀 使用](#-使用) +- [📱 用户界面指南](#-用户界面指南) +- [🔨 训练](#-训练) + +## 📝 摘要 + +我们推出了 ACE-Step,这是一款新颖的开源音乐生成基础模型,它克服了现有方法的关键局限性,并通过整体架构设计实现了最先进的性能。当前的方法在生成速度、音乐连贯性和可控性之间存在固有的权衡。例如,基于LLM的模型(如Yue、SongGen)在歌词对齐方面表现出色,但推理速度慢且存在结构失真。而扩散模型(如DiffRhythm)虽然能实现更快的合成,但通常缺乏长程结构连贯性。 + +ACE-Step 通过将基于扩散的生成与 Sana 的深度压缩自动编码器 (DCAE) 和轻量级线性 Transformer 相结合,弥合了这一差距。它还在训练过程中利用 MERT 和 m-hubert 对齐语义表示 (REPA),从而实现快速收敛。因此,我们的模型在 A100 GPU 上仅需 20 秒即可合成长达 4 分钟的音乐——比基于 LLM 的基线模型快 15 倍——同时在旋律、和声和节奏指标上实现了卓越的音乐连贯性和歌词对齐。此外,ACE-Step 保留了细致的声学细节,从而实现了高级控制机制,如声音克隆、歌词编辑、混音和音轨生成(例如,歌词到人声、歌唱到伴奏)。 + +我们的愿景并非构建又一个端到端的文本到音乐的流水线,而是为音乐人工智能建立一个基础模型:一个快速、通用、高效且灵活的架构,使其易于在其之上训练子任务。这为开发能无缝集成到音乐艺术家、制作人和内容创作者创作流程中的强大工具铺平了道路。简而言之,我们旨在打造音乐领域的 Stable Diffusion 时刻。 + +## 📢 新闻与更新 + +- 🚀 **2025.05.08:** [ComfyUI_ACE-Step](https://t.co/GeRSTrIvn0) 节点现已可用!在 ComfyUI 中探索 ACE-Step 的强大功能。🎉 +![图片](https://github.com/user-attachments/assets/0a13d90a-9086-47ee-abab-976bad20fa7c) + +- 🚀 2025.05.06: 开源演示代码和模型 + +## ✨ 功能特性 + +

+ ACE-Step 应用图 +

+ +### 🎯 基线质量 + +#### 🌈 多样风格与流派 + +- 🎸 支持所有主流音乐风格,描述格式多样,包括短标签、描述性文本或使用场景 +- 🎷 能够生成不同流派的音乐,并配备合适的乐器和风格 + +#### 🌍 多语言支持 + +- 🗣️ 支持19种语言,表现较好的前10种语言包括: + - 🇺🇸 英语, 🇨🇳 中文, 🇷🇺 俄语, 🇪🇸 西班牙语, 🇯🇵 日语, 🇩🇪 德语, 🇫🇷 法语, 🇵🇹 葡萄牙语, 🇮🇹 意大利语, 🇰🇷 韩语 +- ⚠️ 由于数据不平衡,不太常见的语言可能表现不佳 + +#### 🎻 乐器风格 + +- 🎹 支持各种不同流派和风格的器乐生成 +- 🎺 能够为每种乐器制作逼真的乐器音轨,并具有适当的音色和表现力 +- 🎼 能够生成包含多种乐器的复杂编曲,同时保持音乐连贯性 + +#### 🎤 人声技巧 + +- 🎙️ 能够高质量地呈现各种人声风格和技巧 +- 🗣️ 支持不同的声乐表达,包括各种歌唱技巧和风格 + +### 🎛️ 可控性 + +#### 🔄 变奏生成 + +- ⚙️ 通过免训练、推理时优化技术实现 +- 🌊 流匹配模型生成初始噪声,然后使用 trigFlow 的噪声公式添加额外的高斯噪声 +- 🎚️ 可调节原始初始噪声和新高斯噪声之间的混合比例,以控制变奏程度 + +#### 🎨 局部重绘 (Repainting) + +- 🖌️ 通过向目标音频输入添加噪声并在ODE(常微分方程)过程中应用掩码约束来实现 +- 🔍 当输入条件与原始生成不同时,可以仅修改特定方面,同时保留其余部分 +- 🔀 可以与变奏生成技术结合,在风格、歌词或人声方面创建局部变化 + +#### ✏️ 歌词编辑 + +- 💡 创新性地应用流编辑 (flow-edit) 技术,实现局部歌词修改,同时保留旋律、人声和伴奏 +- 🔄 适用于生成内容和上传的音频,极大地增强了创作可能性 +- ℹ️ 当前限制:一次只能修改少量歌词片段以避免失真,但可以顺序应用多次编辑 + +### 🚀 应用 + +#### 🎤 歌词到人声 (Lyric2Vocal) (LoRA) + +- 🔊 基于在纯人声数据上微调的 LoRA 模型,允许直接从歌词生成人声样本 +- 🛠️ 提供众多实际应用,如人声小样、引导音轨、歌曲创作辅助和人声编排实验 +- ⏱️ 提供一种快速测试歌词演唱效果的方法,帮助歌曲创作者更快地迭代 + +#### 📝 文本到采样 (Text2Samples) (LoRA) + +- 🎛️ 类似于歌词到人声,但在纯乐器和采样数据上进行微调 +- 🎵 能够从文本描述生成概念性的音乐制作采样 +- 🧰 可用于快速创建乐器循环、音效和用于制作的音乐元素 + +### 🔮 即将推出 + +#### 🎤 RapMachine + +- 🔥 在纯说唱数据上进行微调,以创建一个专门从事说唱生成的 AI 系统 +- 🏆 预期能力包括 AI 说唱对战和通过说唱进行叙事表达 +- 📚 说唱具有出色的叙事和表达能力,提供了非凡的应用潜力 + +#### 🎛️ StemGen + +- 🎚️ 一个在多轨数据上训练的 controlnet-lora 模型,用于生成单个乐器分轨 +- 🎯 以参考音轨和指定乐器(或乐器参考音频)作为输入 +- 🎹 输出与参考音轨互补的乐器分轨,例如为长笛旋律创作钢琴伴奏或为领奏吉他添加爵士鼓 + +#### 🎤 歌唱到伴奏 (Singing2Accompaniment) + +- 🔄 StemGen 的逆过程,从单个人声音轨生成混合的母带音轨 +- 🎵 以人声音轨和指定风格作为输入,生成完整的人声伴奏 +- 🎸 创建与输入人声互补的完整乐器背景,可以轻松地为任何录制的人声添加专业水准的伴奏 + +## 📋 路线图 + +- [x] 发布训练代码 🔥 +- [x] 发布 LoRA 训练代码 🔥 +- [ ] 发布 RapMachine LoRA 🎤 +- [ ] 发布 ControlNet 训练代码 🔥 +- [ ] 发布 Singing2Accompaniment ControlNet 🎮 +- [ ] 发布评估性能和技术报告 📄 + +## 🖥️ 硬件性能 + +我们评估了 ACE-Step 在不同硬件配置下的性能,得到以下吞吐量结果: + +| 设备 | 实时率 (27步) | 渲染1分钟音频所需时间 (27步) | 实时率 (60步) | 渲染1分钟音频所需时间 (60步) | +| --------------- | -------------- | ------------------------------------- | -------------- | ------------------------------------- | +| NVIDIA RTX 4090 | 34.48 × | 1.74 秒 | 15.63 × | 3.84 秒 | +| NVIDIA A100 | 27.27 × | 2.20 秒 | 12.27 × | 4.89 秒 | +| NVIDIA RTX 3090 | 12.76 × | 4.70 秒 | 6.48 × | 9.26 秒 | +| MacBook M2 Max | 2.27 × | 26.43 秒 | 1.03 × | 58.25 秒 | + +我们使用 RTF (Real-Time Factor, 实时率) 来衡量 ACE-Step 的性能。数值越高表示生成速度越快。27.27x 表示生成1分钟的音乐需要2.2秒 (60/27.27)。性能是在单个 GPU、批处理大小为1、27步的条件下测量的。 + +## 📦 安装 + +### 1. 克隆仓库 +首先,将 ACE-Step 仓库克隆到您的本地计算机,并进入项目目录: +```bash +git clone https://github.com/ace-step/ACE-Step.git +cd ACE-Step +``` + +### 2. 先决条件 +确保您已安装以下软件: + +* `Python`: 推荐使用 3.10 或更高版本。您可以从 [python.org](https://www.python.org/) 下载。 +* `Conda` 或 `venv`: 用于创建虚拟环境(推荐使用 Conda)。 + +### 3. 设置虚拟环境 + +强烈建议使用虚拟环境来管理项目依赖项并避免冲突。选择以下方法之一: + +#### 选项 A:使用 Conda + +1. **创建环境**,命名为 `ace_step`,使用 Python 3.10: + ```bash + conda create -n ace_step python=3.10 -y + ``` + +2. **激活环境:** + ```bash + conda activate ace_step + ``` + +#### 选项 B:使用 venv + +1. **导航到克隆的 ACE-Step 目录。** + +2. **创建虚拟环境** (通常命名为 `venv`): + ```bash + python -m venv venv + ``` + +3. **激活环境:** + * **Windows (cmd.exe):** + ```bash + venv\Scripts\activate.bat + ``` + * **Windows (PowerShell):** + ```powershell + .\venv\Scripts\Activate.ps1 + ``` + *(如果遇到执行策略错误,您可能需要先运行 `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process`)* + * **Linux / macOS (bash/zsh):** + ```bash + source venv/bin/activate + ``` + +### 4. 安装依赖 +虚拟环境激活后: +**a.** (仅限 Windows) 如果您在 Windows 上并计划使用 NVIDIA GPU,请先安装支持 CUDA 的 PyTorch: + +```bash +pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 +``` +(如果您有不同的 CUDA 版本,请调整 cu126。有关其他 PyTorch 安装选项,请参阅 [PyTorch 官方网站](https://pytorch.org/get-started/locally/))。 + +**b.** 安装 ACE-Step 及其核心依赖项: +```bash +pip install -e . +``` + +ACE-Step 应用程序现已安装。GUI 可在 Windows、macOS 和 Linux 上运行。有关如何运行它的说明,请参阅 [使用](#-使用) 部分。 + +## 🚀 使用 + +![演示界面](assets/demo_interface.png) + +### 🔍 基本用法 + +```bash +acestep --port 7865 +``` + +### ⚙️ 高级用法 + +```bash +acestep --checkpoint_path /path/to/checkpoint --port 7865 --device_id 0 --share true --bf16 true +``` + +如果您使用的是 macOS,请使用 `--bf16 false` 以避免错误。 + +#### 🔍 API 用法 +如果您打算将 ACE-Step 作为库集成到您自己的 Python 项目中,可以使用以下 pip 命令直接从 GitHub 安装最新版本。 + +**通过 pip 直接安装:** + +1. **确保已安装 Git:** 此方法要求您的系统上已安装 Git,并且在系统的 PATH 中可访问。 +2. **执行安装命令:** + ```bash + pip install git+https://github.com/ace-step/ACE-Step.git + ``` + 建议在虚拟环境中使用此命令,以避免与其他软件包发生冲突。 + +#### 🛠️ 命令行参数 + +- `--checkpoint_path`: 模型检查点路径 (默认:自动下载) +- `--server_name`: Gradio 服务器绑定的 IP 地址或主机名 (默认:'127.0.0.1')。使用 '0.0.0.0' 使其可从网络上的其他设备访问。 +- `--port`: Gradio 服务器运行的端口 (默认:7865) +- `--device_id`: 要使用的 GPU 设备 ID (默认:0) +- `--share`: 启用 Gradio 共享链接 (默认:False) +- `--bf16`: 使用 bfloat16 精度以加快推理速度 (默认:True) +- `--torch_compile`: 使用 `torch.compile()` 优化模型,加快推理速度 (默认:False)。**Windows 不支持** + +## 📱 用户界面指南 + +ACE-Step 界面提供了几个选项卡,用于不同的音乐生成和编辑任务: + +### 📝 文本到音乐 (Text2Music) 选项卡 + +1. **📋 输入字段**: + - **🏷️ 标签 (Tags)**: 输入描述性标签、流派或场景描述,用逗号分隔 + - **📜 歌词 (Lyrics)**: 输入歌词,并使用 [verse], [chorus], [bridge] 等结构标签 + - **⏱️ 音频时长 (Audio Duration)**: 设置生成音频的目标时长 (-1 表示随机) + +2. **⚙️ 设置 (Settings)**: + - **🔧 基本设置 (Basic Settings)**: 调整推理步数、引导强度 (guidance scale) 和种子 (seeds) + - **🔬 高级设置 (Advanced Settings)**: 微调调度器类型、CFG 类型、ERG 设置等 + +3. **🚀 生成 (Generation)**: 点击 "Generate" 根据您的输入创建音乐 + +### 🔄 重录 (Retake) 选项卡 + +- 🎲 使用不同的种子重新生成音乐,并带有轻微变化 +- 🎚️ 调整变异程度 (variance) 以控制重录与原始版本的差异程度 + +### 🎨 局部重绘 (Repainting) 选项卡 + +- 🖌️ 选择性地重新生成音乐的特定部分 +- ⏱️ 指定要重绘部分的开始和结束时间 +- 🔍 选择源音频 (文本到音乐的输出、上次重绘结果或上传的音频) + +### ✏️ 编辑 (Edit) 选项卡 + +- 🔄 通过更改标签或歌词来修改现有音乐 +- 🎛️ 选择 "only_lyrics" 模式 (保留旋律) 或 "remix" 模式 (改变旋律) +- 🎚️ 调整编辑参数以控制保留原始内容的程度 + +### 📏 扩展 (Extend) 选项卡 + +- ➕ 在现有乐曲的开头或结尾添加音乐 +- 📐 指定左侧和右侧扩展长度 +- 🔍 选择要扩展的源音频 + +## 📂 示例 + +`examples/input_params` 目录包含可用作生成音乐参考的示例输入参数。 + +## 🏗️ 架构 + +

+ ACE-Step 框架图 +

+ +## 🔨 训练 + +### 先决条件 +1. 按照安装部分的说明准备环境。 + +2. 如果您计划训练 LoRA 模型,请安装 PEFT 库: + ```bash + pip install peft + ``` + +3. 以 Huggingface 格式准备您的数据集 ([Huggingface Datasets 文档](https://huggingface.co/docs/datasets/index))。数据集应包含以下字段: + - `keys`: 每个音频样本的唯一标识符 + - `filename`: 音频文件的路径 + - `tags`: 描述性标签列表 (例如:`["pop", "rock"]`) + - `norm_lyrics`: 规范化的歌词文本 + - 可选字段: + - `speaker_emb_path`:说话人嵌入文件的路径 (如果不可用,则使用空字符串) + - `recaption`: 各种格式的附加标签描述 + +示例数据集条目: +```json +{ + "keys": "1ce52937-cd1d-456f-967d-0f1072fcbb58", + "filename": "data/audio/1ce52937-cd1d-456f-967d-0f1072fcbb58.wav", + "tags": ["流行", "原声", "情歌", "浪漫", "情感"], + "speaker_emb_path": "", + "norm_lyrics": "我爱你,我爱你,我爱你", + "recaption": { + "simplified": "流行", + "expanded": "流行, 原声, 情歌, 浪漫, 情感", + "descriptive": "声音轻柔,如同静夜中的微风。它舒缓而充满渴望。", + "use_cases": "适用于浪漫电影的背景音乐或私密时刻。", + "analysis": "流行, 情歌, 钢琴, 吉他, 慢节奏, 浪漫, 情感" + } +} +``` + +### 训练参数 + +#### 通用参数 +- `--dataset_path`: Huggingface 数据集的路径 (必需) +- `--checkpoint_dir`: 包含基础模型检查点的目录 +- `--learning_rate`: 训练学习率 (默认:1e-4) +- `--max_steps`: 最大训练步数 (默认:2000000) +- `--precision`: 训练精度,例如:"bf16-mixed" (默认) 或 "fp32" +- `--devices`: 使用的 GPU 数量 (默认:1) +- `--num_nodes`: 使用的计算节点数量 (默认:1) +- `--accumulate_grad_batches`: 梯度累积步数 (默认:1) +- `--num_workers`: 数据加载工作线程数 (默认:8) +- `--every_n_train_steps`: 检查点保存频率 (默认:2000) +- `--every_plot_step`: 生成评估样本的频率 (默认:2000) +- `--exp_name`: 用于日志记录的实验名称 (默认:"text2music_train_test") +- `--logger_dir`: 保存日志的目录 (默认:"./exps/logs/") + +#### 基础模型训练 +使用以下命令训练基础模型: +```bash +python trainer.py --dataset_path "path/to/your/dataset" --checkpoint_dir "path/to/base/checkpoint" --exp_name "your_experiment_name" +``` + +#### LoRA 训练 +对于 LoRA 训练,您需要提供一个 LoRA 配置文件: +```bash +python trainer.py --dataset_path "path/to/your/dataset" --checkpoint_dir "path/to/base/checkpoint" --lora_config_path "path/to/lora_config.json" --exp_name "your_lora_experiment" +``` + +示例 LoRA 配置文件 (lora_config.json): +```json +{ + "r": 16, + "lora_alpha": 32, + "target_modules": [ + "speaker_embedder", + "linear_q", + "linear_k", + "linear_v", + "to_q", + "to_k", + "to_v", + "to_out.0" + ] +} +``` + +### 高级训练选项 +- `--shift`: 流匹配 (Flow matching) 位移参数 (默认:3.0) +- `--gradient_clip_val`: 梯度裁剪值 (默认:0.5) +- `--gradient_clip_algorithm`: 梯度裁剪算法 (默认:"norm") +- `--reload_dataloaders_every_n_epochs`: 重新加载数据加载器的频率 (默认:1) +- `--val_check_interval`: 验证检查间隔 (默认:None) + +## 📜 许可与免责声明 + +本项目根据 [Apache License 2.0](./LICENSE) 获得许可。 + +ACE-Step 能够生成各种流派的原创音乐,应用于创意制作、教育和娱乐领域。虽然旨在支持积极和艺术性的用例,但我们承认潜在的风险,例如由于风格相似性导致的无意版权侵犯、文化元素的不当融合以及滥用于生成有害内容。为确保负责任地使用,我们鼓励用户验证生成作品的原创性,明确披露 AI 的参与,并在改编受保护的风格或材料时获得适当的许可。使用 ACE-Step 即表示您同意遵守这些原则,尊重艺术完整性、文化多样性和法律合规性。作者不对模型的任何滥用负责,包括但不限于侵犯版权、文化不敏感或生成有害内容。 + +🔔 重要声明 +ACE-Step 项目的唯一官方网站是我们的 GitHub Pages 网站。 +我们不运营任何其他网站。 +🚫 虚假域名包括但不限于: +ac\*\*p.com, a\*\*p.org, a\*\*\*c.org +⚠️ 请务必谨慎。不要访问、信任或在任何这些网站上付款。 + +## 🙏 致谢 + +本项目由 ACE Studio 和 StepFun 共同领导。 + +## 📖 引用 + +如果您发现此项目对您的研究有用,请考虑引用: + +```BibTeX +@misc{gong2025acestep, + title={ACE-Step: A Step Towards Music Generation Foundation Model}, + author={Junmin Gong, Wenxiao Zhao, Sen Wang, Shengyuan Xu, Jing Guo}, + howpublished={\url{https://github.com/ace-step/ACE-Step}}, + year={2025}, + note={GitHub 仓库} +} +``` \ No newline at end of file diff --git a/README_JA.md b/README_JA.md new file mode 100644 index 0000000..1bd229e --- /dev/null +++ b/README_JA.md @@ -0,0 +1,430 @@ +

ACE-Step

+

音楽生成基盤モデルへの一歩

+

+ プロジェクト | + Hugging Face | + ModelScope | + Spaceデモ | + Discord +

+

+ README in English + 简体中文版自述文件 + 日本語のREADME +

+--- +

+ StepFun ロゴ +

+ +## 目次 + +- [✨ 特徴](#-特徴) +- [📦 インストール](#-インストール) +- [🚀 使い方](#-使い方) +- [📱 ユーザーインターフェースガイド](#-ユーザーインターフェースガイド) +- [🔨 トレーニング](#-トレーニング) + +## 📝 概要 + +私たちは、既存のアプローチの主要な制限を克服し、包括的なアーキテクチャ設計を通じて最先端のパフォーマンスを達成する、新しいオープンソースの音楽生成基盤モデルであるACE-Stepを紹介します。現在の方法は、生成速度、音楽的一貫性、および制御可能性の間で固有のトレードオフに直面しています。例えば、LLMベースのモデル(例:Yue、SongGen)は歌詞のアライメントに優れていますが、推論が遅く、構造的なアーティファクトに悩まされています。一方、拡散モデル(例:DiffRhythm)はより高速な合成を可能にしますが、しばしば長期的な構造的一貫性に欠けます。 + +ACE-Stepは、拡散ベースの生成とSanaのDeep Compression AutoEncoder (DCAE) および軽量な線形トランスフォーマーを統合することにより、このギャップを埋めます。さらに、トレーニング中にMERTとm-hubertを活用して意味表現 (REPA) を調整し、迅速な収束を可能にします。その結果、当社のモデルはA100 GPUでわずか20秒で最大4分間の音楽を合成し、LLMベースのベースラインよりも15倍高速でありながら、メロディ、ハーモニー、リズムの指標全体で優れた音楽的一貫性と歌詞のアライメントを実現します。さらに、ACE-Stepは微細な音響的詳細を保持し、音声クローニング、歌詞編集、リミックス、トラック生成(例:歌詞からボーカル、歌唱から伴奏)などの高度な制御メカニズムを可能にします。 + +私たちのビジョンは、さらに別のエンドツーエンドのテキストから音楽へのパイプラインを構築するのではなく、音楽AIの基盤モデルを確立することです。つまり、高速で、汎用的で、効率的かつ柔軟なアーキテクチャであり、その上にサブタスクを簡単にトレーニングできるようにすることです。これは、音楽アーティスト、プロデューサー、コンテンツクリエーターの創造的なワークフローにシームレスに統合される強力なツールの開発への道を開きます。要するに、私たちは音楽におけるStable Diffusionの瞬間を築くことを目指しています。 + +## 📢 ニュースと更新情報 + +- 🚀 **2025.05.08:** [ComfyUI_ACE-Step](https://t.co/GeRSTrIvn0) ノードが利用可能になりました!ComfyUI内でACE-Stepのパワーを探求してください。🎉 +![画像](https://github.com/user-attachments/assets/0a13d90a-9086-47ee-abab-976bad20fa7c) + +- 🚀 2025.05.06: オープンソースのデモコードとモデルを公開 + +## ✨ 特徴 + +

+ ACE-Step フレームワーク +

+ +### 🎯 ベースライン品質 + +#### 🌈 多様なスタイルとジャンル + +- 🎸 短いタグ、説明的なテキスト、またはユースケースシナリオを含むさまざまな記述形式で、すべての主流音楽スタイルをサポート +- 🎷 適切な楽器編成とスタイルで、さまざまなジャンルの音楽を生成可能 + +#### 🌍 多言語対応 + +- 🗣️ 19言語をサポートし、パフォーマンスの高い上位10言語は次のとおりです。 + - 🇺🇸 英語, 🇨🇳 中国語, 🇷🇺 ロシア語, 🇪🇸 スペイン語, 🇯🇵 日本語, 🇩🇪 ドイツ語, 🇫🇷 フランス語, 🇵🇹 ポルトガル語, 🇮🇹 イタリア語, 🇰🇷 韓国語 +- ⚠️ データ不均衡のため、あまり一般的でない言語はパフォーマンスが低下する可能性があります + +#### 🎻 楽器スタイル + +- 🎹 さまざまなジャンルやスタイルの多様な器楽生成をサポート +- 🎺 各楽器に適した音色と表現力で、リアルな楽器トラックを制作可能 +- 🎼 音楽的一貫性を維持しながら、複数の楽器による複雑なアレンジを生成可能 + +#### 🎤 ボーカルテクニック + +- 🎙️ さまざまなボーカルスタイルとテクニックを高品質でレンダリング可能 +- 🗣️ さまざまな歌唱テクニックやスタイルを含む、多様なボーカル表現をサポート + +### 🎛️ 制御性 + +#### 🔄 バリエーション生成 + +- ⚙️ トレーニング不要の推論時最適化技術を使用して実装 +- 🌊 フローマッチングモデルが初期ノイズを生成し、次にtrigFlowのノイズ式を使用して追加のガウスノイズを追加 +- 🎚️ 元の初期ノイズと新しいガウスノイズの混合比を調整して、バリエーションの度合いを制御 + +#### 🎨 リペインティング + +- 🖌️ ターゲットオーディオ入力にノイズを追加し、ODEプロセス中にマスク制約を適用することで実装 +- 🔍 入力条件が元の生成から変更された場合、残りの部分を保持しながら特定の側面のみを変更可能 +- 🔀 バリエーション生成技術と組み合わせて、スタイル、歌詞、またはボーカルの局所的なバリエーションを作成可能 + +#### ✏️ 歌詞編集 + +- 💡 フロー編集技術を革新的に適用し、メロディ、ボーカル、伴奏を保持しながら局所的な歌詞変更を可能に +- 🔄 生成されたコンテンツとアップロードされたオーディオの両方で機能し、創造的な可能性を大幅に向上 +- ℹ️ 現在の制限:歪みを避けるために一度に歌詞の小さなセグメントしか変更できませんが、複数の編集を順次適用可能 + +### 🚀 アプリケーション + +#### 🎤 歌詞からボーカル (LoRA) + +- 🔊 純粋なボーカルデータでファインチューニングされたLoRAに基づいており、歌詞から直接ボーカルサンプルを生成可能 +- 🛠️ ボーカルデモ、ガイドトラック、作曲支援、ボーカルアレンジメントの実験など、多数の実用的なアプリケーションを提供 +- ⏱️ 歌詞が歌われたときにどのように聞こえるかをすばやくテストする方法を提供し、ソングライターの反復作業を高速化 + +#### 📝 テキストからサンプル (LoRA) + +- 🎛️ 歌詞からボーカルに似ていますが、純粋な楽器データとサンプルデータでファインチューニングされています +- 🎵 テキスト記述から概念的な音楽制作用サンプルを生成可能 +- 🧰 楽器ループ、効果音、および制作用の音楽要素を迅速に作成するのに役立ちます + +### 🔮 近日公開予定 + +#### 🎤 RapMachine + +- 🔥 純粋なラップデータでファインチューニングされ、ラップ生成に特化したAIシステムを作成 +- 🏆 AIラップバトルやラップによる物語表現などの機能が期待されます +- 📚 ラップは卓越した物語性と表現力を持ち、並外れた応用可能性を提供します + +#### 🎛️ StemGen + +- 🎚️ 個々の楽器ステムを生成するためにマルチトラックデータでトレーニングされたcontrolnet-lora +- 🎯 参照トラックと指定された楽器(または楽器参照オーディオ)を入力として取ります +- 🎹 参照トラックを補完する楽器ステムを出力します。例えば、フルートのメロディにピアノ伴奏を作成したり、リードギターにジャズドラムを追加したりします + +#### 🎤 歌唱から伴奏へ + +- 🔄 StemGenの逆プロセスで、単一のボーカルトラックからミックスされたマスタートラックを生成 +- 🎵 ボーカルトラックと指定されたスタイルを入力として、完全なボーカル伴奏を生成 +- 🎸 入力ボーカルを補完する完全な楽器バッキングを作成し、あらゆるボーカル録音にプロ並みの伴奏を簡単に追加できます + +## 📋 ロードマップ + +- [x] トレーニングコードのリリース 🔥 +- [x] LoRAトレーニングコードのリリース 🔥 +- [ ] RapMachine LoRAのリリース 🎤 +- [ ] ControlNetトレーニングコードのリリース 🔥 +- [ ] Singing2Accompaniment ControlNetのリリース 🎮 +- [ ] 評価パフォーマンスと技術レポートのリリース 📄 + +## 🖥️ ハードウェアパフォーマンス + +ACE-Stepをさまざまなハードウェア設定で評価し、以下のスループット結果を得ました。 + +| デバイス | RTF (27ステップ) | 1分間のオーディオをレンダリングする時間 (27ステップ) | RTF (60ステップ) | 1分間のオーディオをレンダリングする時間 (60ステップ) | +| --------------- | -------------- | ------------------------------------- | -------------- | ------------------------------------- | +| NVIDIA RTX 4090 | 34.48 × | 1.74 秒 | 15.63 × | 3.84 秒 | +| NVIDIA A100 | 27.27 × | 2.20 秒 | 12.27 × | 4.89 秒 | +| NVIDIA RTX 3090 | 12.76 × | 4.70 秒 | 6.48 × | 9.26 秒 | +| MacBook M2 Max | 2.27 × | 26.43 秒 | 1.03 × | 58.25 秒 | + +ACE-Stepのパフォーマンスを測定するためにRTF (リアルタイムファクター) を使用します。値が高いほど、生成速度が速いことを示します。27.27xは、1分間の音楽を生成するのに2.2秒 (60/27.27) かかることを意味します。パフォーマンスは、バッチサイズ1、27ステップの単一GPUで測定されます。 + +## 📦 インストール + +### 1. リポジトリをクローンする +まず、ACE-Stepリポジトリをローカルマシンにクローンし、プロジェクトディレクトリに移動します。 +```bash +git clone https://github.com/ace-step/ACE-Step.git +cd ACE-Step +``` + +### 2. 前提条件 +以下がインストールされていることを確認してください。 + +* `Python`: バージョン3.10以降を推奨します。[python.org](https://www.python.org/) からダウンロードできます。 +* `Conda` または `venv`: 仮想環境を作成するため(Condaを推奨)。 + +### 3. 仮想環境のセットアップ + +プロジェクトの依存関係を管理し、競合を避けるために、仮想環境を使用することを強くお勧めします。次のいずれかの方法を選択してください。 + +#### オプションA: Condaを使用する + +1. Python 3.10で `ace_step` という名前の**環境を作成します**。 + ```bash + conda create -n ace_step python=3.10 -y + ``` + +2. **環境をアクティブ化します。** + ```bash + conda activate ace_step + ``` + +#### オプションB: venvを使用する + +1. **クローンしたACE-Stepディレクトリに移動します。** + +2. **仮想環境を作成します** (一般的に `venv` という名前)。 + ```bash + python -m venv venv + ``` + +3. **環境をアクティブ化します。** + * **Windows (cmd.exe):** + ```bash + venv\Scripts\activate.bat + ``` + * **Windows (PowerShell):** + ```powershell + .\venv\Scripts\Activate.ps1 + ``` + *(実行ポリシーエラーが発生した場合は、最初に `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process` を実行する必要がある場合があります)* + * **Linux / macOS (bash/zsh):** + ```bash + source venv/bin/activate + ``` + +### 4. 依存関係のインストール +仮想環境がアクティブ化されたら: +**a.** (Windowsのみ) WindowsでNVIDIA GPUを使用する予定の場合は、まずCUDAサポート付きのPyTorchをインストールします。 + +```bash +pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 +``` +(CUDAのバージョンが異なる場合はcu126を調整してください。他のPyTorchのインストールオプションについては、[公式PyTorchウェブサイト](https://pytorch.org/get-started/locally/) を参照してください)。 + +**b.** ACE-Stepとそのコア依存関係をインストールします。 +```bash +pip install -e . +``` + +ACE-Stepアプリケーションがインストールされました。GUIはWindows、macOS、Linuxで動作します。実行方法については、[使い方](#-使い方) のセクションを参照してください。 + +## 🚀 使い方 + +![デモインターフェース](assets/demo_interface.png) + +### 🔍 基本的な使い方 + +```bash +acestep --port 7865 +``` + +### ⚙️ 高度な使い方 + +```bash +acestep --checkpoint_path /path/to/checkpoint --port 7865 --device_id 0 --share true --bf16 true +``` + +macOSを使用している場合は、エラーを避けるために `--bf16 false` を使用してください。 + +#### 🔍 APIの使用方法 +ACE-Stepをライブラリとして独自のPythonプロジェクトに統合する場合は、次のpipコマンドを使用してGitHubから直接最新バージョンをインストールできます。 + +**pipによる直接インストール:** + +1. **Gitがインストールされていることを確認します:** この方法では、システムにGitがインストールされ、システムのPATHでアクセス可能である必要があります。 +2. **インストールコマンドを実行します:** + ```bash + pip install git+https://github.com/ace-step/ACE-Step.git + ``` + 他のパッケージとの競合を避けるために、このコマンドを仮想環境内で使用することをお勧めします。 + +#### 🛠️ コマンドライン引数 + +- `--checkpoint_path`: モデルチェックポイントへのパス (デフォルト: 自動的にダウンロード) +- `--server_name`: GradioサーバーがバインドするIPアドレスまたはホスト名 (デフォルト: '127.0.0.1')。ネットワーク上の他のデバイスからアクセス可能にするには '0.0.0.0' を使用します。 +- `--port`: Gradioサーバーを実行するポート (デフォルト: 7865) +- `--device_id`: 使用するGPUデバイスID (デフォルト: 0) +- `--share`: Gradio共有リンクを有効にする (デフォルト: False) +- `--bf16`: より高速な推論のためにbfloat16精度を使用する (デフォルト: True) +- `--torch_compile`: `torch.compile()` を使用してモデルを最適化し、推論を高速化する (デフォルト: False)。**Windowsではサポートされていません** + +## 📱 ユーザーインターフェースガイド + +ACE-Stepインターフェースには、さまざまな音楽生成および編集タスク用の複数のタブがあります。 + +### 📝 Text2Musicタブ + +1. **📋 入力フィールド**: + - **🏷️ タグ**: 説明的なタグ、ジャンル、またはシーンの説明をカンマで区切って入力します + - **📜 歌詞**: [verse]、[chorus]、[bridge] などの構造タグ付きで歌詞を入力します + - **⏱️ オーディオの長さ**: 生成されるオーディオの希望の長さを設定します (-1でランダム) + +2. **⚙️ 設定**: + - **🔧 基本設定**: 推論ステップ、ガイダンススケール、シードを調整します + - **🔬 詳細設定**: スケジューラタイプ、CFGタイプ、ERG設定などを微調整します + +3. **🚀 生成**: 「Generate」をクリックして、入力に基づいて音楽を作成します + +### 🔄 Retakeタブ + +- 🎲 異なるシードを使用して、わずかなバリエーションで音楽を再生成します +- 🎚️ 分散を調整して、リテイクがオリジナルとどの程度異なるかを制御します + +### 🎨 Repaintingタブ + +- 🖌️ 音楽の特定の部分を選択的に再生成します +- ⏱️ リペイントするセクションの開始時間と終了時間を指定します +- 🔍 ソースオーディオ(text2music出力、最後のリペイント、またはアップロード)を選択します + +### ✏️ Editタブ + +- 🔄 タグや歌詞を変更して既存の音楽を修正します +- 🎛️ 「only_lyrics」モード(メロディを保持)または「remix」モード(メロディを変更)を選択します +- 🎚️ 編集パラメータを調整して、オリジナルのどの程度を保持するかを制御します + +### 📏 Extendタブ + +- ➕ 既存の曲の最初または最後に音楽を追加します +- 📐 左と右の拡張長さを指定します +- 🔍 拡張するソースオーディオを選択します + +## 📂 例 + +`examples/input_params` ディレクトリには、音楽生成の参照として使用できるサンプル入力パラメータが含まれています。 + +## 🏗️ アーキテクチャ + +

+ ACE-Step フレームワーク +

+ +## 🔨 トレーニング + +### 前提条件 +1. インストールセクションで説明されているように環境を準備します。 + +2. LoRAモデルをトレーニングする予定の場合は、PEFTライブラリをインストールします。 + ```bash + pip install peft + ``` + +3. Huggingface形式でデータセットを準備します ([Huggingface Datasetsドキュメント](https://huggingface.co/docs/datasets/index))。データセットには次のフィールドが含まれている必要があります。 + - `keys`: 各オーディオサンプルの固有識別子 + - `filename`: オーディオファイルへのパス + - `tags`: 説明的なタグのリスト (例: `["pop", "rock"]`) + - `norm_lyrics`: 正規化された歌詞テキスト + - オプションのフィールド: + - `speaker_emb_path`: 話者埋め込みファイルへのパス (利用できない場合は空文字列を使用) + - `recaption`: さまざまな形式の追加のタグ説明 + +データセットエントリの例: +```json +{ + "keys": "1ce52937-cd1d-456f-967d-0f1072fcbb58", + "filename": "data/audio/1ce52937-cd1d-456f-967d-0f1072fcbb58.wav", + "tags": ["ポップ", "アコースティック", "バラード", "ロマンティック", "エモーショナル"], + "speaker_emb_path": "", + "norm_lyrics": "愛してる、愛してる、愛してる", + "recaption": { + "simplified": "ポップ", + "expanded": "ポップ, アコースティック, バラード, ロマンティック, エモーショナル", + "descriptive": "音は柔らかく優しく、静かな夜の優しいそよ風のようです。それは心地よく、切望に満ちています。", + "use_cases": "ロマンティックな映画のBGMや親密な瞬間に適しています。", + "analysis": "ポップ, バラード, ピアノ, ギター, 遅いテンポ, ロマンティック, エモーショナル" + } +} +``` + +### トレーニングパラメータ + +#### 共通パラメータ +- `--dataset_path`: Huggingfaceデータセットへのパス (必須) +- `--checkpoint_dir`: ベースモデルのチェックポイントを含むディレクトリ +- `--learning_rate`: トレーニングの学習率 (デフォルト: 1e-4) +- `--max_steps`: トレーニングの最大ステップ数 (デフォルト: 2000000) +- `--precision`: トレーニング精度、例: "bf16-mixed" (デフォルト) または "fp32" +- `--devices`: 使用するGPUの数 (デフォルト: 1) +- `--num_nodes`: 使用する計算ノードの数 (デフォルト: 1) +- `--accumulate_grad_batches`: 勾配累積ステップ (デフォルト: 1) +- `--num_workers`: データローディングワーカーの数 (デフォルト: 8) +- `--every_n_train_steps`: チェックポイント保存頻度 (デフォルト: 2000) +- `--every_plot_step`: 評価サンプルの生成頻度 (デフォルト: 2000) +- `--exp_name`: ロギング用の実験名 (デフォルト: "text2music_train_test") +- `--logger_dir`: ログ保存用ディレクトリ (デフォルト: "./exps/logs/") + +#### ベースモデルのトレーニング +次でベースモデルをトレーニングします: +```bash +python trainer.py --dataset_path "path/to/your/dataset" --checkpoint_dir "path/to/base/checkpoint" --exp_name "your_experiment_name" +``` + +#### LoRAトレーニング +LoRAトレーニングには、LoRA設定ファイルを提供する必要があります: +```bash +python trainer.py --dataset_path "path/to/your/dataset" --checkpoint_dir "path/to/base/checkpoint" --lora_config_path "path/to/lora_config.json" --exp_name "your_lora_experiment" +``` + +LoRA設定ファイルの例 (lora_config.json): +```json +{ + "r": 16, + "lora_alpha": 32, + "target_modules": [ + "speaker_embedder", + "linear_q", + "linear_k", + "linear_v", + "to_q", + "to_k", + "to_v", + "to_out.0" + ] +} +``` + +### 高度なトレーニングオプション +- `--shift`: フローマッチングシフトパラメータ (デフォルト: 3.0) +- `--gradient_clip_val`: 勾配クリッピング値 (デフォルト: 0.5) +- `--gradient_clip_algorithm`: 勾配クリッピングアルゴリズム (デフォルト: "norm") +- `--reload_dataloaders_every_n_epochs`: データローダーをリロードする頻度 (デフォルト: 1) +- `--val_check_interval`: 検証チェック間隔 (デフォルト: None) + +## 📜 ライセンスと免責事項 + +本プロジェクトは [Apache License 2.0](./LICENSE) の下でライセンスされています。 + +ACE-Stepは、創造的な制作、教育、エンターテイメントにおける応用を伴い、多様なジャンルにわたるオリジナル音楽の生成を可能にします。肯定的かつ芸術的なユースケースをサポートするように設計されていますが、スタイルの類似性による意図しない著作権侵害、文化要素の不適切な混合、有害コンテンツ生成のための誤用などの潜在的なリスクを認識しています。責任ある使用を確実にするために、生成された作品の独創性を検証し、AIの関与を明確に開示し、保護されたスタイルや素材を改作する際には適切な許可を得ることをユーザーに奨励します。ACE-Stepを使用することにより、これらの原則を支持し、芸術的完全性、文化的多様性、および法的コンプライアンスを尊重することに同意するものとします。著者らは、著作権侵害、文化的無神経さ、または有害コンテンツの生成を含むがこれらに限定されない、モデルのいかなる誤用についても責任を負いません。 + +🔔 重要なお知らせ +ACE-Stepプロジェクトの唯一の公式サイトは、当社のGitHub Pagesサイトです。 +他のウェブサイトは運営しておりません。 +🚫 偽のドメインには、以下が含まれますが、これらに限定されません。 +ac\*\*p.com, a\*\*p.org, a\*\*\*c.org +⚠️ ご注意ください。これらのサイトにアクセスしたり、信頼したり、支払いをしたりしないでください。 + +## 🙏 謝辞 + +本プロジェクトはACE StudioとStepFunが共同で主導しています。 + +## 📖 引用 + +本プロジェクトがあなたの研究に役立つ場合は、以下の引用をご検討ください: + +```BibTeX +@misc{gong2025acestep, + title={ACE-Step: A Step Towards Music Generation Foundation Model}, + author={Junmin Gong, Wenxiao Zhao, Sen Wang, Shengyuan Xu, Jing Guo}, + howpublished={\url{https://github.com/ace-step/ACE-Step}}, + year={2025}, + note={GitHubリポジトリ} +} +``` \ No newline at end of file