Repository navigation
Let another app read a whole video in one pinned voice - #211
Merged
Merged
Conversation
Gecko Video Creator renders through Notes' speech, one chunk per request, and needs what Notes' own render worker does: - the account's voice when none is chosen, where `model` defaults to a fal.ai voice; - the engine pinned after the first chunk, so a Deepgram hiccup partway through cannot read one chunk on fal.ai in a different voice. POST /speech/tts takes an optional `provider` and `voice`. With them, both are resolved by resolve_render_speech, which is now shared with the worker. The response names them in X-Speech-Provider and X-Speech-Voice, for the caller to send back on every later chunk. Without `provider`, a request means exactly what it did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fiRJAt34ag62iPiuMkNhm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Gecko Video Creator's renderer (M2) reads its narration through Notes' speech, one chunk per request, so voices, keys and the TTS cache stay in one place. It needs two things the endpoint couldn't give it:
TTSRequest.modeldefaults to a fal.ai voice, which isn't the same thing.What changes
POST /api/settings/speech/ttstakesprovider(auto | deepgram | fal) andvoice, where null means the account's voice.providerset, both are resolved byvideo/worker.resolve_render_speech, which is pulled out of_tts_callerso the worker and the endpoint pin the same way.X-Speech-ProviderandX-Speech-Voice, for GVC to send back on every later chunk.provider, a request means exactly what it did: read-aloud, export and the frontend are untouched.docs/gecko-video-creator.md§9.1 marks this row done.Tests
tests/test_video_voice.py, with providers faked as the existing tests do:provideris unchanged, with no headers.pytest -q: 1351 passed, 1 skipped.🤖 Generated with Claude Code
https://claude.ai/code/session_016fiRJAt34ag62iPiuMkNhm
Generated by Claude Code