研究
AI beatmap 的 timing 有多準?ManiaGAI vs Mapperatorinator
我們自動替 2,501 首 ranked osu! mania 歌曲做 timing,在四種容許誤差下比較 ManiaGAI v2、v1 與 Mapperatorinator 和 mapper 的 timing。誰贏在哪裡,以及這份測試的侷限。
玩家對一張 beatmap 可以很包容,唯獨 timing 不行。音符只要偏離拍子幾毫秒,不管譜型寫得多好,從第一小節開始就會覺得不對勁。所以在 AI mapper 放下第一個音符之前,它得先回答兩個人類 mapper 靠耳朵就能回答的問題:這首歌的 BPM 是多少?拍點究竟落在哪裡?
這篇文章要談的,就是 ManiaGAI 回答得有多好。我們把它的 timing 偵測跑在所有能評估的 ranked osu! mania 歌曲上,並和 mapper 自己寫的 timing 比較——同時也比較了 ManiaGAI v1 和開源的 Mapperatorinator。簡單來說:在玩家實際聽得出來的容許誤差下,ManiaGAI v2 答對的歌最多;在最嚴格的容許誤差下,Mapperatorinator 更精準;而這份基準測試也還留下一些真正懸而未決的問題。細節如下。
我們測了什麼
自動 timing 要產出的,就是 mapper 在編輯器裡會產出的東西:一個 BPM 和一個 offset,寫成 timing 線。對於速度固定的歌,那就是一條線。所以測試集是所有由 mapper 只用一條線完成 timing 的 ranked 或 approved osu! mania mapset——在移除變速(rate-edit)合輯和重複的 mapset 之後,共2,507 組 mapset。三種方法都產出結果的有 2,501 組,以下所有數字都是以這 2,501 首歌計算。
三種方法分別是:
- ManiaGAI v2——ManiaGAI 從第 2 版(2026 年 10 月 1 日)起使用的 timing 偵測:先由開源的 Beat This 模型產生拍點激活值,再用我們自己的擬合方法轉成 timing 格線。基準測試使用的設定和正式上線的版本相近,但並不完全相同。
- ManiaGAI v1——本站在第 2 版之前使用的偵測器。
- Mapperatorinator——OliBomby 的開源 AI mapper 的 timing 模式,依公開釋出的版本直接執行。它是我們唯一做過基準測試的開源 timing 基準方法。
一首歌要算正確,偵測到的 BPM 必須和 mapper 的一致——允許半速或倍速,因為 timing 設為 85 或 170 BPM 的歌,可以寫出完全相同的譜——而且拍點相位必須落在 mapper 的容許誤差之內。我們列出從 10 到 40 ms 的四種容許誤差。
結果
| 方法 | ≤10 ms | ≤20 ms | ≤30 ms | ≤40 ms | BPM 正確 | 單一 timing 線 |
|---|---|---|---|---|---|---|
| ManiaGAI v2 | 71.4% | 92.3% | 96.5% | 97.1% | 98.0% | 100% |
| Mapperatorinator | 78.0% | 90.9% | 91.7% | 91.7% | 92.6% | 11.0% |
| ManiaGAI v1 | 74.8% | 88.0% | 90.3% | 90.7% | 94.0% | 92.8% |
佔 2,501 首歌的比例。「BPM 正確」允許半速/倍速。「單一 timing 線」=這首歌和它的 mapper 一樣,只用一條線完成 timing。
哪種方法領先取決於容許誤差,而這正是這張表裡最有價值的資訊。在 10 ms,Mapperatorinator 領先;從 20 ms 開始,則是 ManiaGAI v2 領先。在 40 ms,ManiaGAI v2 在 97.1% 的歌曲上正確,Mapperatorinator 是 91.7%,ManiaGAI v1 是 90.7%。
為什麼以 40 ms 作為主要數字
嚴格的容許誤差衡量的是精準度;寬鬆一點的則衡量 timing 是否堪用。我們選 40 ms 作為主要數字,是根據一次試聽檢查:在 10 ms 標準判為錯誤的 31 首歌中,有 30 首實際播放時聽起來 timing 是對的。10–40 ms 的誤差確實存在,表格也如實列出——但在這個量級下,BPM 和拍點都是對的,而這才是決定一張譜能不能踩在拍子上的關鍵。
逐首比較
百分比看不出每種方法分別答對了哪些歌。只計算兩種方法中恰好只有一種正確的歌:
- 在 40 ms,ManiaGAI v2 對而 Mapperatorinator 錯的有 187 首,反過來的情況有 51 首。兩者都對的有 2,242 首;兩者都錯的有 21 首。
- 在 20 ms,差距就小得多:187 首比 153 首。
- 在 40 ms 和自己的前一代相比,ManiaGAI v2 贏了 190 首,輸了 30 首。
Mapperatorinator 比較強的地方
在速度判斷正確的情況下,Mapperatorinator 的拍點放得更精準:
- 在 10 ms 以內,它在 78.0% 的歌曲上正確,ManiaGAI v2 則是 71.4%。
- 它的拍點相位誤差更小:中位數 5.0 ms,ManiaGAI v2 則是 5.8 ms。
ManiaGAI 比較強的地方
ManiaGAI v2 判對速度的次數更多(允許半速/倍速時為 98.0%,對方為 92.6%),而且誤判變速的問題小得多。這個測試集裡的每首歌都只有一個固定速度,所以任何多出來的 timing 線,都是音樂裡根本不存在的變速——放到譜面裡,就代表拍子格線在歌曲中途突然偏移。
- ManiaGAI v2 對全部 2,501 首歌都只用一條線完成 timing。
- ManiaGAI v1 在 181 首歌(7.2%)上多加了線。
- Mapperatorinator 在 2,226 首歌(89.0%)上多加了線——每首歌中位數 6 條、平均 7.9 條。
這需要一點背景說明:Mapperatorinator 並不假設一首歌只有一個速度,而在真的會變速的歌上,寫出好幾條線才是正確的做法。這份基準測試只包含速度固定的歌,所以只能呈現這種設計的代價,看不到它的好處。
離上限還有多遠?
在 40 ms,有 16 首歌(0.6%)三種方法全都答錯。就算有一個完美的裁判,替每首歌挑出三者中最好的結果,也只能達到 99.4%——所以 ManiaGAI v2 的 97.1% 離這個上限已經很近了。在這 16 首歌中,ManiaGAI v2 有 12 首是速度錯誤,4 首是相位錯誤。
這份基準測試無法告訴你的事
- 它不是保留測試集(held-out)。其中有 344 首歌曾在調整 ManiaGAI v2 偵測器時使用過。我們檢查過這是否灌水了結果:在 40 ms,ManiaGAI v2 在這些歌上的分數是 97.1%,在從未見過的 2,157 首歌上是 97.1%;在 10 ms 則是 70.3% 對 71.5%。調整並沒有換來無法類推的準確度——但一份乾淨的保留測試集會是更有力的證據。
- 只有速度固定的歌。會變速的歌對每種方法來說都更難,而這裡沒有收錄。在 ManiaGAI v2 學習的資料中,有 15.8% 的譜面會在歌曲中途變速。
- 只有 ranked 譜面,並以 mapper 為標準答案。Ranked 的 timing 經過人工審核,是目前能找到的最佳參考——但它終究是某一個人的 timing,而母體也只限於會被 rank 的音樂。
- 只有一個外部基準。Mapperatorinator 是我們唯一執行過的其他方法。我們沒有測試不是為 osu! 打造的節拍追蹤器,也不對它們做任何宣稱。
- 評的是 timing,不是譜面。這份基準測試只評分 timing 格線本身,不評生成的譜面好不好。
- 和上線設定相近,但不完全相同。正式環境的偵測器在細節上和這裡測量的版本有所不同。
timing 的下一步
有三件事特別明顯。剩下的固定速度錯誤,大多是速度問題,而不是相位問題。在最嚴格的容許誤差下,精準度仍有進步空間。而最大的未解問題,正是這份基準測試無法回答的:每種方法——包括我們自己的——要如何處理真的會變速的歌。這是未來的基準測試需要補上的缺口。
如果你想知道 timing 在實際上代表什麼,osu! 的 BPM 與 timing 解說介紹了基本概念,技術頁面說明了 timing 在整個流程中的位置,而最快的測試方法,就是拿一首你很熟的歌來試試。