From 1a6f63383651c2a8a4c5d28a79c7404273910449 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 10 May 2026 11:59:13 +0200 Subject: [PATCH] fix(audio): rollback agentActivity-Conversation-Focus, Spotify pausiert NUR bei TTS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der vorige Commit (acquireConversationFocus bei agentActivity != idle) war zu aggressiv — Spotify pausierte schon waehrend 'ARIA denkt/schreibt' und das zugehoerige release greift nicht zuverlaessig (Race mit nachfolgenden agent_activity-Events). Stefan: 'spotify resumet nicht mehr, hoert schon beim ARIA-denkt-Passus auf zu spielen'. Erwartetes Verhalten: - Aufnahme: AudioFocus → Spotify pausiert (~5s) - ARIA denkt/schreibt (~20s): kein Focus → Spotify spielt weiter - TTS: AudioFocus per requestDuck → Spotify pausiert - TTS-Ende: deferred release nach 800ms → Spotify resumed Underrun-Schutz im PcmStreamPlayer haelt Spotify durchgehend gepaust solange TTS rendert (auch in den GPU-Pausen zwischen Saetzen). Co-Authored-By: Claude Opus 4.7 (1M context) --- android/src/screens/ChatScreen.tsx | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/android/src/screens/ChatScreen.tsx b/android/src/screens/ChatScreen.tsx index a772d27..a5b3b31 100644 --- a/android/src/screens/ChatScreen.tsx +++ b/android/src/screens/ChatScreen.tsx @@ -495,13 +495,8 @@ const ChatScreen: React.FC = () => { const activity = (message.payload.activity as string) || 'idle'; const tool = (message.payload.tool as string) || ''; setAgentActivity({ activity, tool }); - // Solange ARIA arbeitet (thinking/tool/responding) den Conversation- - // Focus halten — sonst spielt Spotify in der ~20s-Verarbeitungspause - // zwischen User-Aufnahme-Ende und TTS-Start wieder. Bei 'idle' wird - // der Focus nur dann released wenn auch kein TTS mehr aktiv ist. - if (activity !== 'idle') { - audioService.acquireConversationFocus(); - } + // Spotify darf waehrend "ARIA denkt/schreibt" weiterspielen — pausiert + // nur wenn TTS startet (dann acquired _firePlaybackStarted den Focus). } // Voice-Config aus Diagnostic — setzt die lokale App-Stimme auf den @@ -665,10 +660,6 @@ const ChatScreen: React.FC = () => { }); const unsubTtsEnd = audioService.onPlaybackFinished(() => { releaseBackgroundAudio('tts').catch(() => {}); - // ARIAs Antwort komplett vorgelesen → Conversation-Focus freigeben damit - // Spotify wieder darf. Vorher (waehrend agentActivity != idle) hat das - // acquireConversationFocus den Focus durchgehend gehalten. - audioService.releaseConversationFocus(); // Vor naechster Aufnahme: barge-listening aus damit der AudioRecorder // das Mikro greifen kann. wakeWordService.stopBargeListening().catch(() => {}); @@ -818,9 +809,6 @@ const ChatScreen: React.FC = () => { const cancelRequest = useCallback(() => { setAgentActivity({ activity: 'idle', tool: '' }); rvs.send('cancel_request' as any, {}); - // Conversation-Focus freigeben — es kommt keine TTS-Antwort mehr, - // sonst bliebe Spotify ewig pausiert. - audioService.releaseConversationFocus(); }, []); // Barge-In: wenn der User waehrend ARIA arbeitet/spricht eine neue Sprach-