2026-07-13 23:59:42 +08:00
|
|
|
# AURA Omni: Online serving
|
2026-06-21 22:08:26 +08:00
|
|
|
|
|
|
|
|
`aura_omni` wires ASR, AURA, and Qwen3-TTS into one vLLM-Omni pipeline:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
ASR -> AURA -> Qwen3-TTS Talker -> Code2Wav
|
|
|
|
|
```
|
|
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
**Supported online path:** Realtime duplex at `/v1/realtime?duplex=1`.
|
|
|
|
|
|
|
|
|
|
The default deploy profile (`vllm_omni/deploy/aura_omni.yaml`) sets
|
|
|
|
|
`session_mode: duplex`. The `aura_omni` pipeline declares `duplex_plugin`, and
|
|
|
|
|
`DuplexOmniEngine` requires that mode (same pattern as MiniCPM-o duplex
|
|
|
|
|
deploys). Turn-based `chat/completions` is not a supported AURA online mode
|
|
|
|
|
against this profile.
|
|
|
|
|
|
|
|
|
|
`async_chunk` defaults to `false` in that file (safer if a turn-based
|
|
|
|
|
`OmniOrchestrator` ever loads it). Duplex Realtime Stage2→3 still needs
|
|
|
|
|
async chunks — use the smoke deploy below, or set `async_chunk: true`
|
|
|
|
|
yourself.
|
2026-06-21 22:08:26 +08:00
|
|
|
|
|
|
|
|
```bash
|
2026-09-22 00:26:54 +08:00
|
|
|
bash examples/online_serving/aura_omni/run_duplex_smoke_serve.sh
|
|
|
|
|
python examples/online_serving/aura_omni/smoke_duplex_realtime_client.py
|
2026-06-21 22:08:26 +08:00
|
|
|
```
|
|
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
Configure local checkpoints by editing per-stage `model` values in the deploy
|
|
|
|
|
or smoke YAML. The file sets `pipeline: aura_omni`, so the four-stage topology
|
|
|
|
|
is used even if the command-line `--model` points at one component checkpoint.
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
Silent Stage1 outputs (`<|silent|>` / id `151669`) skip TTS for that turn.
|
2026-06-21 22:08:26 +08:00
|
|
|
|
|
|
|
|
## GPU Utilization Recommendation
|
|
|
|
|
|
|
|
|
|
`gpu_memory_utilization` in `vllm_omni/deploy/aura_omni.yaml` controls how much
|
|
|
|
|
VRAM each stage can reserve. Start with this split for a single GPU:
|
|
|
|
|
|
|
|
|
|
- Stage 0 (ASR): `0.10`
|
|
|
|
|
- Stage 1 (AURA): `0.40`
|
|
|
|
|
- Stage 2 (Qwen3-TTS Talker): `0.20`
|
|
|
|
|
- Stage 3 (Qwen3-TTS Code2Wav): `0.20`
|
|
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
## TTS modes (stage extras)
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
When the duplex session supplies TTS extras, AURA text can feed Qwen3-TTS as:
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
- `Base`: voice clone from `tts_ref_audio` (optional x-vector-only mode)
|
|
|
|
|
- `CustomVoice`: predefined speaker (`tts_speaker`) with a CustomVoice checkpoint
|
|
|
|
|
on stages 2 and 3
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
Optional `tts_pass_token_ids` passes AURA assistant token ids into Talker
|
|
|
|
|
instead of detokenized text.
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
## Old chat / Gradio / curl scripts (unsupported)
|
2026-06-21 22:08:26 +08:00
|
|
|
|
2026-09-22 00:26:54 +08:00
|
|
|
`examples/online_serving/aura_omni/` still contains chat-completions, curl, and
|
|
|
|
|
Gradio helpers from an older turn-based path. They do **not** work against the
|
|
|
|
|
shipped duplex profile. That path was an incomplete stand-in before streaming
|
|
|
|
|
I/O and session history were available; it is not a supported AURA mode. Use
|
|
|
|
|
the Realtime duplex smoke client for online verification.
|