Skip to content

fix(stt): accept all profile languages on transcribe/retranscribe - #1198

Open
vincentfranstyo wants to merge 1 commit into
jamiepine:mainfrom
vincentfranstyo:fix/stt-language-pattern
Open

vincentfranstyo wants to merge 1 commit into
jamiepine:mainfrom
vincentfranstyo:fix/stt-language-pattern

Conversation

@vincentfranstyo

Copy link
Copy Markdown

Problem

POST /transcribe and POST /captures/{id}/retranscribe reject Polish (and every other language added after the original ten) with a 422, even though profiles and /speak accept them and Whisper transcribes them fine:

curl -X POST http://127.0.0.1:17493/captures/any-id/retranscribe \ -H "Content-Type: application/json" -d '{"language":"pl"}'
# 422 Unprocessable Entity

TranscriptionRequest.language and CaptureRetranscribeRequest.language still use the old ^(en|zh|ja|ko|de|fr|ru|pt|es|it)$ pattern.

Fix

Both fields now use the same 23-language pattern as VoiceProfileCreate / GenerationRequest. No other code changes; the Whisper backends already pass the code straight through.

Testing

  • Added backend/tests/test_stt_language.py: checks both STT models share the profile pattern, accept pl, still default to None, and still reject unknown codes. Fails on main, passes with this change.
  • ruff check / ruff format --check clean on the new test.
  • Not tested against a running server.

Fixes #1095

TranscriptionRequest and CaptureRetranscribeRequest only allowed the
original ten Qwen languages, so codes like pl returned 422 even though
Whisper handles them. Use the same 23-language pattern as profiles.
doublesharp added a commit to doublesharp/voicebox-ds that referenced this pull request Oct 29, 2026
Use the shared QueryClient for offline requests, preserve custom server URLs through startup and migration, retain capture decode diagnostics, preserve refinement language, accept supported STT languages, and explain LuxTTS short-input errors. Adapt upstream PRs jamiepine#1208, jamiepine#1204, jamiepine#1219, jamiepine#1218, jamiepine#1198, jamiepine#1199, jamiepine#1220 and jamiepine#1180; retain remote reconnect refreshes and correctly migrate the legacy bundled port.

Wait for the preview output context to resume before playing. Cancel superseded starts and release preview nodes/object URLs on replacement, completion, failure and unmount. Add CI regressions for the upstream integration and preview lifecycle.

Validation: 292 frontend tests on this candidate; 414 frontend tests with the working UI changes; 53 backend tests; app/web/Tauri frontend typechecks and both frontend builds. Independent review accepted the playback change. Native first-click/autoplay, acoustic output, packaging and model quality remain unverified.

Co-authored-by: vincentfranstyo <66989751+vincentfranstyo@users.noreply.github.com>
Co-authored-by: maxazure <405711+maxazure@users.noreply.github.com>
Co-authored-by: FelixKruger <262215022+FelixKruger@users.noreply.github.com>
Co-authored-by: Tony25032 <141424750+Tony25032@users.noreply.github.com>
Co-authored-by: mvoloch <274143174+mvoloch@users.noreply.github.com>
Co-authored-by: Lvigentini <11659311+Lvigentini@users.noreply.github.com>

This branch has not been deployed

No deployments
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.

Polish language (pl) accepted in TTS but rejected in STT/transcribe endpoints

1 participant