推論系統
vLLM-Omni 0.29 RC Brings Full-Duplex Voice into a Unified Runtime, but Barge-In Support Still Varies by Model
The new release serves MiniCPM-o 4.5, PersonaPlex, and Nemotron VoiceChat through a shared WebSocket runtime, while adding diffusion batching, parallelism, and component offloading. It remains a pre-release, and some endpoints silently fall back to turn-based voice, so a successful connection alone does not confirm full-duplex capability.

vLLM-Omni released `0.29.0rc1` on September 10 and completed its full-duplex serving documentation on September 11. This update brings the previously experimental voice path into a unified runtime: MiniCPM-o 4.5, PersonaPlex, and Nemotron VoiceChat can continue receiving audio through persistent WebSocket sessions while the model is producing speech. The runtime handles overlapping speech, playback acknowledgments, connection recovery, and session state, while applications remain responsible for audio capture, playback, resampling, and some VAD.
For existing OpenAI Realtime users, the primary entry point is `WS /v1/realtime?duplex=1`; users who need lower-level lifecycle events can use the experimental `/v1/duplex` endpoint. Deployment configuration must explicitly specify `session_mode: duplex`, and the model pipeline must also provide a duplex adapter. Notably, when an adapter is unavailable, the Realtime endpoint may fall back to standard turn-based processing. Clients should therefore inspect `session.created.session.capabilities` rather than treating a successfully established HTTP or WebSocket connection as a capability probe.
The same release candidate also expands scheduling capabilities for non-text models: BAGEL and Boogu-Image add request batching; SANA-Video supports tensor, sequence, and CFG parallelism; and DiT and text encoders can be selectively offloaded. Multi-stage serving now uses a centralized configuration parser and can initialize colocated stages in parallel, with device-memory checks and phase-lock protection.
The limitations are equally specific. Although PersonaPlex can handle overlapping speech, it is currently still marked `supports_barge_in=false`; it has not yet demonstrated the ability to destructively interrupt playback at the playback cursor and roll back model state. Session capacity also depends on the deployment YAML. PyPI classifies this version as a pre-release, and the native protocol may still change. Engineering teams should test interruption semantics, backpressure, deduplication after reconnection, peak GPU memory usage, and fairness across multiple sessions before considering replacing a production turn-based server.