Repository navigation
Fin de parole : fermer quand on dit merci - #24
NeuTroNBZh wants to merge 4 commits into
Conversation
|
Essai sur le matériel (satellite Waveshare, firmware 0.4.0) : après « merci », le modèle vocal n'a pas délégué Correctif ajouté (303265f) : le serveur relit la transcription de la phrase quand Cornelius commence à répondre. Si elle n'est faite que d'une formule de fin (« merci », « merci beaucoup, c'est tout », « au revoir »), la fermeture est demandée sans attendre l'outil. « Oui merci » ou « merci, et la météo ? » ne ferment pas. L'outil reste proposé, et la consigne de délégation le cite en exception. Vérifié : |
|
Essai sur le matériel validé avec 303265f (satellite Waveshare, firmware 0.4.0) : « merci » reconnu dans la transcription ( |
|
Ajout (commit suivant) : Autres formules de fin, propres au foyer (« c'est bon Jarvis », « ciao »). Une par ligne sous la case, 20 au plus et 60 caractères. Elles ferment quand elles forment toute la phrase, et elles sont données au modèle en données JSON. Route |
|
Merci Louis, la détection est bien pensée : « Merci de me rappeler demain » ne ferme pas la conversation (liste fermée de mots de clôture), je l'ai vérifié avec la vraie fonction. Avant de fusionner, il y a des points à reprendre. À corriger
Rebase
|
Nouvelle case dans « Fin de parole », désactivée par défaut : quand la personne clôt l’échange sans nouvelle demande (« merci », « c’est tout », « au revoir »), Cornelius répond d’une formule courte et délègue l’outil conversation__end. La conversation se ferme 2 s après la fin de sa réponse, au plus tard 10 s après, sans tenir compte de la parole entendue dans la pièce : sur un satellite, on peut parler ensuite à quelqu’un d’autre sans que Cornelius continue d’écouter. Réglage conservé dans end_word_preferences, route PATCH /api/admin/end-word et champ endWord de l’état. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Essai sur un satellite : après « merci », le modèle vocal n'a pas délégué conversation__end (la consigne « ne pas déléguer une salutation » l'emportait) et seul le silence a fermé la conversation. Le serveur relit maintenant la phrase de la personne quand Cornelius commence à répondre : si elle n'est faite que d'une formule de fin (« merci », « merci beaucoup, c'est tout », « au revoir »), la fermeture est demandée sans attendre l'outil. « Oui merci » ou « merci, et la météo ? » ne ferment pas. L'outil reste proposé, et la consigne de délégation le cite désormais en exception. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sous « Fermer quand on dit merci », le champ « Autres formules de fin » ajoute celles du foyer (« c'est bon Jarvis », « ciao »), une par ligne, 20 au plus et 60 caractères. Elles ferment quand elles forment toute la phrase, à la ponctuation et à la casse près, et sont données au modèle avec l'outil conversation__end (en données JSON, jamais en consignes). Route PATCH /api/admin/end-word/phrases, champ endPhrases de l'état, table end_word_phrases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Une vraie demande transcrite après le mot de fin (« merci… ah, et la météo ? ») l'annule (cancelEnd) ; une hésitation (« euh », « oui ») ne compte pas. - Transcription arrivée après le début de la réponse : la phrase est examinée après 700 ms sans nouvelle transcription, en plus du début de réponse ; « merci » ne préfixe plus la phrase suivante. - Le serveur laisse décider le modèle quand la phrase répond à une question de Cornelius, quand une alarme sonne (« c'est bon » ou « arrête » passent par alarms__respond) ou quand elle contient « ça va » (sauf « ça va aller »). Description de conversation__end complétée. - Satellite : la fin de réponse est la fin de lecture estimée (audio 16 kHz reçu plus vite qu'il n'est joué), car la fermeture vide la file du satellite ; le plafond de 10 s ne coupe plus une réponse audible en cours. - Doc : annulation, cas laissés au modèle, fin de lecture, « Autres formules de fin » dans l'administration, champs endWord/endPhrases et routes PATCH /api/admin/end-word et /end-word/phrases. - Tests : annulation, ordre inversé des événements, question, alarme, lecture au-delà de 10 s, isNewRequest, « ça va bien, merci ». Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
76cbb40 to
265e05d
Compare
|
Merci pour la relecture détaillée. Corrigé dans 265e05d, branche rebasée sur
|
|
Merci, les six points sont traités : « Merci » puis une vraie demande ne ferme plus, « ça va bien merci » non plus, rien ne se ferme pendant une alarme, et la fin de lecture du satellite est estimée. En sondant avec les vraies fonctions (vrai
Le test Rebase : #40 est fusionnée. Conflits sur |
|
Salut Louis, petite relance sur celle-ci : il reste les trois cas de ma dernière relecture (une confirmation comme « non, c'est bon » qui annule la fin, l'ordre inversé entre
Pas d'urgence : dis-nous simplement si tu comptes la reprendre, ou si tu préfères qu'on s'en charge. |
Ticket : #23
But
Pouvoir clore une conversation à la voix (« merci », « c'est tout », « au revoir »). Sur un satellite, seul le silence la ferme, et la voix d'une autre personne dans la pièce relance le délai sans fin.
Ce qui change pour l'utilisateur
Comment
Trois commits, plus un de corrections après relecture.
conversation__end(server/live/conversation-end.ts), sans argument, proposé à la délégation seulement si le réglage est actif ; consignes dansliveConfiguration().LiveTransportappelleSessionController.requestEnd(scope)(refusé pour une conversation périmée ou non prête).endWordFinished()ferme quand Cornelius se tait depuis 2 s, ou 10 s après la demande. Migrationend_word_preferences, routePATCH /api/admin/end-word, champendWordde l'état, case dansSilenceCloseSettings.tsx.isClosingPhrase()reconnaît une phrase faite seulement d'une formule de fin (vocabulaire fermé, sans « oui » ni « non ») ;LiveTransport.endOnClosingPhrase()l'examine dans la transcription de la personne (journal : sourcetranscription).end_word_preferencescomplétée parend_word_phrases(seconde migration, en fin de liste, rejouable), routePATCH /api/admin/end-word/phrases, champendPhrasesde l'état,cleanEndPhrases(), formules données au modèle.SessionController.cancelEnd(): une phrase transcrite qui n'est pas une formule de fin et qui est une vraie demande (isNewRequest()) annule la fin demandée (journal « Fin de conversation annulée »).userTurn: en plus du début de la réponse, la phrase est examinée 700 ms après la dernière transcription ; une transcription arrivée après le début de la réponse est donc détectée, et ne préfixe plus la phrase suivante.AlarmsToolBridge.ringing(); « c'est bon », « arrête » vont àalarms__respond) et quand la phrase contient « ça va » (sauf « ça va aller »). La description deconversation__endle dit aussi.noteAssistantOutput(scope, playedUntil)reçoit la fin de lecture estimée (PCM 16 kHz envoyé plus vite qu'il n'est joué). Le plafond de 10 s ne s'applique plus pendant une réponse audible.CHANGELOG.md.Vérifications
beta(0.3.0), avec le volume du satellite (Satellites : régler le volume à la voix #38).npm run check: OK ;prettiersur les fichiers modifiés.conversation-end,controller,live,storage,satellite-conversation,alarms*: 199/199. Tests ajoutés après relecture : annulation par une vraie demande (et pas par une hésitation), ordre inversé des événements, réponse à une question, alarme qui sonne, lecture au-delà de 10 s,isNewRequest, « ça va bien, merci ».transcription). Les corrections après relecture ne sont pas encore essayées sur le matériel.