Add VibeVoice Realtime TTS export - #728
Conversation
Add source-faithful staged ONNX export for the pinned Microsoft VibeVoice Realtime checkpoint, with explicit cache state, host orchestration metadata, processor contracts, and graph/parity coverage. Reject unsupported ORT GenAI configuration rather than advertising incomplete runtime support. Co-authored-by: Copilot App <[email protected]> Signed-off-by: Justin Chu <[email protected]>
Performance Comparison
|
There was a problem hiding this comment.
🔵 Needs a closer look
It introduces a large new multi-stage model/task/config + exporter behavior surface area where correctness depends on nuanced runtime and source-parity constraints that warrants final human review.
Pull request overview
Adds a source-faithful, host-orchestrated multi-stage Mobius export pipeline for VibeVoice Realtime TTS (microsoft/VibeVoice-Realtime-0.5B), wiring it into the registry/build system and ensuring runtime exporters fail-closed (ORT GenAI) or emit advisory-only metadata (ONNX GenAI), with extensive source-parity and contract tests.
Changes:
- Introduces
VibeVoiceStreaming*config/model/task to export six explicit ONNX stages (embedding, LM backbone, TTS backbone, speech connector, diffusion head, audio decoder) with explicit KV + conv-cache I/O. - Registers the new architecture/model_type, pins the first Transformers config probe to an immutable revision, and annotates source revision metadata where applicable.
- Adds L1–L3 test coverage (graph contracts, cache/metadata contracts, CUDA fp16 GQA lowering expectations, source parity + continuation), plus CI requirements and testdata case metadata.
File summaries
| File | Description |
|---|---|
| tests/weight_alignment_test.py | Excludes vibevoice_streaming from initializer-name identity mapping assumptions. |
| tests/model_coverage_test.py | Marks architecture alias as covered by the new staged VibeVoice Realtime tests. |
| tests/build_graph/speech_test.py | Adds stage expectations for the new vibevoice-streaming-tts task. |
| tests/_test_configs.py | Adds tiny-config overrides for vibevoice_streaming graph-build coverage. |
| testdata/cases/audio/vibevoice-realtime-0.5b.yaml | Adds pinned-case metadata explaining why golden L4/L5 isn’t asserted for host-orchestrated Realtime. |
| src/mobius/tasks/_vibevoice.py | Refactors conv-cache helpers to shared cache utilities. |
| src/mobius/tasks/_vibevoice_streaming.py | New task exporting six Realtime stages and embedding host-protocol metadata in graph properties. |
| src/mobius/tasks/_cache_utils.py | Adds shared helpers for causal-conv cache inputs/outputs. |
| src/mobius/tasks/init.py | Exposes and registers VibeVoiceStreamingTask under vibevoice-streaming-tts. |
| src/mobius/models/vibevoice.py | Extends tokenizer decoder to optionally preserve ratio order (needed by Realtime decoder). |
| src/mobius/models/vibevoice_streaming.py | New staged Realtime model with strict checkpoint weight routing and explicit mask/cache behavior. |
| src/mobius/models/vibevoice_streaming_test.py | New L1–L3 tests: stage graph contracts, cache I/O, metadata, CUDA fp16 GQA lowering, and source parity. |
| src/mobius/models/init.py | Exports VibeVoiceStreamingForConditionalGeneration. |
| src/mobius/integrations/transformers/_builder.py | Pins first config probe for Realtime model ID and tags source revision metadata for vibevoice_streaming. |
| src/mobius/integrations/transformers/_builder_test.py | Tests that “no revision provided” still pins the first config probe for Realtime. |
| src/mobius/integrations/ort_genai/auto_export.py | Fails closed for vibevoice_streaming with an explicit host-orchestration error. |
| src/mobius/integrations/onnx_genai/auto_export.py | Emits advisory-only component contract metadata for vibevoice_streaming. |
| src/mobius/_registry.py | Registers vibevoice_streaming and its architecture-discriminating alias, including pinned model_id/revision. |
| src/mobius/_configs/vibevoice.py | Adds streaming tokenizer/diffusion/config dataclasses, parsing + validation, and torch_dtype-to-dtype resolution. |
| src/mobius/_configs/init.py | Exports the new streaming config types from the configs package. |
| requirements/ci/vibevoice.txt | Pins the Microsoft VibeVoice source package commit for parity tests (installed in CI with --no-deps). |
Review details
- Files reviewed: 21/21 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
🏗️ Architecture Diff
No architecture changes detected. ✅ Legend: ⚪ No change · 🔵 Minor (attrs/inits) · 🟡 Moderate (nodes added/removed) · 🔴 Major (interface changed) |
Keep the specialized TTS backbone invocation signature-compatible, record its architecture alias as source-parity covered, and apply the repository formatter. Co-authored-by: Copilot App <[email protected]> Signed-off-by: Justin Chu <[email protected]>
Summary
microsoft/VibeVoice-Realtime-0.5Bat6bce5f06044837fe6d2c5d7a71a84f0416bd57e4: embedding, the 4-layer lower LM backbone, 20-layer TTS backbone, speech connector, diffusion velocity head, and causal audio decoder.79e516a3e20b599f137c9da03410a2a0b473b63b, adds source parity/continuation coverage, full-config validation, processor-contract coverage, exhaustive weight routing, revision-pin protection, and honest runtime metadata.Validation
9.536743e-7; FP32 CPU 5.248908 s / RTF 39.3668.Runtime boundaries