AURA Omni: Online serving
aura_omni serves AURA as a native multi-stage vLLM-Omni pipeline:
Qwen3-ASR -> AURA/Qwen3-VL -> Qwen3-TTS Talker -> Qwen3-TTS Code2Wav
AURA's supported online path is Realtime duplex (/v1/realtime?duplex=1).
The default deploy profile sets session_mode: duplex because the pipeline
declares duplex_plugin and DuplexOmniEngine requires that mode.
This is AURA v1 / Qwen3-VL (silent / ChatML ids 151669 / 151645), not
AURA v2 / Qwen3.5-VL.
Duplex Realtime (only supported online path)
Stage2→3 codec handoff needs async_chunk: true. The default
vllm_omni/deploy/aura_omni.yaml keeps async_chunk: false as a safer
baseline (turn-based OmniOrchestrator never sees the duplex async-chunk
gate). For Realtime, use the smoke deploy (already async_chunk: true) or
set that flag yourself:
bash examples/online_serving/aura_omni/run_duplex_smoke_serve.sh
python examples/online_serving/aura_omni/smoke_duplex_realtime_client.py
Smoke deploy file: examples/online_serving/aura_omni/aura_omni_duplex_smoke.yaml.
Equivalent serve with the default topology and async chunks enabled:
# Copy or edit so async_chunk: true, then:
vllm serve aurateam/AURA \
--omni \
--port 8091 \
--deploy-config examples/online_serving/aura_omni/aura_omni_duplex_smoke.yaml \
--served-model-name aurateam/AURA \
--trust-remote-code
Connect clients to /v1/realtime?duplex=1. Silent Stage1 outputs gate TTS (no
audio for that turn). Overlapped input and vision-follow are AURA duplex
capabilities.
Browser UI
AURA has no client VAD: control is push-to-talk on the shared shell from
#7585
(examples/online_serving/realtime_web/), profile
aura-ptt (hold = is_speech=true PCM + sticky frames; release = commit;
silent+frames for vision-follow). Thin wrapper:
python -m examples.online_serving.aura_omni.realtime_web \
--ws-backend ws://127.0.0.1:8099 --model aurateam/AURA --port 7862
Do not fork a separate aura_omni/realtime_web asset tree; MiniCPM / Qwen
profiles are unchanged and hide the PTT control.
Per-stage models
Edit model on each stage in vllm_omni/deploy/aura_omni.yaml (or the smoke
YAML) for local checkpoints:
- Stage 0 ASR:
Qwen/Qwen3-ASR-1.7B - Stage 1 AURA:
aurateam/AURA - Stage 2/3 TTS:
Qwen/Qwen3-TTS-12Hz-1.7B-Base(or CustomVoice)
GPU utilization
Tune gpu_memory_utilization per stage. Baseline on one large GPU:
- Stage 0 (ASR):
0.10 - Stage 1 (AURA):
0.40 - Stage 2 (Talker):
0.20 - Stage 3 (Code2Wav):
0.20
Old chat / Gradio / curl scripts (unsupported)
openai_chat_completion_client.py, run_curl_multimodal_generation.sh, and
run_gradio_demo.sh target the older turn-based Omni path. They do not
work against the shipped session_mode: duplex profile.
That turn-based path was an incomplete June-era stand-in: vLLM-Omni did not yet support streaming I/O for this stack, and adding session history then would have required a much larger orchestrator change. It is not a supported AURA mode. Do not run those scripts against the default deploy. Prefer the duplex smoke client above.
Offline
For offline inference, see
examples/offline_inference/aura_omni.