研究

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 的四種容許誤差。

結果

2,501 首速度固定的 ranked osu! mania 歌曲的 timing 準確度
方法≤10 ms≤20 ms≤30 ms≤40 msBPM 正確單一 timing 線
ManiaGAI v271.4%92.3%96.5%97.1%98.0%100%
Mapperatorinator78.0%90.9%91.7%91.7%92.6%11.0%
ManiaGAI v174.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 在整個流程中的位置,而最快的測試方法,就是拿一首你很熟的歌來試試。