ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

从音频分离到MIDI编配:《Sunset of Seven Suns》扒谱实战

从音频分离到MIDI编配:《Sunset of Seven Suns》扒谱实战 这次的目标很明确把 Deltarune 相关素材里的《Sunset of Seven Suns》扒成 MIDI 和五线谱而不是只停留在“听个大概”的阶段。扒谱本身不是单步操作我把它拆成四段音频分离、AI 音符转录、手动听辨、MIDI 编配。整套流程在普通 PC 上就能跑AI 部分有 NVIDIA GPU 会明显更快没有 GPU 用 CPU 也能出结果代价是等待时间变长。如果你以前只会用耳朵硬扒这篇会把能交给工具的部分都交出去同时保留人工复核的关键环节。先说结论不存在“一键扒谱”的黑盒。Demucs、Basic Pitch 这些工具能快速给出候选信息但最终准确率取决于两步——分离出来的音轨干不干净以及你愿不愿意花时间对着频谱和节拍器做修正。下面按完整流程走一遍环境准备、音频分离、自动转录、听辨校音、MIDI 重建、乐谱导出最后是常见问题排查和一批实战建议。照着流程跑完你应该能拿到一份可播放、可编辑的《Sunset of Seven Suns》扒谱产物。1. 扒谱工作流核心能力速览先给一张速览表方便你判断这套流程适不适合现在的需求。维度说明扒谱对象Deltarune 相关音乐素材《Sunset of Seven Suns》输出产物MIDI 文件、五线谱 PDF、DAW 编配工程核心工具链ffmpeg、Audacity、Demucs、Basic Pitch、DAW、MuseScore硬件下限普通 PC 可跑建议内存 16GB 左右AI 加速条件NVIDIA GPU CUDA 可加速 Demucs 与 Basic Pitch是否需要音乐基础需要基础音高和节奏概念工具能降低门槛但无法完全替代判断是否支持批量处理支持通过脚本循环处理多个音频片段主要风险AI 转录会出大量候选音符错音、碎音必须人工清理这套流程的定位是“半自动扒谱”工具负责降低体力劳动耳朵负责最终验收。越到后面的步骤人工听辨的比重越高这也是扒谱质量提升最明显的环节。2. 适用场景与版权边界这套流程适合的典型场景包括想学编曲的人通过扒谱分析 Deltarune 风格的旋律走向、和声进行和编配层次。游戏音乐分析者需要把音频转成可观察的 MIDI做动机对比和结构分析。MIDI 制作者需要一份能二次编辑的 MIDI 文件用于换音色、重编曲或做钢琴改编。视频与教学内容创作者想把原曲片段做成可视化谱例或做逐句讲解。不适合的场景很简单如果你想要“点一下自动输出完美谱面”的工具这套流程做不到目前市面上也很难有可靠的纯自动方案。AI 转录工具会给你大量音符但里面通常混着和声泛音、混响尾音和识别错误必须用耳朵筛一遍。版权边界这里必须说清楚。Deltarune 及其音乐素材的版权归于原作者和相应权利方。《Sunset of Seven Suns》的扒谱结果本质上是对原曲的转录演绎。个人学习、编曲分析、内部研究通常可以接受如果要公开发布乐谱、MIDI、翻奏视频或者把扒谱结果用于商业项目请先确认原曲方的授权要求。二次创作视频里建议标注原曲名称、作者和版权归属不要把自己的扒谱结果包装成官方谱。涉及音频素材的下载和使用也请确保来源合法。3. 环境准备与前置条件在开始扒谱之前先把基础环境准备好。操作系统用 Windows、macOS、Linux 都可以以下命令在 Windows PowerShell 和 macOS/Linux 终端里略有差异需要注意区分。首先检查基础命令是否可用ffmpeg -version python --version pip --version nvidia-smiffmpeg 负责音频格式转换和剪辑Python 环境用于运行 Demucs 和 Basic Pitch。如果你用的是 NVIDIA 显卡nvidia-smi能看到驱动版本和显存信息方便后面判断 GPU 是否可用。接下来创建独立虚拟环境避免依赖冲突python -m venv venv # Windows venv\Scripts\activate # macOS / Linux source venv/bin/activate然后安装两个核心 Python 工具pip install demucs basic-pitch如果安装速度慢可以先把 pip 源切到国内镜像再执行安装。安装完成后确认版本demucs --help basic-pitch --help两者能正常打印帮助信息说明环境基本就绪。音频素材准备也在这步做。如果你手里是视频文件先用 ffmpeg 提成双声道 WAVffmpeg -i source_video.mp4 -ac 2 -ar 44100 input.wav如果你打算只扒分段可以先把长音频裁成若干小段再进入后续流程。4. 音频分离Demucs 部署与分轨验证扒谱第一道工序是“拆轨”。完整混音里乐器叠在一起AI 直接识别容易把钢琴音、贝斯音、打击乐音混成一片。先用音乐源分离模型把频段和声源拆开后面转录会干净很多。Demucs 的默认模型是 htdemucs支持鼓、贝斯、人声、其他四轨分离。直接运行demucs input.wav -o separated运行完成后输出目录结构通常是separated/htdemucs/input/ ├── bass.wav ├── drums.wav ├── other.wav └── vocals.wav如果原曲没有人声vocals.wav可能是空泛音或者很薄这是正常现象。重点看bass.wav低音声部和other.wav键盘、弦乐、合成器之类的中高频声部。对于《Sunset of Seven Suns》这类以氛围和旋律见长的素材other.wav通常是最值得听的一轨。分离完成后不要急着转录。先用播放器或 Audacity 听一遍分离结果bass.wav里是否还有明显鼓声有的话说明分离不彻底。other.wav是否有严重的金属感或频段缺失说明模型对某些音色处理不佳。整体是否音量过小可以用 ffmpeg 做增益或直接在 DAW 里调。如果分离质量不够好可以换参数重新跑。例如只拆成人声和伴奏两轨demucs --two-stemsvocals input.wav -o separated这种模式对纯 BGM 素材不一定更优但值得试。分离质量的判断标准就一条能不能在某一轨里清楚听到你这次要扒的声部。需要提示的是Demucs 是个计算密集型模型。GPU 存在时它会默认尝试用 CUDA没有 GPU 就自动落到 CPU速度慢很多。长音频尤其明显可以先裁剪成 30 到 60 秒的片段再逐个分离避免单次任务排队太久。5. AI 音符转录Basic Pitch 使用与批量脚本分轨完成后进入自动转录环节。这里用 Spotify 开源的 Basic Pitch它对单音乐器轨的转录效果比直接转完整混音好很多。Basic Pitch 支持命令行和 Python API 两种方式。先用命令行跑一次确认输出效果。basic-pitch /path/to/bass.wav /path/to/output_dir不同版本的具体参数略有区别先运行basic-pitch --help查看当前版本支持的选项。运行完会得到多个文件主要包括MIDI 文件核心结果音符事件序列。CSV 文件每个音符的时间、音高、力度。模型输出文件可选用于调试。不要在完整混音文件上直接跑。我的建议是分别对bass.wav和other.wav各跑一次再分别人工检查。要扒完整首曲子建议把音频切成 16 到 32 秒的乐句。这样既方便听辨也能避免长时间音频带来的显存和内存压力。手动一段段跑会累。下面给一个批量处理的 Python 脚本用 subprocess 调用 Demucs 和 Basic Pitchimport subprocess from pathlib import Path chunk_dir Path(./chunks) # 放切好的音频片段 separated_dir Path(./separated) # Demucs 输出目录 transcribe_dir Path(./transcribed) # Basic Pitch 输出目录 transcribe_dir.mkdir(exist_okTrue) for wav in sorted(chunk_dir.glob(*.wav)): print(fprocess: {wav.name}) # 1. Demucs 分离 subprocess.run( [demucs, str(wav), -o, str(separated_dir)], checkTrue, ) # 2. 对贝斯轨转录 bass_path separated_dir / htdemucs / wav.stem / bass.wav if bass_path.exists(): target transcribe_dir / f{wav.stem}_bass subprocess.run( [basic-pitch, str(bass_path), str(target)], checkTrue, )这个脚本没有处理失败重试真正批量跑的时候建议每段都输出日志失败后单独记录。使用类似结构时把路径和命令参数替换成你自己环境里的实际配置即可。转录之后不要去直接使用 MIDI。Basic Pitch 输出的音符往往很碎会出现同一个音被切成多个短音符泛音被识别成高八度或额外音符混响尾音被当成延长音。所以在进入 DAW 前先用脚本或编辑器做一次基础清洗删掉低力度短时值音符再人工打开 MIDI 检查。6. 手动听辨与和声分析自动转录只是初稿决定扒谱上限的是人工听辨。第 6 章解决三个核心问题曲速、旋律音高、和声性质。先定速。把分离出来的other.wav或原曲拖进 DAW在时间轴开头设置拍号然后播放录音用节拍器慢慢对齐。不要凭感觉猜 BPM最好手动点几段确认速度是否稳定。如果原曲有变速还需要用 DAW 的节拍映射tempo map功能逐段标记。定调。听完整段主旋律留意最后落点落音。把旋律里出现频率最高的音和结束音对照多数情况下结束音就是主音。比如旋律明显落在 C并且全曲音阶素材基本来自 C 大调那可以初步判断是 C 大调如果再发现很多黑键和半音进行就考虑关系小调或转调、离调。旋律扒写。在 DAW 里加载主旋律轨开启慢放功能把速度调到 50% 甚至更低同时保持音高不变。大多数 DAW 都有这个选项名字可能是 Repitch、Elastic、Flex Time。逐句听逐音在钢琴卷帘里点出来。如果某个音不确定使用频谱工具看基频比如 A2 是 110HzA3 是 220HzA4 是 440Hz基频位置可以直接告诉你音名。低音扒写。低音是判断和弦的基础。用分离好的bass.wav把 EQ 调到 60Hz 到 300Hz 增强听根音走向。不要一次性听整段按小节记。贝斯音通常每小节一两个音先把根音记准后面和弦性质才好判断。和弦分析。拿到旋律和低音后开始标和弦。常见步骤先根据贝斯根音锁定每个和弦的根音再根据旋律里的强拍音判断这个和弦是包含该音的大调、小调还是七和弦最后用“听感是否符合小节情绪”来复核。举个例子如果某小节贝斯根音是 C旋律强拍音是 E那么这个位置大概率是 C 大调主和弦如果旋律强拍音是 Eb则可能变成 C 小调。这只是示例具体要对到原曲实际听感。这个阶段可以借助 DAW 里的调性检测插件但插件结果仅供参考。和声判断最终要回到“低音 旋律 听感”三者一致。7. MIDI 重建、编配与乐谱导出人工听辨完成之后把初稿 MIDI 重新整理成更接近原曲的成品。这部分在 DAW 里完成推荐流程如下。首先建立声部轨道主旋律轨通常用 Lead 音色或钢琴音色。副旋律轨如果有对位旋律单独一轨。低音轨贝斯根音。和声轨pad 或弦乐长音。打击乐轨如果有鼓尽量还原节奏型和镲片。然后从钢琴卷帘里修音符。第一步做量化参考你之前确认的最小音符时值通常是八分或十六分音符。量化不要拉满保留一点点人性化偏移否则听起来会很呆。第二步调力度把每段旋律的起伏做出来强拍音力度大一些过渡音弱一些。第三步检查音符重叠避免同一个 MIDI 音符叠了两个同音高的短音。编配阶段可以不用追求“一个音不差”。扒谱的目的是理解原曲只要旋律、低音、和弦和整体节奏型准确剩余细节可以按需保留。MIDI 整理完成后生成五线谱。推荐用 MuseScore 这类免费制谱软件导入 MIDIMuseScore 支持直接打开 MIDI 文件。整理谱面检查调号、拍号、声部分配、连音线、踏板标记。导出 PDF在 GUI 里通过文件导出即可部分版本也支持命令行转换具体以你安装的版本帮助信息为准。# 命令行导出示例不同版本参数可能不同请以本机帮助为准 musescore4 midi_output.mid -o score.pdf导出后检查谱面。如果五线谱上出现大量不合理的增时线、休止符移位、空拍错位多半是 MIDI 量化残留问题回到 DAW 再修一遍不要直接拿这个谱面发布。成品验证用一个 A/B 对比方法在 DAW 里把原曲放在 A 轨MIDI 编配放在 B 轨同步播放逐段切换静音对比旋律轮廓、低音进行、和弦色彩是否一致。不一致的地方在钢琴卷帘里直接改改完再听直到每个乐句闭合。8. 资源占用与性能观察这套流程里最吃资源的是 Demucs 和 Basic PitchDAW 和 MuseScore 反而压力不大。如果你准备批量扒长曲资源占用要提前心里有数。先看 GPU。安装好显卡驱动后在另一个终端窗口运行nvidia-smi -l 1每秒刷新一次显存和 GPU 利用率。Demucs 跑长音频时显存占用会明显上升具体数值和音频时长、模型尺寸、批处理大小直接相关不能一概而论。CPU 跑则看任务管理器或top的 CPU 占用通常会把多核打满。降低负载的方法把音频切成 30 到 60 秒片段逐段处理分离和转录分开跑不要同时开多个任务不需要转鼓的话先用--two-stemsvocals或只分离需要的声部转录时只投喂单乐器轨不要投喂完整混音批量脚本里加sleep间隔避免短时间连续启动多个任务导致资源耗尽。显存不足时优先缩短音频长度而不是降采样率。44.1kHz 的音频信息密度已经足够降采样到 22050Hz 虽然能省内存但会损失高频泛音影响音高判断。端口和服务问题在扒谱场景不常见但如果你把转录封装成 Web 服务或 API 给团队用就要注意并发任务和日志记录避免长时间任务把线程池占死。9. 常见问题与排查方法扒谱过程会遇到的问题集中在依赖、分离质量、转录碎音和听辨偏差上。下面列成表格方便对照排查。问题现象可能原因排查方式解决思路Demucs 安装失败或下载模型慢PyPI 源慢、依赖冲突查看 pip 安装日志切换国内 pip 镜像源手动放置模型缓存Demucs 输出杂音明显输入音频本身带压缩噪底听原始 WAV确认素材质量先做降噪或 EQ 处理再重新分离分离结果里人声混入伴奏轨模型分离能力有上限用频谱查看对应频段换成两轨分离或者按频段手动补切Basic Pitch 输出音符太碎混响、延音、泛音干扰打开 MIDI 钢琴卷帘查看只对分离后的单乐器轨转录调高音符置信度阈值BPM 对不上原曲变速或无鼓点手动点拍逐段标记在 DAW 中建立速度映射不依赖自动测速低音听不清监听耳机低频不足使用频谱工具看基频用 EQ 提升 60Hz 到 300Hz单独听 bass 轨和弦判断反复出错只靠旋律音判断忽略低音先写贝斯根音再配和弦性质根音 三音 强拍旋律音三者对齐后再定MIDI 导入 MuseScore 谱面混乱量化不严、声部未分轨检查 MIDI 事件时值和力度回到 DAW 修正量化按声部分开 MIDI 通道CUDA 相关报错驱动、PyTorch 版本不匹配运行 nvidia-smi 查看 CUDA 版本按项目要求的 CUDA 版本重装 PyTorch或暂时用 CPU 推理批量任务中途卡死内存不足、显存不足查看系统日志和资源监控缩短音频片段增加批处理失败重试逻辑最终 MIDI 与原曲听感差异大音色、力度、混音差异A/B 对比播放优先确认旋律和低音再补力度和表情细节一个容易忽略的点是如果分离出来的某一轨明显失真或缺失频段不要硬用回去调整分离参数。自动转录工具对输入质量非常敏感输入轨不干净输出必然乱。10. 扒谱最佳实践与后续扩展最后这部分是给实际操作时用的建议。第一次不建议直接扒全曲先挑 16 到 32 秒的完整乐句走完“分离、转录、人工修、导出”的闭环。跑通以后再扩展到整首。工程目录建议这样规划project/ ├── source/ # 原始音频素材 ├── chunks/ # 切分后的音频片段 ├── separated/ # Demucs 分轨结果 ├── transcribed/ # Basic Pitch 转录结果 ├── midi/ # 人工整理后的 MIDI ├── score/ # 导出的 PDF 乐谱 └── logs/ # 批量任务日志分目录管理的好处是中途某一步的生成结果可以被反复对比不用从零重跑。批量任务一定要加日志和失败重试长时间任务如果中途断了至少能定位到哪一段出问题而不是全部重来。音乐素材的授权问题要始终保持敏感。扒谱结果可以用于个人学习和分析公开传播前务必确认原曲版权许可。如果要把 MIDI 或乐谱发布到社区最好附上原曲信息、扒谱者信息和“仅限学习交流”的说明。后续可以继续扩展的方向有几条把 MIDI 导入不同音源做钢琴改编版或电子重编曲导出 MusicXML配合教学工具做逐句讲解把分离和转录封装成 Python 服务接入自己的批处理流程对比不同 AI 转录模型的效果找一个最适合 Deltarune 风格音频的组合。扒谱这件事工具能帮你省掉大量重复劳动但决定准确度上限的仍然是监听和判断。先跑通这篇的完整流程再针对曲目特点调整参数你会慢慢找到属于自己的扒谱节奏。整个过程最值得花时间的不是安装和命令而是第 6 章那部分静下来听音的环节。建议先收藏这份流程等真正动手扒《Sunset of Seven Suns》时再对照着一步一步来。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表