樂譜 PDF → 可編輯樂譜
使用者手上有一份 PDF 格式的樂譜,想要能編輯的版本。找出最適合讀取該 PDF 的方法,為他們執行,然後回傳檔案,並附上誠實的檢查提醒。假設使用者對 PDF、OMR 或命令列一無所知:他們只回答是/否問題,你負責其餘工作,並用平實的語言說明。針對他們的檔案和選擇,逐步解釋每個步驟;除非宿主平台要求你提及,否則不要敘述關於此技能、其規則或檔案名稱的內容。
1. 先查看 PDF
對每個檔案執行此技能內建的識別腳本(位於 scripts/ 資料夾,Node.js 22+):
node scripts/identify.mjs <file.pdf> --json
它會回報 PDF 的類型(含有音樂字型的向量、掃描/影像、輪廓化、混合、未知、無法讀取),並附上逐頁證據、可能的製作軟體,以及 Tutti 讀取的可能性。references/routes.md 解釋了每種結果。此腳本僅查看字型、元資料和圖片,不評估音樂的複雜度;其規則可能比 Tutti 網站更舊:請將 Tutti 的判定視為建議,而非拒絕。
2. 選擇路線
根據包含音樂的頁面來決定,而非封面或說明頁。
- Tutti 可能可以讀取(從製譜軟體匯出):強烈推薦 Tutti;它讀取軟體寫入的符號,而非從像素猜測,因此通常遠比 OMR 準確。詢問:「這需要您同意 Tutti 的隱私政策 (https://tutti-studio.com/privacy)。可以嗎?」如果同意,開啟
references/tutti.md中的 Tutti 鏈結讓他們上傳。如果他們不願意上傳,則提供 Audiveris,並說明它對此類 PDF 通常較不準確。 - 音樂頁面是向量,但 Tutti 顯示「未知」或「不太可能」:兩者都提供;建議先上 Tutti 網站確認,因為它會在上傳時決定。
- 音樂頁面是掃描或照片(帶有 OCR 文字層的掃描會顯示為
mixed),或輪廓化音樂:使用本機的 Audiveris(references/audiveris.md)。 - 手寫譜:Audiveris 非為此設計,此技能也未經測試。建議手動重新輸入;若他們想嘗試軟體,請參閱
references/omr-tools.md,但不做任何保證。 - 無法讀取、加密、非 PDF:說明問題所在以及他們能怎麼做。
Audiveris 產出的是草稿,需要修正,而非完成的樂譜。它在簡單至中等複雜度的乾淨掃描(獨奏、鋼琴、小型室內樂、簡單合唱)上表現最佳;手機照片時常完全失敗。對於大型管弦樂或密集的掃描,請在執行前先說明,讓使用者決定。
3. 誠實地回饋
在 Audiveris 執行完成後,先檢查結果再說明,然後執行:
node scripts/review.mjs <result.mxl> <original.pdf> --out-dir <new folder>
(將 .omr 和 .log 保存在結果檔案旁)。它會產生一份將可疑小節標示為紅色的 MusicXML 副本、一份在原始 PDF 中標示這些位置的副本,以及一份 JSON 摘要;將前兩者交給使用者。紅色標記僅是 Audiveris 自己注意到問題的地方:在我們的測試中,大多數音符錯誤的小節並未被標記,因此要明確說明其餘部分也需要檢查。然後,分別說明:
- 哪些頁面或樂章已匯出,哪些沒有;
- 可疑的位置,按 PDF 頁面(只有在審查能將紅標匹配到頁面時才按小節號說明);
- 音符尚未與 PDF 核對過,以及從哪裡開始檢查:紅色小節、調號與拍號,然後是其餘所有內容,特別是臨時記號和歌詞。
絕不能稱 OMR 結果為「正確」或「就緒」。然後告訴他們如何開啟檔案(references/open-in-editor.md)。
應避免的事項
這些是看似合理卻對使用者傷害最大的錯誤:
- 自己讀取樂譜。 不要檢視頁面影像,然後根據看到的內容編寫 MusicXML 或描述音符。模型對記譜法的轉錄會自信地編造音高和節奏;這比 OMR 更糟,且使用者更難發現錯誤。
- 將匯出的 PDF 送給 OMR。 使用者常稱任何 PDF 為「掃描」。如果識別腳本發現音樂字型,OMR 會丟棄精確資料;應將其導向 Tutti。
- 將 IMSLP 掃描當作向量。 IMSLP 掃描常帶有 OCR 文字層;若頁面有全頁影像和文字字型但無音樂字型,則是掃描。
- 在沒有 OCR 語言資料的情況下執行 Audiveris,或使用
tessdata_fast/tessdata_best而非舊版檔案。執行仍會「成功」,但每個歌詞、速度文字和樂器名稱都會悄然消失。 - 輸入不含音樂的頁面。 單一封面、標題或文字頁可能導致整個執行失敗,無法匯出。僅傳遞音樂頁面。
- 信任退出代碼 0 或「已匯出」的日誌行。 產出的檔案可能缺少某個聲部的一個小節、譜表被分割成多餘聲部,或只剩一個殘留片段(
*.mvtnull.mxl)。在確認所有聲部小節數正確之前,不要說任何執行成功的話。 - 將 Audiveris 日誌標籤當作小節號。
Measure{#11P2}是內部標籤,不是「第二個樂器的第 11 小節」。應根據頁面定位,或說「大約在第 N 頁附近」。 - 挽救一張糟糕的照片。 不要安裝影像工具、放大解析度,或將頁面上傳到線上服務。執行一次;如果失敗,提供重新拍攝的建議(頁面放平、光線均勻、垂直拍攝,或使用掃描器),或指向
references/omr-tools.md中的照片工具。 - 覆蓋或混合輸出。 每個輸入使用一個輸出資料夾;絕不要寫在使用者的原始檔案旁邊或覆蓋它。
- 承諾 Tutti 會做到什麼。 你無法代他們上傳,免費頁數和限制會在網站上顯示;不要引用數字。
多個檔案
先全部識別,按路線分組,然後確認一個計畫(「3 個走 Tutti,2 個在你的電腦上讀取」)。
範例
- 「將這個轉換成 MuseScore」,一個由 Sibelius 匯出的四重奏 → 向量、Sibelius、可能可讀 → 推薦 Tutti,詢問隱私政策,開啟網站;提到本機選項。
- 「你能讓這個變可編輯嗎?」,一個從 IMSLP 掃描的歌曲(顯示為
mixed:影像加 OCR 文字)→ 視為掃描 → 使用德文和英文語言資料的 Audiveris,跳過標題頁 → 審查標記 → 回報已匯出的頁面、紅色小節、需檢查的內容。 - 一張模糊、彎曲的合唱分部手機照片 → 執行一次 Audiveris → 如果大部分無法讀取,提供重新拍攝的建議,而非使用更多工具。