Speech recognition may transcribe in one locale while the selected synthesis voice supports another. Browser voice lists also arrive asynchronously and vary by operating system.
The system needs a preferred voice plus language-compatible fallbacks. Recognition should follow the user's input setting, while synthesis follows the reply and companion voice profile.
What was actually going wrong
One language code was reused for microphone recognition, model behavior, and voice selection.
What I tried
- Selecting a voice by array position
- Assuming preferred voices exist when the page loads
- Changing the companion identity when a fallback voice was used
Voice availability is loaded before selection, candidates are filtered by language, and stable companion preferences choose among them.
Why it worked
Platform differences affect sound selection without changing the language or character prompt.
Voice coherence requires graceful matching, not one hardcoded system voice.
Where EACI uses this today
Caelum and Chad live chat retain distinct voice preferences with platform-safe fallbacks.
This journal covers real engineering on EACI Companion / The Veil. Companions include Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael. Journal articles stay family-safe in content. See Privacy and Ethics.