# External model assets `models/` is a deployment directory, not a source-controlled package and not a wheel payload. Set `AX_MODEL_DIR` to this directory (or an identically laid out copy) at runtime. The authoritative inventory is [`src/ax_meeting_cpp/resources/model_assets.json`](../src/ax_meeting_cpp/resources/model_assets.json). It records every required file's relative path, byte size and SHA-256 for the two ASR choices: * `sensevoice`: standard ASR plus word timestamps. * `firered_punc`: FireRed AED and CT-Transformer punctuation (no word timings). The required layout is deliberately grouped by model family: ```text models/ ├── vad/ # vad.axmodel, CMVN, config ├── cam++/ # CAM++ speaker embedding model ├── sensevoice/ # model, CMVN/config, BPE and language queries ├── fireredasr/ # FireRed encoder/decoder, CMVN, dictionary, BPE, PE └── punc/ # CT-Transformer model and vocabulary ``` Before deploying a copied bundle, verify its integrity without loading any model: ```bash python3 tools/verify_assets.py \ --manifest src/ax_meeting_cpp/resources/model_assets.json \ --root /opt/ax-meeting/models --backend firered_punc ``` The default check only requires the declared files to exist. Add `--verify-size --verify-sha256` when an exact supplied asset set must be audited; hashes are informative rather than a runtime or build prerequisite. Model files retain their upstream terms. The source-code MIT license neither grants model redistribution rights nor asserts a license that was not supplied with the assets.