fix(voice): klarer Befehl = STOP, Gespraech = 30s passiv (kein zweiter Gong)
Nach dem Re-Arm-Fix rief die App resume() → das spielte einen zweiten Gong und oeffnete ein neues Aufnahme-Fenster, obwohl Stefan nur einen Steuerbefehl gab. Sein gewuenschtes Verhalten: - Klarer Befehl (Fast-Path, speak=false, z.B. Liedersteuerung) = KEINE Konversation → STOP: direkt zurueck aufs Wake-Word (kein Gong, keine Aufnahme, kein 30s-Fenster). - Gespraech (gesprochene Antwort) = kein neuer Gong, direkt 30s passives Lauschen (weiterreden wie mit einem Menschen), 30s still → Wake-Word. endConversation(skipPassive) neu: true springt direkt zu armed statt in passives Lauschen. onPlaybackFinished (Gespraech) → passiv (Vordergrund) bzw. direkt armed (Hintergrund); stille Fast-Path-Antwort → skipPassive; manueller Stop-Button → skipPassive. resume() bleibt nur noch Mic-Fail-Retry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -441,7 +441,10 @@ class WakeWordService {
|
||||
* wuerde sonst OpenWakeWord.stop() rufen weil bargeListening noch true
|
||||
* ist, und unseren frisch re-armierten Listener killen.
|
||||
*/
|
||||
async endConversation(): Promise<void> {
|
||||
/** @param skipPassive true = KEIN passives Lauschen, direkt zurueck aufs
|
||||
* Wake-Word (armed). Fuer klare Steuerbefehle (Fast-Path) — nach
|
||||
* "nächster Titel" will Stefan kein 30s-Fenster, sondern Stop. */
|
||||
async endConversation(skipPassive: boolean = false): Promise<void> {
|
||||
if (this.state !== 'conversing') {
|
||||
import('./logger').then(m => m.reportAppDebug('wake.end',
|
||||
`endConversation called but state=${this.state} → noop`)).catch(()=>{});
|
||||
@@ -461,7 +464,7 @@ class WakeWordService {
|
||||
// (Phase 3) filtert fremde Stimmen weg, der User kann ohne erneute
|
||||
// Anrede weitersprechen.
|
||||
const passiveMs = await loadPassiveListenMs();
|
||||
if (passiveMs > 0 && this.nativeReady) {
|
||||
if (!skipPassive && passiveMs > 0 && this.nativeReady) {
|
||||
this.enterPassiveListening(passiveMs);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user