跳到主要内容
AI教程

将歌曲录音转换为可演奏的五声部乐队谱

了解如何设置 Audio to Band Score,使用 Demucs 分析混音录音,引导智能代理创作实用的五人乐队编曲,检查 MuseScore 文件,并导出可用于排练的 MIDI、PDF 和 MSCZ 文件。

将歌曲录音转换为可演奏的五声部乐队谱

什么是音频转乐队总谱?

音频转乐队总谱是一项智能体技能,可将完成的歌曲录音转换为适合五人制学校乐队的实用编曲。它不会直接提供原始分轨,也不会把自动 MIDI 识别结果视为完成的转谱,而是引导智能体完成源分离、音乐分析、乐器分配、制谱、质量检查以及 MuseScore 导出。

标准工作流会生成三个可用于排练的文件:用于播放或 DAW 检查的 MIDI 文件、可打印的 PDF 总谱,以及可编辑的原生 MuseScore MSCZ 文件。

重要提示:本项目是一项智能体技能,而不是独立的桌面应用程序。你必须将仓库提供给兼容的智能体运行时,并提供所需的本地音频和制谱工具。

编曲工作流如何运作

该技能遵循分阶段流程:

混音录音
    → 时间对齐的源分离
    → 节拍、段落、和声与候选音符分析
    → 乐器分配与可演奏性调整
    → MuseScore 制谱
    → 结构审计及视觉/文件检查
    → MIDI + PDF + 可编辑 MSCZ

其指导原则是可演奏的忠实还原。目标是在保留录音结构、和声进行、律动、易于识别的即兴乐句和重要过渡的同时,简化或重新分配对目标乐手而言不切实际的细节。

《海阔天空》Beyond 编曲的总谱片段

主要功能

  • 使用 Demucs 将混音录音分离为时间对齐的分析分轨。
  • 可比较四源和六源分离结果。
  • 分析段落、候选速度、拍号、和声、贝斯进行、即兴乐句、填充以及乐器进入点。
  • 将音乐素材分配给主音吉他、节奏吉他、贝斯、键盘和鼓。
  • 支持初级、学校业余中级和高级难度目标。
  • 创建结构化、可编辑的 MuseScore 乐谱,而不是直接交付未经编辑的识别结果。
  • 检查总谱结构、选定 TAB 的音高与琴弦关系、导出安全性以及文件一致性。
  • 默认使用本地免费工具,而不是将音频上传到付费外部 API。

默认五声部乐器编制

默认总谱用于为歌手伴奏,但除非请求改变这一行为,否则器乐总谱不包含人声线。人声轨道仅用于识别歌曲结构、换气空间和乐器进入点。

  • 主音吉他:使用六弦节奏 TAB 演奏标志性即兴乐句、主题动机、填充和器乐主题。
  • 节奏吉他:使用六弦节奏 TAB 演奏和弦、扫弦、琶音并提供律动支持。
  • 贝斯:使用四弦节奏 TAB 演奏根音进行、过渡和低音区律动。
  • 键盘:使用大谱表记谱表现和声、铺底、对位线和键盘专属动机。
  • 鼓:使用标准五线鼓谱记谱表现律动、重音、过渡和填充。

用户指定的乐器编制、调弦、调性、难度、时长和编曲限制优先于这些默认设置。

安装与本地设置

1. 克隆仓库

git clone https://github.com/kiri603/To-Sheet-Music-Skill.git
cd To-Sheet-Music-Skill

2. 创建 Python 环境

推荐使用 Python 3.11 作为兼容性基线。请创建专用虚拟环境,以免 Demucs 和支持包干扰其他 Python 项目。

python3.11 -m venv work/audio-env
source work/audio-env/bin/activate
python -m pip install demucs numpy soundfile imageio-ffmpeg

在 Windows 上,请使用 work/audio-env/Scripts/ 下的 Python 和激活可执行文件。安装前,请确认这些软件包与计算机上安装的 Python 解释器兼容。

3. 安装外部依赖

  • FFmpeg:音频解码所必需。它可以来自操作系统、通过 --ffmpeg 明确指定的路径,或来自 imageio-ffmpeg。
  • MuseScore Studio:用于打开乐谱并导出 MIDI 和 PDF 文件。
  • 可选分析工具:根据任务需要,你可以使用 librosa、basic-pitch、pretty_midi、mido、music21、pypdf 或 Poppler。
  • CUDA:可选。如果没有兼容的 GPU,分离工作流也可以在 CPU 上运行。

仓库不会自动安装软件,也不会捆绑模型权重。需要的模型权重会在运行时由本地环境下载。

4. 让智能体使用该技能

该技能围绕 SKILL.md 和 agents/openai.yaml 组织。请根据所用运行时的技能加载流程,将仓库添加到智能体运行时或向其公开。由于不同运行时的机制不同,仓库不会为此步骤规定通用安装命令。

基本用法:请求编曲

技能可用后,将源录音和清晰的编曲请求提供给智能体。例如:

使用 $audio-to-band-score,将 "song.wav" 编配为主音吉他、节奏吉他、
贝斯、键盘和鼓,难度采用默认的学校业余中级水平。
保留原歌曲结构和易于识别的即兴乐句,然后交付 MIDI、
PDF 和可编辑的 MSCZ 文件。

一份有用的请求应明确输入文件、所用乐器、演奏者水平,以及最重要的音乐特征。如适用,还应说明目标调性、吉他或贝斯调弦、编曲长度、删减部分、重复段落或其他演奏限制。

