From fc138f3ceba917b86452da14699ab2d3a33ac077 Mon Sep 17 00:00:00 2001 From: Gigi Date: Mon, 20 Oct 2025 22:55:15 +0200 Subject: [PATCH] feat(tts): select voice by detected/system language per utterance --- src/hooks/useTextToSpeech.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/hooks/useTextToSpeech.ts b/src/hooks/useTextToSpeech.ts index e903ea37..fb90e98f 100644 --- a/src/hooks/useTextToSpeech.ts +++ b/src/hooks/useTextToSpeech.ts @@ -152,11 +152,17 @@ export function useTextToSpeech(options: UseTTSOptions = {}): UseTTS { charIndexRef.current = 0 const u = createUtterance(text) - if (langOverride) u.lang = langOverride + if (langOverride) { + u.lang = langOverride + // try to pick a voice that matches the override + const available = voices + const match = available.find(v => v.lang?.toLowerCase().startsWith(langOverride.toLowerCase())) + if (match) u.voice = match + } utteranceRef.current = u synth!.speak(u) - }, [supported, synth, createUtterance, rate]) + }, [supported, synth, createUtterance, rate, voices]) const pause = useCallback(() => { if (!supported) return