Skip to content

ElevenLabs: default model is eleven_v3 - #36

Merged
willwade merged 2 commits into
mainfrom
feat/elevenlabs-v3-default
Sep 4, 2026
Merged

ElevenLabs: default model is eleven_v3#36
willwade merged 2 commits into
mainfrom
feat/elevenlabs-v3-default

Conversation

@willwade

@willwade willwade commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Default ElevenLabs model is now eleven_v3 (was eleven_multilingual_v2, hardcoded). Rationale: most capable model, and the SpeechMarkdown dialect layer keeps markup correct for it out of the box — default SpeechMarkdown now renders as v3 audio tags ([pause], [whispers], "/IPA/"); the /with-timestamps fallback from ElevenLabs: degrade gracefully when /with-timestamps is rejected #35 covers boundary requests if v3 rejects that variant.
  • modelId credential still overrides — set eleven_multilingual_v2 / eleven_flash_v2_5 for <break> markup or longer character limits (v3: 5,000 chars vs multilingual_v2: 10,000).
  • Tests pin the invariant that the default model selects the v3 dialect (default + elevenlabs_smd_platform asserted together).
  • The real-alignment live test is pinned to eleven_multilingual_v2 — it exists to verify the /with-timestamps JSON alignment path specifically.
  • README + .env.example updated.

Behavior change note

Callers relying on the old default get audio-tag output instead of <break> markup for SpeechMarkdown pauses (and the v3 voice/limits). Plain text is unaffected; explicit modelId users are unaffected.

Test plan

The most capable model, and the SpeechMarkdown dialects keep markup
correct for it out of the box: default SpeechMarkdown now renders as
v3 audio tags ([pause], [whispers], "/IPA/"); set modelId to a
pre-v3 model for <break> markup or the longer character limits.

The model_id tests now pin the invariant that the default selects the
v3 dialect; the real-alignment live test is pinned to multilingual_v2
(it verifies the /with-timestamps JSON path specifically).
The test file added in #35 was merged on stale green checks: its final
commit actually failed lint.yml/test.yml (unused TtsEngine import,
doc_markdown, map_unwrap_or under clippy pedantic -D warnings), leaving
main red. Fix the lints; verified against the exact CI command
(clippy --all-targets -- -D warnings with the Linux feature set) and
cargo fmt --all --check.
@willwade
willwade merged commit 8666efd into main Sep 4, 2026
22 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.

1 participant