Koe 编曲《声》的乐谱节选

直接运行源分离

如果你想在完成编曲前检查或准备分析分轨,可以单独运行源分离辅助工具:

python scripts/separate_audio.py \
  --input "path/to/song.wav" \
  --out-dir "work/separation-v1" \
  --profile high \
  --device auto

high 配置会同时运行四源和六源 Demucs 分析,以便比较两者的证据。balanced 配置只运行六源分析,适用于内部试验或资源受限的系统。

输出目录必须是新目录。该辅助工具会有意拒绝覆盖已有目录,以保护之前的分轨和分析证据。每次运行请选择带版本号的路径,例如 work/separation-v1 或 work/separation-v2。

审查已完成的 MuseScore 文件

代理创建 work/final.mscz 后,请在导出交付文件前运行审查辅助工具:

python scripts/score_tools.py audit \
  --score "work/final.mscz" \
  --report "work/audit.json"

审查会执行结构检查和选定的 TAB 检查,包括音高、琴弦和品位之间的关系。它可以识别技术上的不一致,但不能证明每个音符、节拍、演奏法或组合乐器段落在音乐上都正确。

导出 MIDI、PDF 和 MSCZ

从同一个原生 MuseScore 文件导出所有格式,确保可打印、可播放和可编辑的版本保持一致:

python scripts/score_tools.py export \
  --score "work/final.mscz" \
  --out-dir "work/export-v1" \
  --name "song_band" \
  --musescore "/path/to/MuseScore"

导出辅助工具不会覆盖已有输出目录。只有在三个请求的格式全部成功生成后,它才会发布新目录。

  • song_band.mid 用于播放以及 DAW 或 MIDI 检查。
  • song_band.pdf 用于打印排练乐谱。
  • song_band.mscz 用于提供可编辑的原生 MuseScore 项目。

工作目录还可能包含 manifest.json、分离后的 WAV 分轨、分析笔记、MIDI 候选文件、MusicXML、审查报告和渲染后的 PDF 页面。除非用户要求将其作为交付文件,否则这些文件都作为证据和质量保证材料使用。

Haruhikage 编曲《春日影》的乐谱节选

获得更佳结果的进阶技巧

撰写精准的编曲说明

不要只依赖“转录一首歌”这样的笼统请求。请说明谁将演奏成品,以及他们能够演奏什么。例如,区分初学者谱例和高级谱例,说明非标准调弦,并指出必须保持可辨识度的即兴乐句或过渡段。

将分离后的分轨视为证据

标记为 guitar 或 piano 的六源输出只是候选结果,并不保证是完全隔离的乐器声部。吉他分轨不应自动被解读为一份完整的吉他声部,也不能据此证明存在两份独立的吉他声部。请结合原始混音、重复段落、和声语境、节奏以及特定乐器的限制,对候选结果进行交叉核对。

保持时间线一致

该工作流会让所有分轨保持在同一时间线上,并检查其采样率、声道布局和帧数。除非同时保持它们与源录音的对齐关系,否则应避免手动裁剪或移动单个分轨。

使用带版本号的工作目录

由于分离和导出辅助工具拒绝覆盖已有目录,请使用 separation-v1、separation-v2、export-v1 和 export-v2 等名称。这也便于比较配置设置,并保留早期尝试的证据。

自动检查后从音乐角度审阅乐谱

审查成功只能验证选定的结构和记谱属性,并不代表音乐完美无误。请试听 MIDI、检查 PDF、在 MuseScore 中打开 MSCZ 文件,并确认乐队的进入、过渡、重复、吉他指法、键盘织体、贝斯进行和鼓组填充都切实可演奏。

保留一个权威的乐谱源文件

在原生 MSCZ 乐谱中完成最终修正,然后从同一文件重新生成 MIDI 和 PDF。分别编辑导出的格式可能导致三个交付文件彼此不一致。

运行测试套件

从仓库根目录运行随附的测试:

python -m unittest discover -s scripts -p "test_*.py" -v

测试涵盖分离边界情况、有界的模型下载重试、时间线验证、TAB 音高和琴弦检查、乐谱结构检查以及导出保护机制。测试通过表示辅助工具工作流按预期运行;它并不衡量转录准确度或编曲质量。

限制与负责任的使用

  • 本项目不保证转录无误或音频完全保真。
  • 自动化检查无法替代音乐聆听和乐谱审核。
  • 该工作流不提供语音转文字、歌词翻译或乐谱下载功能。
  • 仓库中不包含模型权重,必要时可能会按需下载。
  • 该仓库目前没有项目级许可证文件,因此不要假定其中的代码或资源可以再分发。
  • 第三方工具、模型、数据集和录音均受其各自许可证及使用条款约束。

仅处理你有权使用的录音和参考材料。不要将私人录音、凭据、模型缓存、生成的 Python 缓存或大型临时文件提交到仓库。

结语

Audio to Band Score 提供了一条严谨的路径,可将混合录音转换为可编辑、面向排练的五声部编曲。它的主要价值不在于完全自动化的转录,而在于结合了源分离证据、明确的音乐决策、以演奏性为重点的编曲、结构检查以及一致的 MuseScore 导出。若要获得可靠结果,请为代理提供精准的任务说明,保留分析证据,运行审计和测试,并以人工音乐审核收尾。