Incident device : profil actif PatientTest a voice_id=zelda, mais seuls
damien.cvps + elodie.cvps sont déployés → voiceHandleOrThrow() levait
« aucune voix chargée ('zelda') » → speakText catch → TTS MUET (aucun son),
alors que STT + LLM fonctionnaient.
voiceHandleOrThrow bascule désormais sur defaultVoiceId (damien, toujours livré)
quand la voix demandée n'a pas de .cvps, au lieu de couper toute parole. Une
voix manquante dégrade gracieusement au lieu de rendre Kazeia muet.
Note (hors scope) : l'endpoint /voices reflète l'inventaire LEGACY Qwen3
(WAV+.bin), pas les .cvps CosyVoice → l'admin peut sélectionner une voix
non déployée. À réconcilier séparément.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>