Audio is the
llama_cpp path only. QAIRT bundles report audio: false and a QAIRT model given audio fails with GenieXError(-201201): Multimodal generation failed. Audio runs on --compute npu / gpu / cpu; the NPU is the default and fast path on Snapdragon.Step 1: Pull an audio-capable model
Audio support is not a metadata flag — it means the mmproj GGUF actually contains an audio encoder.google/gemma-4-E2B-it-qat-q4_0-gguf ships one: the Q4_0 weights (≈3.1 GiB) and the conformer mmproj (≈0.9 GiB) are pulled together, ~4.0 GiB total.
Step 2: Run it with geniex infer
Drop an absolute .wav / .mp3 path into the prompt (or drag the file into your terminal). Audio and image paths are auto-detected, and one prompt can carry both:
--compute npu, Snapdragon X Elite):
Record from the microphone with /mic
In an interactive session (launch geniex infer <model> with no -p), the /mic command records a clip and feeds it straight in — handy when you don’t have a file on disk. It only appears when the loaded model supports audio.
Ctrl-C stops the recording; GenieX saves it to a temp .wav and transcribes it.
Step 3: Use it on the local server
Start the server and send an OpenAI-compatibleinput_audio content part. input_audio.data takes the same three formats as an image URL — a local path, an HTTP/HTTPS URL, or a base64 data URL. A single message can mix image_url and input_audio:
openai-client equivalent.
Step 4: Use it from the Python SDK
Load withAutoModelForVision2Seq and pass paths to generate(images=[...], audios=[...]) — a single call can carry both. capabilities() confirms the mmproj handles audio before you send anything:
Supported formats and preprocessing
Channel/sample-rate/duration handling lives in the bundled llama.cpp mtmd audio path (third-party), not in GenieX — behavior may shift with the pinned llama.cpp version.
Failure modes
Next steps
- CLI reference — every
geniex inferflag. - Local server — the full OpenAI-compatible API.
- Python quickstart — VLM and audio inference from Python.
Was this page helpful?