Shipping Your Game
Elys Listen is designed so a packaged (cooked) build works out of the box. This page covers what actually ships, how the model file is found at runtime, and what to check before release.
What ships with your game
| Item | How it ships |
|---|---|
| Plugin code | Compiled into your game like any code plugin |
| whisper.cpp | Statically linked — no DLLs to copy |
Whisper model (.bin) | Staged automatically as a loose file (see below) |
Model staging — automatic
Whisper models are raw .bin files under Content/ElysListen/Models/. They are
not Unreal assets, so the cooker would normally skip them — Elys Listen
declares them as runtime dependencies instead, and the packaging pipeline stages
every *.bin in that folder into your build automatically. No extra project
settings are needed.
Two things to verify before shipping:
- The model you want is in
Content/ElysListen/Models/— that folder is the only one staged automatically. - The configured model path is portable. When you click Use This in the
model manager, the path is stored relative to your project, which packages
correctly. If you typed an absolute path by hand, the runtime still rescues
it by looking the filename up in
Content/ElysListen/Models/, but prefer a relative path.
Model size and your build
The model is bundled into your packaged game — pick deliberately:
| Model | Size | Suggested use |
|---|---|---|
| tiny / tiny.en | ~75 MB | Fast commands, low-end hardware |
| base / base.en | ~142 MB | Recommended default — good accuracy/latency balance |
| small / small.en | ~466 MB | Higher accuracy, noticeable inference cost |
| medium / medium.en | ~1.5 GB | High accuracy; heavy for consumer machines |
| large | ~3 GB | Maximum accuracy; rarely appropriate in a shipped game |
The .en variants are English-only and slightly more accurate for English than
the multilingual equivalents.
Ship one model. If several .bin files sit in Content/ElysListen/Models/,
they are all staged — delete the ones you don't use before packaging (or via
the model manager's Delete button).
Runtime model selection (optional)
Everything works with zero code: the model configured in Project Settings →
Elys Listen (STT) loads automatically at startup. For advanced setups (letting
players pick a model, shipping several languages), the ERP_STTSubsystem
exposes:
GetModelsDirectory()— absolute path of the staged models folderGetAvailableModelFiles()— the.binfiles present at runtimeInitializeBackendWithModelFile(FileName)— switch model at runtimeOnBackendReady/OnBackendInitFailed— react to load success/failure
Pre-release checklist
- One model in
Content/ElysListen/Models/, configured via Use This - Package the game and confirm the
.binis present in the build'sContent/ElysListen/Models/ - Launch the packaged game and confirm
IsSTTReady()returns true - Test with the microphone your players will use (headset vs. built-in)
- Review the Licensing page for attribution requirements