Add GGML backend for GAME transcription - #2285
Open
KakaruHayate wants to merge 8 commits into
Open
Conversation
- Introduce IGameBackend interface + GameBackendFactory for ONNX/GGML switching - Extract original ONNX logic into GameOnnxBackend (zero behavior change) - Add GameGgmlBackend driving game_ggml_cli serve over stdin/stdout protocol - Binary 36-byte request header + float32 waveform on stdin - JSON notes response on stdout, quit magic for clean shutdown - Refactor Game.cs to thin orchestrator delegating to selected backend - Add GameBackend preference (Preferences.cs + PreferencesViewModel + axaml) - Add Seed to GameOptions for reproducible GGML runs - Medium model support in GAME-ggml (StageCtx memory/graph-node bumps) - Add serve subcommand to game_ggml_cli (long-lived mode, binary protocol) - Patch Dependencies.cmake: pocketfft gitlab → github/mreineck mirror (gitlab was returning 502; commit 32424d206 exists in mreineck mirror) - Fix rng.cpp: missing <string> include (exposed by strict C++17 mode) Co-authored-by: KakaruHayate <kakaru.hk@hotmail.com>
KakaruHayate
added a commit
to KakaruHayate/OpenUtau
that referenced
this pull request
Aug 17, 2026
docs: recommended GGML EP config (sync from PR openutau#2285)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
game_ggml_cli serveprotocolgame-ggml-medium.oudeppackageconfig.json, so GGML does not require the ONNX GAME packageOrigin & Credits
This GGML backend grew out of KCKT0112/GAME-ggml
(native C++/ggml GAME inference — CPU/Metal/CUDA/Vulkan) and its web variant
KCKT0112/web-game (Web Generative
Adaptive MIDI Extractor). The model, operator set, and weight layout ported
there form the basis of the game.cpp
backend; the GAME PyTorch original remains
the parity reference.
Motivation
The GGML implementation runs GAME without ONNX Runtime model sessions or a Python runtime. The native backend supports Vulkan/CUDA on Windows and Linux, plus Metal on macOS, and keeps one model process alive for all chunks in a transcription request.
The backend is implemented in a separate project: KakaruHayate/game.cpp. It uses ggml and packages the native executable, runtime libraries, medium GGUF model, and GAME config as one OpenUtau dependency package.
Official packages (v0.1.1)
Ready-to-install
.oudepfiles are published to theKakaruHayate/game.cpp Releases:
game_ggml-windows-x64-vulkan.oudep+-cuda.oudep-q8suffix...-linux-x64-vulkan.oudep+...-cuda.oudep...-linux-x64-cpu.oudepgame_ggml-macos-{arm64,x64}-metal.oudepDownload the archive for your platform, unzip it in OpenUtau's Dependencies
folder at
Dependencies/game-ggml-medium/(both the CLI and the GGUF live inone package), restart OpenUtau, and select the GGML backend in Preferences.
Recommended GGML configuration
Full measurements in
docs/benchmark-7channel.md(60 s audio, no slicing, nsteps=8, frame-level metrics vs the torch-CUDA fp32
no-cache baseline — every EP ≥ 0.97 RPA):
Rules of thumb:
-fullpackage if you need bit-consistent output; both are valid in practice.Design
IGameBackendisolates model lifecycle, inference, cancellation, and configuration.GameOnnxBackendis a behavior-preserving extraction of the existing four-model ONNX pipeline and retains native batching.GameGgmlBackendstartsgame_ggml_cli serve <model.gguf>lazily, sends framed float32 waveform requests through stdin, and reads one-line JSON note responses from stdout.GameBackendFactoryresolves the user preference and falls back to an installed backend (ONNX first for compatibility).config.jsonare all present.Verification
On current
openutau/OpenUtau:master:GameGgmlBackendTest: 3 passeddotnet test OpenUtau.Test: 209 passeddotnet build OpenUtau.sln: 0 warnings, 0 errorsserveand returned{"type":"ready"}oudep.yamlmanifests were checked against OpenUtau PackageManager expectationsNotes
.oudeppackage id isgame-ggml-medium, independent from the existing ONNXgamepackage.