Skip to content

docs(meta): add Muse Voice realtime setup - #1138

Merged
ryan-crabbe-berri merged 5 commits into
BerriAI:mainfrom
seyeong-han:docs/meta-muse-voice-realtime
Sep 13, 2026
Merged

docs(meta): add Muse Voice realtime setup#1138
ryan-crabbe-berri merged 5 commits into
BerriAI:mainfrom
seyeong-han:docs/meta-muse-voice-realtime

Conversation

@seyeong-han

@seyeong-han seyeong-han commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Documents Meta Muse Voice realtime transcription as shipped in BerriAI/litellm#39395.

docs/providers/meta.md now drops the MODEL_API_KEY story (the code reads only META_API_KEY, or api_key in litellm_params) and replaces the short Muse Voice blurb with a full section: proxy config, the /v1/realtime?intent=transcription connection URL, the GA session.update shape with the accepted audio/pcm rates and channel count, language handling and the supported language list, the push to talk versus server VAD mode table (turn_detection: null plus input_audio_buffer.commit, or server_vad plus input_audio_buffer.end), the input_audio_buffer.append limits and which client events are dropped, the emitted event table with item_id and usage.seconds, per second pricing and trailing duration billing on close, the api_base override rule, guardrail behaviour with the push to talk caveat, and a runnable Python websockets client.

docs/realtime.md lists Meta Muse Voice under Supported Providers.

The session.update rules are a field table and the longer paragraphs are split into short blocks, so the section reads as reference material rather than prose.

Validation

node scripts/check-writing-style.js docs blog release_notes passes. python3 scripts/check-docs.py docs (from main, the branch predates the script) reports no findings for docs/providers/meta.md or docs/realtime.md. npm run build succeeds and the built page renders the #muse-voice-realtime-transcription anchor that docs/realtime.md links to.

The Python example was run unchanged (apart from port and WAV path) against a local proxy on the PR branch with a real Meta API key; it printed the exact output shown in the page and the proxy logged response_cost: 6.8e-05 for the 1.36 s clip.

Every behavioural claim on the page was then checked line by line against the implementation (close codes, when usage is present on completed, the intent=transcription model rewrite, what the logs and spend log contain) and corrected where the first draft overstated it.

LiteLLM tests/documentation_tests/test_env_keys.py still finds META_API_KEY in the docs.

@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
litellm Ready Ready Preview Sep 13, 2026 1:04am UTC

Request Review

@seyeong-han

Copy link
Copy Markdown
Contributor Author

Companion code PR: BerriAI/litellm#39395

@seyeong-han

Copy link
Copy Markdown
Contributor Author

@mateo-berri Could you review this companion docs PR? Its MODEL_API_KEY documentation unblocks code-quality and documentation checks on BerriAI/litellm#39395.

Drop the MODEL_API_KEY story; the code reads only META_API_KEY or the
api_key in litellm_params. Replace the short Muse Voice blurb with the
proxy config, the intent=transcription connection URL, the GA
session.update shape and its accepted rates, channels and languages,
the push to talk versus server VAD mode table, the append limits and
dropped client events, the emitted event table with item_id and
usage.seconds, per second pricing, the api_base override rule, the
guardrail behaviour and push to talk caveat, and a runnable Python
websockets client verified against a live proxy.

List Meta Muse Voice under Supported Providers on the realtime page.
@ryan-crabbe-berri

Copy link
Copy Markdown
Contributor

Pushed a refactor matching the code at 0e435e4148: dropped MODEL_API_KEY and documented session shapes, modes, events, pricing and guardrails.

Say api_key falls back to META_API_KEY, that model is required in the
URL, and that session.created follows the upstream connect. Describe
the intent=transcription model rewrite, the untyped turn_detection
object, the 1006 close on an invalid session.update or protocol
violation, the normalized session.updated shape, the optional usage on
completed events and what usage.seconds measures, the upstream close
error message, the relayed 1000 close reason, what the logs and spend
log hold, the guardrail ordering, the per-connection guardrails query
parameter, and the pre-setup audio buffering. Make the example client
tolerate a completed event without usage.
Turn the session.update rules paragraph into a field table, split the
remaining long paragraphs into two or three sentence blocks and drop
repeated phrasing. No behavioural claim changes.
@ryan-crabbe-berri
ryan-crabbe-berri merged commit 7edb332 into BerriAI:main Sep 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants