diff --git a/README.md b/README.md index 87d5752..9a0d4be 100644 --- a/README.md +++ b/README.md @@ -527,12 +527,18 @@ App: AudioTrack MODE_STREAM (nahtlos), Cache als WAV pro Message | TTS spielt (auch GPU-Pausen) | bleibt pausiert | barge wenn Wake-Word | | TTS zu Ende | nach 800ms resumed | (Conversation-Window) | | Eingehender Anruf (auch VoIP)| — | Mikro pausiert | -| Anruf vorbei | — | Mikro wieder armed | +| Anruf vorbei (Auto-Resume) | pausiert wieder | aus | +| Neue Frage waehrend Anruf | — | (Resume verworfen) | Mechanismen: Underrun-Schutz im PcmStreamPlayer (Stille-Fill in Render- Pausen), Conversation-Focus bei Wake-Word, Foreground-Service mit mediaPlayback|microphone, Anruf-Erkennung ueber TelephonyManager + -AudioFocus-Loss-Listener mit Polling-Fallback (VoIP). +AudioFocus-Loss-Listener mit Polling-Fallback (VoIP). Bei Anruf wird +die Wiedergabe-Position gemerkt — nach dem Auflegen spielt ARIA ab +der genauen Stelle weiter (oder verwirft das wenn der User waehrend +des Telefonats per Text eine neue Frage gestellt hat). PcmPlayback- +Finished-Event vom Native sorgt dafuer dass Spotify erst pausiert +bleibt bis ARIA wirklich verstummt ist. ### Datei-Pipeline (Bilder & Anhaenge) @@ -865,6 +871,8 @@ docker exec aria-core ssh aria-wohnung hostname - [x] VAD-Stille-Toleranz einstellbar (1-8s) + adaptive Mikro-Baseline + Max-Aufnahme einstellbar (1-30 min) - [x] Barge-In: User kann ARIA waehrend Antwort unterbrechen, aria-core bekommt Kontext-Hint - [x] Anruf-Pause + Auto-Resume: TTS verstummt bei Anruf, faehrt nach Auflegen ab der gemerkten Position fort (Date.now()-Tracking + WAV-Cache der Antwort) +- [x] PcmPlaybackFinished-Event: AudioFocus wird erst released wenn AudioTrack wirklich durch ist — kein Spotify-mid-TTS mehr +- [x] Edge-Case: neue Frage waehrend Telefonat verwirft pending Auto-Resume, neueste Antwort gewinnt - [x] Settings-Sub-Screens: 8 Kategorien statt langer Liste - [x] APK ABI-Split arm64-v8a: 35 MB statt 136 MB - [x] Sprachnachrichten-Bubble: audioRequestId statt Substring-Match — keine vertauschten Bubbles mehr bei parallelen Aufnahmen diff --git a/issue.md b/issue.md index 0b9b79d..95309a9 100644 --- a/issue.md +++ b/issue.md @@ -18,7 +18,9 @@ Wenn was anders ist, ist's ein Bug. | TTS zu Ende | nach 800ms resumed | (Conversation-Window)| (tts released) | | Eingehender Anruf (auch VoIP)| — | Mikro pausiert | aus | | Anruf vorbei | — | Mikro wieder armed | aktiv ('wake') | -| Anruf vorbei (Auto-Resume) | nach 800ms resumed | aus | aktiv ('tts') | +| Anruf vorbei (Auto-Resume) | pausiert wieder | aus | aktiv ('tts') | +| Neue Frage waehrend Anruf | — | Mikro pausiert | (rec waehrend Anruf nicht) | +| Anruf vorbei nach neuer Frage | (siehe TTS-Phasen) | (siehe TTS-Phasen) | (tts gewinnt, alter Resume verworfen) | Wichtige Mechanismen: - **Underrun-Schutz** im PcmStreamPlayer fuettert Stille rein wenn die @@ -38,6 +40,16 @@ Wichtige Mechanismen: wartet die App bis zu 30s auf den WAV-Cache und spielt dann ab der gemerkten Position weiter. Wenn das Telefonat länger als die Antwort dauerte, ist der Cache schon fertig — instant Resume. +- **Neue Frage waehrend Anruf** (Text-Chat geht trotz Telefonat): die + neue Antwort ueberschreibt den pending Resume. _handlePcmChunkImpl + stoppt einen ggf. laufenden resumeSound und setzt pausedMessageId + zurueck wenn die neue Stream-messageId abweicht. Die letzte Antwort + gewinnt immer. +- **Audio-Ausgabe trotz aktivem Telefonat**: ARIA antwortet auch waehrend + eines Telefonats per Lautsprecher (Telefon-Audio geht ueber separaten + Stream zur Gegenseite). haltAllPlayback wird nur beim STATE-WECHSEL + ringing/offhook gerufen — wenn der Anruf schon laeuft (offhook→offhook), + triggert eine neue Frage keinen Halt mehr. ## Erledigt @@ -147,6 +159,11 @@ Wichtige Mechanismen: - [x] **Wake-Word komplett on-device via openWakeWord (ONNX Runtime)** — Porcupine raus, kein API-Key/keine Lizenzgebuehren mehr. Mitgelieferte Keywords: hey_jarvis, computer, alexa, hey_mycroft, hey_rhasspy - [x] APK ABI-Split auf arm64-v8a — von ~136 MB auf ~35 MB, Auto-Update-Downloads aufs Phone deutlich kleiner - [x] PhoneStateListener: TTS pausiert bei eingehendem Anruf (READ_PHONE_STATE Permission) +- [x] **VoIP-Anrufe** (WhatsApp/Signal/Discord/Teams) erkannt via AudioFocus-Loss-Listener + getMode-Polling-Fallback (alle 3s) +- [x] **Auto-Resume nach Anruf**: ARIAs unterbrochene Antwort spielt nach dem Auflegen ab der gemerkten Position weiter (Date.now()-Tracking + WAV-Cache, 30s-Wartezeit auf final-Marker bei kurzem Telefonat) +- [x] **Neue Frage waehrend Telefonat** ueberschreibt pending Auto-Resume — letzte Antwort gewinnt, alter resumeSound wird gestoppt +- [x] **Audio-Ausgabe waehrend aktivem Telefonat** funktioniert (haltAllPlayback nur bei state-Wechsel idle→ringing/offhook, nicht bei offhook→offhook) +- [x] **PcmPlaybackFinished-Event** im Native: AudioFocus wird erst released wenn AudioTrack wirklich durch ist (vorher: end()-Cap nach 0.5s → Spotify spielte 32s parallel zu ARIA) - [x] Diagnostic-Chat: bubblige Formatierung, mehrzeiliges Eingabefeld (textarea, Enter sendet, Shift+Enter neue Zeile) - [x] Adaptive VAD-Schwelle: Baseline aus den ersten 500ms Mic-Pegel, Stille = baseline+6dB / Sprache = baseline+12dB - [x] Max-Aufnahmedauer konfigurierbar in Settings (1-30 min, Default 5 min) — laengere Diktate moeglich