
這次的目標很明確把 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》時再對照著一步一步來。