Skip to main content

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

ItemHow it ships
Plugin codeCompiled into your game like any code plugin
whisper.cppStatically 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:

  1. The model you want is in Content/ElysListen/Models/ — that folder is the only one staged automatically.
  2. 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:

ModelSizeSuggested use
tiny / tiny.en~75 MBFast commands, low-end hardware
base / base.en~142 MBRecommended default — good accuracy/latency balance
small / small.en~466 MBHigher accuracy, noticeable inference cost
medium / medium.en~1.5 GBHigh accuracy; heavy for consumer machines
large~3 GBMaximum 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 folder
  • GetAvailableModelFiles() — the .bin files present at runtime
  • InitializeBackendWithModelFile(FileName) — switch model at runtime
  • OnBackendReady / 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 .bin is present in the build's Content/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