DanceGAI là đội ngũ đứng sau ManiaGAI, một công cụ AI tạo beatmap osu! mania. DanceGAI đang xây dựng hạ tầng AI biến âm nhạc thành trải nghiệm chơi được, và ManiaGAI là sản phẩm đầu tiên: bạn tải một bài hát lên, và nó tạo ra một mapset osu! mania hoàn chỉnh, chơi được — timing, nốt và nhiều mức độ khó — đóng gói thành file .osz tiêu chuẩn. Bài hát có thể là file âm thanh tải lên hoặc bài hát của một beatmapset osu! mà bạn dán link; dù cách nào thì cũng chỉ phần âm thanh được dùng, không bao giờ dùng các chart có sẵn. Phiên bản 2 của hệ thống đang chạy trên trang này. osu! mania là định dạng đầu ra đầu tiên: hệ thống được xây dựng cho các game nhịp điệu cuộn dọc (VSRG) nói chung.
Trang này giải thích cách nó hoạt động và vì sao nó được thiết kế như vậy. Chúng tôi công khai về kiến trúc và các quyết định kỹ thuật; chúng tôi không công bố những chi tiết mà người khác cần để dựng lại nó. Ở chỗ nào một con số chưa được công bố, trang này sẽ nói rõ thay vì phỏng đoán.
Tóm tắt kỹ thuật
| Nhiệm vụ | Âm thanh → mapset osu! mania chơi được (.osz), đầy đủ các mức độ khó trong mỗi lần chạy |
|---|---|
| Phạm vi | Game nhịp điệu cuộn dọc (VSRG) — osu! mania trước tiên; các định dạng VSRG khác đã lên kế hoạch |
| Timing | Activation của Beat This → phương pháp khớp lưới độc quyền (hỗ trợ tempo thay đổi). Trong benchmark của chúng tôi, 97,1% trong số 2.501 bài ranked có tempo cố định được căn timing lệch không quá 40 ms so với timing của mapper |
| Biểu diễn âm nhạc | MERT-v1-95M, căn theo lưới timing từng nhịp một |
| Planner | Gaussian diffusion trên trạng thái gameplay của từng đoạn, ~6M tham số |
| Mô hình nốt | Transformer không tự hồi quy kiểu MaskGIT trên các token pattern, ~51M tham số |
| Điều khiển | 4K–9K · mục tiêu ★1–10 · 5 chiều style (tỉ lệ LN, LN inverse, jack, mini LN, delay) |
| Dữ liệu huấn luyện | 150.622 chart do người làm · 86.255 bài hát · ~14.500 mapper · 4.227 giờ âm thanh |
| Kiểm định | Kiểm tra lưới timing, dọn nốt không hợp lệ, chặn khoảng lặng, đo star rating của osu!, nhất quán trong mapset |
| Huấn luyện | Một RTX 4070 Ti SUPER · ~580 giờ GPU được ghi nhận trên toàn bộ dòng phát triển của các mô hình production |
| Tạo chart | Các độ khó được yêu cầu được tạo cùng lúc trong một lượt GPU theo batch · ~20 s tính toán GPU cho một mapset đầy đủ |
| Vận hành | Worker GPU serverless khôi phục từ memory snapshot; âm thanh được chuẩn hóa trong trình duyệt |
Beatmap không phải là bản chép nhạc
Cách hiển nhiên để hình dung việc tạo beatmap tự động là “đưa âm thanh vào, qua mạng nơ-ron, ra nốt”. Trên thực tế, cách hình dung đó tạo ra những chart về mặt kỹ thuật thì bám theo nhạc nhưng chơi thì khó chịu. Một map osu! mania hay gần với một bản phối hơn là một bản chép nhạc: mapper quyết định âm thanh nào xứng đáng có nốt, một đoạn nên dày đặc đến mức nào, đặt jack hay long note ở đâu, pattern chuyển giữa hai tay ra sao, và tất cả những điều đó thay đổi thế nào giữa độ khó Easy và Expert.
Vì vậy ManiaGAI coi việc tạo beatmap là một chuỗi các bài toán riêng biệt — hiểu âm nhạc, lên kế hoạch gameplay, đặt nốt và kiểm tra kết quả:
- Âm nhạc
- Hiểu
- Lên kế hoạch
- Tạo
- Tinh chỉnh
- Beatmap
1. Hiểu âm nhạc
Mọi bước phía sau đều phụ thuộc vào một bức tranh chính xác về bài hát. Giai đoạn đầu tiên biến âm thanh thô thành hai thứ: một lưới timing, và một biểu diễn âm nhạc độ phân giải cao cho từng khoảnh khắc của bài hát.
Timing. Activation của beat và downbeat đến từ Beat This, một mô hình beat tracking mã nguồn mở. Việc biến các activation đó thành lưới timing của osu! — BPM và offset, kể cả với bài có tempo thay đổi — là phương pháp khớp lưới của riêng chúng tôi, và nó tạo ra cùng họ lưới mà các mô hình tạo chart đã được huấn luyện. Timing là phần người chơi nhận ra đầu tiên: một chart lệch nhịp vài mili giây là không chơi được, dù pattern hay đến đâu, nên timing được coi là một bài toán hàng đầu chứ không phải một bước tiền xử lý.
Đặc trưng âm nhạc. Âm thanh được mã hóa bằng MERT-v1-95M, một mô hình biểu diễn âm nhạc tự giám sát, và được căn theo lưới timing — để các mô hình nhìn thấy âm nhạc từng nhịp một: onset, chất âm, cường độ và cách chúng thay đổi trong suốt bài. Các đoạn im lặng được phát hiện riêng, nên không có nốt nào được đặt lên đó.
2. Lên kế hoạch beatmap
Lựa chọn thiết kế trung tâm của ManiaGAI là tách điều gì nên xảy ra khỏi cách đặt nốt.
Một mô hình lên kế hoạch chuyên biệt đọc biểu diễn âm nhạc và quyết định cấu trúc gameplay của cả bài hát trước khi có bất kỳ nốt nào: mỗi đoạn nên dày đến mức nào, loại pattern nào thuộc về chỗ nào, độ khó nên lên xuống ra sao, và tất cả những điều đó khớp với độ khó và style được yêu cầu thế nào. Đầu ra của nó là một bản kế hoạch mô tả chart theo từng đoạn — độ khó cục bộ và tỉ lệ pha trộn giữa long note, jack và các loại pattern khác — chứ không phải nốt.
Planner là một mô hình Gaussian diffusion (khoảng 6M tham số). Nó tạo kế hoạch cho mọi đoạn của bài hát cùng lúc, có điều kiện theo âm nhạc, số phím, độ khó và style mục tiêu. Diffusion hợp với việc này: một bản kế hoạch là mô tả liên tục, mượt mà về một bài hát, và việc tạo nó như một tổng thể cho phép planner cân bằng toàn bộ bài hát cùng một lúc.
Lên kế hoạch ở cấp độ này cho hệ thống thứ mà mô hình đặt từng nốt một không có: cái nhìn về toàn bộ bài hát. Đoạn điệp khúc có thể được lên kế hoạch để mạnh hơn đoạn verse trước nó; đoạn breakdown có thể được lên kế hoạch để có chỗ thở.
3. Tạo nốt
Mô hình thứ hai biến bản kế hoạch thành vị trí nốt thực tế — cột nào, nốt nào là nốt nhấn và nốt nào là long note, các pattern nối với nhau ra sao. Kế hoạch quyết định cấu trúc; bước tạo nốt biến cấu trúc đó thành các nốt chơi được, bám theo cả bản kế hoạch lẫn âm thanh.
Mô hình nốt là một transformer không tự hồi quy kiểu MaskGIT (khoảng 51M tham số). Chart được biểu diễn dưới dạng các token pattern rời rạc, và thay vì viết từng token một từ đầu đến cuối, mô hình điền toàn bộ chart rồi tinh chỉnh qua nhiều lượt — chốt những nốt nó tự tin và xem xét lại phần còn lại. Mỗi lượt đều thấy ngữ cảnh ở cả hai phía của mỗi đoạn, và đó là điều giữ cho pattern nhất quán trong suốt bài hát. Cách sắp xếp các lượt đó trên một bài hát là phương pháp tinh chỉnh của riêng chúng tôi.
Vì sao ManiaGAI dùng Planner + Noter (tiếng Anh) →
4. Tạo có điều khiển
ManiaGAI không phải hệ thống kiểu “tạo rồi cầu may”. Cùng một bài hát có thể được tạo theo các điều khiển rõ ràng, và các điều khiển đó là một phần của những gì các mô hình được huấn luyện để tuân theo:
- Số phím — từ 4K đến 9K.
- Độ khó — chọn bất kỳ star rating nào từ ★1 đến ★10. Một bài hát cho ra trọn một mapset, từ Easy đến Expert, trong một lần chạy.
- Style — các đặc điểm gameplay như tỉ lệ long note và mức độ chart chứa pattern jack, inverse-LN, LN ngắn và delay, mỗi thứ đều chỉnh được trên trình tạo.
- Mật độ — xuất phát từ độ khó mục tiêu và bản kế hoạch, chứ không theo một quy tắc cố định.
Mọi độ khó đều được tạo từ cùng một cách hiểu về bài hát, nên một mapset trông như một gia đình chart thống nhất chứ không phải những chart rời rạc. Tiếp theo, chúng tôi đang hướng tới biểu diễn style được học — mô tả một phong cách map bằng ví dụ thay vì bằng vài thanh trượt.
5. Kiểm định và kiểm soát chất lượng
Trước khi chart đến tay bạn, hệ thống kiểm tra nó:
- Timing — các timing point được ghi ra được đối chiếu với lưới đã nhận diện.
- Nốt không hợp lệ và không chơi được — các nốt chồng lên nhau, long note bị hỏng và những vị trí game không biểu diễn được đều được xử lý, và không có nốt nào được đặt lên đoạn âm thanh rõ ràng là im lặng.
- Độ khó đo được — star rating của mọi chart được đo bằng chính thuật toán star rating mà osu! dùng, và độ khó được đặt tên theo giá trị đo được, không phải giá trị được yêu cầu.
- Nhất quán trong mapset — chart nào ra dễ hơn chart lẽ ra nằm dưới nó, hoặc có độ khó gần như y hệt chart bên cạnh, sẽ bị loại thay vì được gửi đi. Trên trình tạo, bạn sẽ thấy mức sao nào bị loại và vì sao.
- Đầu ra hợp lệ — kết quả được đóng gói thành file .osz tiêu chuẩn kèm âm thanh, ảnh nền và hitsound, import thẳng vào osu! được.
Những con số
- Bài hát trong tập huấn luyện
- 86.255
- Chart huấn luyện
- 150.622
- Mapper
- ~14.500
- Âm thanh không trùng lặp
- 4.227 giờ
- Đặc trưng huấn luyện trên ổ đĩa
- ~0,7 TB
- Tính toán huấn luyện (được ghi nhận, dòng production)
- ~580 giờ GPU
- Lần chạy cuối của mô hình nốt
- ~4 ngày
- Tham số mô hình
- ~57M (51M nốt + 6M planner)
- Tạo một mapset đầy đủ
- ~20 s
- Chế độ phím
- 4K–9K
- Khoảng độ khó
- ★1–★10
- Số độ khó mỗi lần chạy
- tối đa 10 (ít hơn với bài dài)
Dữ liệu huấn luyện
Các mô hình production học từ 150.622 chart osu! mania do người làm trên 86.255 bài hát — 4.227 giờ âm thanh không trùng lặp — của khoảng 14.500 mapper. Phần lớn công sức trong một hệ thống như thế này không nằm ở mô hình mà ở dữ liệu: quyết định thế nào là một chart đáng học, bảo đảm timing của mọi ví dụ huấn luyện là chính xác, và biểu diễn chart theo dạng nắm bắt được điều gì khiến chúng chơi được.
Khám phá bộ dữ liệu huấn luyện (tiếng Anh) →
Đánh giá: độ chính xác timing
Chúng tôi đã benchmark timing của mình so với timing do người làm trên mọi mapset osu! mania ranked có một tempo duy nhất, cố định mà chúng tôi có thể đánh giá — 2.501 bài hát — cùng với chế độ timing của công cụ mã nguồn mở Mapperatorinator và ManiaGAI v1, bộ nhận diện trước đây của chúng tôi. Một bài được tính là đúng khi BPM khớp với BPM của mapper (chấp nhận gấp đôi/một nửa tempo) và pha nhịp nằm trong ngưỡng sai số cho phép.
| Phương pháp | ≤10 ms | ≤20 ms | ≤40 ms | BPM đúng | Một timing line |
|---|---|---|---|---|---|
| ManiaGAI v2 | 71,4% | 92,3% | 97,1% | 98,0% | 100% |
| Mapperatorinator | 78,0% | 90,9% | 91,7% | 92,6% | 11,0% |
| ManiaGAI v1 | 74,8% | 88,0% | 90,7% | 94,0% | 92,8% |
Chỉ gồm các bài ranked có tempo cố định; “một timing line” = bài được căn timing bằng một line duy nhất, đúng như mapper đã làm (một line thừa trên bài có tempo cố định là một lần đổi tempo sai). Được đo trên cấu hình gần giống, nhưng không hoàn toàn trùng với bản đang chạy thực tế.
Đọc toàn bộ benchmark timing (tiếng Anh) →
Huấn luyện
Planner và mô hình nốt được huấn luyện riêng, mỗi mô hình trên biểu diễn mà nó làm việc cùng — planner là mô hình Gaussian diffusion trên một mô tả đã được Gauss hóa về gameplay của từng đoạn, mô hình nốt thì bằng dự đoán token bị che trên các token pattern. Mẫu huấn luyện được cân bằng giữa các số phím và mức độ khó để chart 8K và ★10 không bị chart 4K và ★4 lấn át, và mô hình nốt được huấn luyện với mixed precision.
Mọi thay đổi đều được đánh giá trên chính các chart được tạo ra — độ chính xác timing, độ khó đo được so với mục tiêu, khả năng chơi được — chứ không chỉ dựa vào training loss.
Suy luận và hiệu năng
Một hệ thống AI hữu ích không chỉ nằm ở chất lượng mô hình; nó còn phải đủ nhanh để dùng. Một yêu cầu tới ManiaGAI chạy như sau:
- Trong trình duyệt của bạn: bài hát được giải mã, chuẩn hóa âm lượng và mã hóa lại ngay khi bạn chọn file, trong lúc bạn vẫn đang chọn cài đặt — nên GPU không bao giờ phải chờ xử lý âm thanh.
- Hiểu âm nhạc trên GPU: Beat This và MERT, với bước khớp lưới chạy trên CPU song song với MERT.
- Lên kế hoạch và tạo nốt cho mọi độ khó được yêu cầu trong một lượt theo batch.
- Kiểm định — đo star rating, kiểm tra tính nhất quán.
- Đóng gói .osz, rồi tải về.
Các worker GPU khởi động từ một snapshot đã nạp sẵn, nên ngay cả worker nguội cũng sẵn sàng trong vài giây thay vì tốn thời gian đó để nạp mô hình. Một mapset đầy đủ mất khoảng 20 giây thời gian tính toán GPU cho một bài hát thông thường — chưa tính tải lên, xếp hàng hay tải về; một bài dài 2:50 với năm độ khó được đo mất 12,7 giây trên NVIDIA T4 — timing và đặc trưng âm nhạc 3,8 s (chạy song song), lên kế hoạch 1,0 s, tạo nốt cho cả năm độ khó 6,1 s.
Cách chúng tôi làm việc tạo nhanh hơn (tiếng Anh) →
Những gì chúng tôi không công bố
Chúng tôi công bố các nguyên tắc kiến trúc, các quyết định kỹ thuật đằng sau chúng, và những gì hệ thống làm được và không làm được — bao gồm các mô hình mở mà chúng tôi xây dựng trên đó (Beat This, MERT) và các họ mô hình mà mô hình của chúng tôi thuộc về (Gaussian diffusion, MaskGIT). Chúng tôi không công bố các phương pháp do chính chúng tôi phát triển hay những chi tiết cho phép người khác tái tạo hệ thống: cách lưới timing được khớp và các đoạn tempo được gộp lại, cách các lượt tinh chỉnh của mô hình nốt được sắp xếp trên một bài hát, cách các mô hình được điều kiện hóa, kiến trúc chính xác, hàm loss và siêu tham số, cũng như cách dữ liệu huấn luyện được thu thập, lọc và xây dựng. Đó là ranh giới giữa việc minh bạch về những gì chúng tôi đã xây dựng và việc trao luôn công thức. Khi đưa ra tuyên bố về chất lượng, chúng tôi muốn chứng minh bằng các benchmark được công bố — chứ không phải bằng tính từ.
Tiếp theo là gì
Vượt ra ngoài osu! mania. ManiaGAI được thiết kế xoay quanh một cách biểu diễn gameplay không gắn riêng với osu! mania: nốt và long note trên các cột, đặt trên lưới timing và có điều kiện theo một độ khó mục tiêu. osu! mania là định dạng đầu ra đầu tiên, không phải giới hạn của hệ thống.
Tìm hiểu sâu
Nghiên cứu và kỹ thuật đằng sau ManiaGAI, chi tiết:
Dùng thử ManiaGAI
Tạo một mapset osu! mania hoàn chỉnh từ bài hát của bạn — miễn phí, trong vài giây.
Tạo mapset →