Add VibeVoice-ASR (Microsoft) — OpenAI-compatible audio transcription#579
Add VibeVoice-ASR (Microsoft) — OpenAI-compatible audio transcription#579Alfarouk-Baseten wants to merge 3 commits into
Conversation
… via vLLM Adds a passthrough Truss for microsoft/VibeVoice-ASR using vllm/vllm-openai:v0.14.1. Customers can point any OpenAI-compatible client at the deployment for speech-to-text with speaker labels and timestamps. Includes data/patch.py which applies three small in-place fixes to the installed vllm_plugin/model.py at container boot, working around upstream plugin/vLLM API incompatibilities. Verified end-to-end on H100: deployment boots cleanly, transcribes the JFK sample WAV with the expected JFK quote.
Reformats patch.py per the repo's ruff-format hook: - blank line after module docstring (PEP 8) - wrap long assert statements onto multiple lines - single-quoted strings → double-quoted (ruff's preferred style) - INSERT_2 triple-singles → triple-doubles (no embedded quotes, safe) Pure formatting change; patch.py's behavior is unchanged. Verified locally that all 3 patches still apply to a fresh copy of the upstream microsoft/VibeVoice plugin.
Heads-up on the failing
|
…load → weights:) The previous config used snapshot_download in start_command to fetch the 9.2 GB model weights at cold-start. On a first-time customer deployment (empty /cache/org), this download took >30 min on slower networks and exceeded the Baseten readiness health-check timeout, killing the container before vLLM serve started. Migrate to the post-PR-#573 weights: pattern: Baseten pre-downloads the weights at build time and mounts them at /models/vibevoice-asr. Cold-starts now skip the HF download entirely (~3 min instead of ~30 min on empty cache). The mount turns out to be writable, so generate_tokenizer_files can still write tokenizer.json etc. into the mount_location alongside the weights — no --tokenizer flag needed. Verified end-to-end: pushed to alfarouk as deployment wp587mp, cold-started in ~3 min (no Fetching N files), JFK WAV smoke test returns the correct transcript with no regression.
|
Closing in favor of basetenlabs/model-registry#163, which is the canonical path for adding a Baseten Model Library entry. The model-registry sync will publish this Truss to |
Summary
Adds
vibevoice-asr/— a passthrough Truss formicrosoft/VibeVoice-ASRrunning onvllm/vllm-openai:v0.14.1.Files
About
data/patch.pyMicrosoft's
vllm_plugin/model.pyhas three known incompatibilities with current vLLM releases:VibeVoiceForCausalLM— required for vLLM 0.14.1; without it, startup crashes withIndexError: list index out of rangeonavailable_gpu_memory[0]get_data_parseronVibeVoiceProcessingInfo— forward-compat for vLLM 0.21+mm_data_itemsrename try/except — forward-compat for vLLM 0.15+patch.pyapplies these in-place at container boot withassert-checked anchor strings. The script is idempotent and fails loudly at startup if Microsoft pushes an upstream change that breaks the anchors (rather than silent miscompile).When Microsoft fixes the plugin upstream, delete
data/patch.pyand remove thepython3 /app/data/patch.pyline fromconfig.yaml.Known limitations (documented in README)
max_tokensproportional to audio length (~20 tok/sec + buffer) — model doesn't reliably emit EOS so over-largemax_tokensproduces a repetition loop