tts fixed sst fixed

This commit is contained in:
duffyduck 2025-12-29 01:51:48 +01:00
parent 7b2e9394b7
commit 979d921c81
2 changed files with 17 additions and 11 deletions

View File

@ -995,10 +995,11 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
time.sleep(0.5)
continue
# WICHTIG: Wenn Claude spricht (TTS) oder wir auf TTS warten, nicht aufzeichnen!
# Das verhindert Echo (Mikrofon nimmt TTS auf) und
# überlappende Gespräche - wir lassen Claude ausreden.
if self._speaking.is_set() or self._awaiting_tts.is_set():
# WICHTIG: Wenn Claude spricht (TTS aktiv), nicht aufzeichnen!
# Das verhindert Echo (Mikrofon nimmt TTS auf).
# ABER: _awaiting_tts blockiert NICHT mehr das Mikrofon!
# Der User soll sprechen können auch wenn TTS noch wartet.
if self._speaking.is_set():
# Falls wir mitten in einer Aufnahme waren, diese beenden
if self._recording.is_set():
self._finalize_recording(current_session_texts)
@ -1010,7 +1011,7 @@ Erst wenn ich [READY] sehe, starten die TICKs mit Bildern!"""
result = self.stt.listen_once(timeout=1)
# Nochmal prüfen nach dem Hören (falls zwischendurch gemutet oder Claude spricht)
if self.is_muted() or self._speaking.is_set() or self._awaiting_tts.is_set():
if self.is_muted() or self._speaking.is_set():
continue
if result and result.text and len(result.text) > 2:

View File

@ -562,7 +562,12 @@ class ClaudeChatInterface:
claude_msgs = [m for m in all_messages if m.is_from_assistant]
total_claude = len(claude_msgs)
if last_index < total_claude - 1:
# WICHTIG: last_index ist 0-basiert.
# Wenn last_index=26 und total_claude=27, dann gibt es 27 Nachrichten (0-26).
# In diesem Fall ist 26 der letzte Index, also keine neuen.
# Aber wenn total_claude=28, dann gibt es eine neue (Index 27).
# Bedingung: last_index + 1 < total_claude
if last_index + 1 < total_claude:
# Es gibt neue Nachrichten!
new_claude_msgs = claude_msgs[last_index + 1:]
logger.debug(f"Index-basiert: {len(new_claude_msgs)} neue Claude-Nachrichten (Index {last_index + 1} bis {total_claude - 1})")
@ -900,12 +905,12 @@ class ClaudeChatInterface:
msg_id = elem.get_attribute("data-message-id")
if not msg_id:
# WICHTIG: Nutze einen ZÄHLER statt Hash!
# Der Zähler ist die Anzahl der bisherigen Claude-Nachrichten.
# WICHTIG: Nutze einen 0-basierten INDEX statt Anzahl!
# Der Index entspricht der Position in der Claude-Nachrichten-Liste.
# Beispiel: Erste Claude-Nachricht = claude_msg_0, zweite = claude_msg_1, etc.
# Das ist stabil weil neue Nachrichten nur HINZUGEFÜGT werden.
# Der Hash war instabil weil der Text sich leicht ändern kann.
claude_msg_count = sum(1 for m in messages if m.is_from_assistant)
msg_id = f"claude_msg_{claude_msg_count}"
current_claude_count = sum(1 for m in messages if m.is_from_assistant)
msg_id = f"claude_msg_{current_claude_count}" # 0-basiert: bei 0 bisherigen -> Index 0
messages.append(ChatMessage(
id=msg_id,