fix(wake-word): manueller Mikro-Stop beendet Konversation, zurueck zu armed
Bug: Nach Wake-Word "Computer" → conversing → User drueckt manuell den Mikro-Button um zu stoppen → Audio wird gesendet, aber state bleibt 'conversing'. Nach ARIAs Antwort oeffnet sich automatisch wieder das Mikro fuer Multi-Turn — obwohl der User explizit den Knopf gedrueckt hat um zu signalisieren "ich bin fertig". Fix: Im handleVoiceRecording (= manueller Stop ueber VoiceButton) wird nach dem Send wakeWordService.endConversation() gerufen wenn aktuell in conversing-State. Das setzt zurueck auf 'armed' und startet openWakeWord wieder fuer passives Lauschen. ARIAs Antwort kommt durch, TTS spielt, aber resume() ist dann no-op weil state schon 'armed'. Bei VAD-Auto-Stop (silence-callback im Wake-Word-Pfad) bleibt das Multi-Turn-Verhalten unveraendert — das ist die "natuerliche" Pause und passt zum Konversations-Modus. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -770,6 +770,17 @@ const ChatScreen: React.FC = () => {
|
|||||||
...(location && { location }),
|
...(location && { location }),
|
||||||
});
|
});
|
||||||
scheduleStaleAudioCleanup(audioRequestId, result.durationMs);
|
scheduleStaleAudioCleanup(audioRequestId, result.durationMs);
|
||||||
|
|
||||||
|
// Manueller Mikro-Stop waehrend Wake-Word-Konversation: User hat explizit
|
||||||
|
// den Knopf gedrueckt → er moechte nicht in den automatischen Multi-Turn-
|
||||||
|
// Modus, sondern nach ARIAs Antwort zurueck zu passivem Wake-Word-Lauschen.
|
||||||
|
// Bei VAD-Auto-Stop (Wake-Word-Pfad) laeuft das ueber den silence-callback
|
||||||
|
// und endet mit resume() — der manuelle Stop hier ist der "ich bin fertig"-
|
||||||
|
// Knopf.
|
||||||
|
if (wakeWordService.isConversing()) {
|
||||||
|
console.log('[Chat] Manueller Stop in Konversation → endConversation, zurueck zu armed');
|
||||||
|
await wakeWordService.endConversation();
|
||||||
|
}
|
||||||
}, [getCurrentLocation, interruptAriaIfBusy, scheduleStaleAudioCleanup]);
|
}, [getCurrentLocation, interruptAriaIfBusy, scheduleStaleAudioCleanup]);
|
||||||
|
|
||||||
// Datei auswaehlen → zur Pending-Liste hinzufuegen
|
// Datei auswaehlen → zur Pending-Liste hinzufuegen
|
||||||
|
|||||||
Reference in New Issue
Block a user