Parcourir la source

NLP Fix, funktioniert

patrick il y a 2 mois
Parent
commit
4f56864b9e

+ 13 - 0
docs/project_notes/issues.md

@@ -601,6 +601,19 @@ Protokoll der abgeschlossenen Arbeiten. Kurze Referenz - Details in Ticket-Syste
 
 ---
 
+### 2026-02-27 — STT → NLP Event-Brücke
+
+**Status:** Abgeschlossen
+
+- **Problem**: Nach STT-Transkription brach die Pipeline ab — NLP wurde nie aufgerufen
+- **Ursache**: STT-Plugins emittierten `stt_completed` (dict via `emit()`), aber NLP-Plugin lauscht auf `speech_recognized` (EventData via `trigger()`)
+- **Lösung**: Nach `stt_completed` zusätzlich `speech_recognized` Event mit `SpeechRecognized` EventData emittieren (nur bei nicht-leerem Text)
+- **session_id**: Wird via `metadata["session_id"]` transportiert (SpeechRecognized hat kein eigenes session_id-Feld)
+- **Geänderte Dateien**: plugins/stt_vosk/main.py, plugins/stt_whisper/main.py, plugins/stt_deepspeech/main.py
+- **Tests**: py_compile OK, Event/NLP-Tests bestanden
+
+---
+
 ## Tipps
 
 - Beschreibungen kurz halten (1-2 Zeilen)

+ 16 - 0
plugins/stt_deepspeech/main.py

@@ -445,6 +445,22 @@ class DeepSpeechSTTPlugin(TrixyPlugin):
 
                 pinfo(f"DeepSpeech STT: '{result.text}' ({result.processing_time_ms:.0f}ms)")
 
+                # Event-Brücke: speech_recognized für NLP-Pipeline
+                if result.text.strip():
+                    from trixy_core.events.event_data.basic import SpeechRecognized
+
+                    speech_event = SpeechRecognized(
+                        satellite_id=satellite_id or "",
+                        text=result.text,
+                        confidence=result.confidence,
+                        language=result.language or "de",
+                        is_final=True,
+                        source="stt",
+                    )
+                    speech_event.metadata["session_id"] = session_id or ""
+
+                    await em.trigger("speech_recognized", speech_event)
+
             except Exception as e:
                 from trixy_core.utils.debug import perror
                 perror(f"DeepSpeech STT Fehler: {e}")

+ 16 - 0
plugins/stt_vosk/main.py

@@ -438,6 +438,22 @@ class VoskSTTPlugin(TrixyPlugin):
 
                 pinfo(f"Vosk STT: '{result.text}' ({result.processing_time_ms:.0f}ms)")
 
+                # Event-Brücke: speech_recognized für NLP-Pipeline
+                if result.text.strip():
+                    from trixy_core.events.event_data.basic import SpeechRecognized
+
+                    speech_event = SpeechRecognized(
+                        satellite_id=satellite_id or "",
+                        text=result.text,
+                        confidence=result.confidence,
+                        language=result.language or "de",
+                        is_final=True,
+                        source="stt",
+                    )
+                    speech_event.metadata["session_id"] = session_id or ""
+
+                    await em.trigger("speech_recognized", speech_event)
+
             except Exception as e:
                 from trixy_core.utils.debug import perror
                 perror(f"Vosk STT Fehler: {e}")

+ 16 - 0
plugins/stt_whisper/main.py

@@ -281,6 +281,22 @@ class WhisperSTTPlugin(TrixyPlugin):
 
                 pinfo(f"Whisper STT: '{result.text}' ({result.processing_time_ms:.0f}ms)")
 
+                # Event-Brücke: speech_recognized für NLP-Pipeline
+                if result.text.strip():
+                    from trixy_core.events.event_data.basic import SpeechRecognized
+
+                    speech_event = SpeechRecognized(
+                        satellite_id=satellite_id or "",
+                        text=result.text,
+                        confidence=result.confidence,
+                        language=result.language or "de",
+                        is_final=True,
+                        source="stt",
+                    )
+                    speech_event.metadata["session_id"] = session_id or ""
+
+                    await em.trigger("speech_recognized", speech_event)
+
             except Exception as e:
                 from trixy_core.utils.debug import perror
                 perror(f"Whisper STT Fehler: {e}")