Compile-time provision (cloud)
When you compile or edge-sync a workflow that contains a Wake Word Engine node,WorkflowCodeAssembler calls:
Model(wakeword_models=[...]) and records prediction_keys from oww_model.models.keys().
| Outcome | Meaning |
|---|---|
| Compile succeeds + warning | openWakeWord models downloaded for edge: alexa, ... |
| Compile fails | openwakeword not installed on Django (ml-wakeword extra), or download/network error |
GET /compile field | openwakeword_models: ["alexa"] lists normalized model ids |
Compile-server packages
| Package | Purpose |
|---|---|
openwakeword>=0.6.0 | Model download + load probe at compile |
onnxruntime>=1.16.0 | openWakeWord runtime |
Generated worker (edge)
The compiledwf_<uuid>.py module begins with:
Edge-sync metadata
Each Wake Word node contributes tomodel_requirements:
Edge worker image
cyberwaveos/edge-ml-worker Dockerfile runs:
download_models(model_names=[...]) still runs for clarity and custom images.
Custom images (air-gapped)
Threshold vs compile
Detection threshold is a runtime node parameter (default 0.5, one value for all selected wake words). It is embedded in compiledwf_*.py as threshold=... on the engine singleton. Changing threshold only requires save → compile → sync — no extra model download.
After changing wake words or threshold
- Save the Wake Word node in the editor (wake words and/or Detection Threshold).
- Compile the workflow (validates models download).
- Sync to the edge environment.
- Restart the workflow worker container.
- Confirm logs:
prediction_keys=['alexa'](notalexa_v0.1) andthreshold=0.50in init / detection lines.