madderscientist/noteDigger
在线前端频谱分析扒谱 front-end music transcription
noteDigger – 前端音訊轉MIDI工具
功能說明
- 一個純JavaScript網頁應用,支援上傳音訊(或影片)檔案,可視化其頻譜圖,並手動或自動提取音樂音符。
- 提取的音符可透過豐富的滑鼠/鍵盤快速鍵進行編輯,然後匯出為標準MIDI檔案,或儲存為可後續繼續編輯的自訂二進位「.nd」專案檔案。
為何重要
- 多數音訊轉MIDI工具是重量級桌面程式或雲端服務。noteDigger 完全在瀏覽器中執行,無需外部函式庫或框架,因此體積極小(僅幾MB),但仍提供高階功能,如GPU加速的STFT/CQT、基於神經網路的轉錄、以及諧波去除。
- 透過將整個工作流程保留在客戶端,保護使用者隱私(音訊從不離開本機),並在初始頁面載入後支援離線使用。
核心功能(詳見README)
| 功能 | 工作方式 / 提供內容 |
|---|---|
| 音訊匯入 | 支援拖曳或檔案選單上傳MP3、WAV,甚至影片檔案(MP4、MOV等)。 |
| 頻譜圖分析 | 實時STFT;可選CQT(恆Q變換),可透過WebGPU實現GPU加速。 |
| 自動處理 | • 使用NNLS(非負最小平方法)進行諧波去除,以增強基頻。 • 使用傳統訊號處理演算法進行節拍追蹤與速度檢測。 • 使用兩個ONNX模型進行AI輔助轉錄:basicamt(與樂器無關的音高轉錄)和 septimbre(樂器分離轉錄)。 |
| 手動編輯 | 可在時間-頻率畫布上直接繪製音符;支援移動、拉伸、複製/貼上、刪除、鎖定軌道。所有常見快捷鍵(Ctrl-Z/Y、Ctrl-C/X/V等)均受支援。 |
| 量化與對齊 | 兩種匯出模式:(1) 保留原始音符位置(秒)以實現「邊聽邊畫」工作流程;(2) 根據使用者設定的精確度x量化到音樂節拍單位,支援按小節設定BPM變更。 |
| MIDI匯入/匯出 | 可匯出為標準MIDI(類型1,多軌),支援自訂速度與量化。可匯入現有MIDI檔案;音符將映射至軌道,速度預設為127。 |
| 專案儲存 | 二進位「.nd」檔案儲存頻譜圖、音符、軌道和小節資訊,便於後續重新開啟。 |
| 使用者介面 | 現代化、無框架UI,支援軌道拖曳、右鍵上下文選單、鋼琴卷軸檢視,以及頂部工具列用於切換工具(如節拍對齊、小節對齊)。 |
| 效能優化技巧 | 降低重繪頻率,使用者任意操作後統一刷新,以及使用「tinySynth」JavaScript合成器即時播放編輯後的音符。 |
典型工作流程(來自README摘要)
- 在現代瀏覽器(推薦Chrome)中開啟應用。
- 上傳音訊檔案並選擇分析方式(STFT或CQT;如有GPU則啟用)。
- 運行可選自動步驟:節拍檢測 → 諧波去除 → 調性檢測。
- 點擊「AI轉錄」按鈕(「人工智障扒譜」)生成初始音符圖譜。
- 手動優化結果:將音符對齊節拍、合併小節、鎖定軌道等。
- 將最終結果匯出為MIDI檔案(量化用於樂譜)或儲存專案以供後續編輯。
技術亮點
- WebGPU加速CQT – 即使在整合式顯示卡上也能顯著提升恆Q變換速度。
- 瀏覽器內ONNX Runtime – 無需伺服器即可執行兩個預訓練神經網路,實現音高轉錄與樂器分離。
- 非負最小平方法(NNLS) – 經典優化方法,用於減去諧波成分並突出基頻。
- 純JS架構 – 無React/Vue等框架;所有UI元件均為手寫JS類別,保持打包體積極小。
適用對象
- 希望快速、私密地從錄音中提取音符的音樂人。
- 在瀏覽器中探索音訊訊號處理的教育者或學生。
- 尋找客戶端頻譜圖可視化、基於WebGPU的CQT或JavaScript中ONNX推理參考實作的開發者。
試用方式
- 在線示範: https://maddersscientist.github.io/noteDigger/
- 影片教學(中文): https://www.bilibili.com/video/BV1LFRmBcEEU
以上所有資訊均直接來自倉儲的README;未推斷任何額外功能。
相關
- 專案
- 專案
- 專案
- Dispatch
- Dispatch