Files
Brancheneinstufung2/TRANSCRIPTION_TOOL.md
Floke adafab61ae fix(transcription): [2f388f42] finalize and fix AI insights feature
This commit resolves all outstanding issues with the AI Insights feature.

- Corrects the transcript formatting logic in  to properly handle the database JSON structure, ensuring the AI receives the correct context.
- Fixes the Gemini API client by using the correct model name ('gemini-2.0-flash') and the proper client initialization.
- Updates  to securely pass the API key as an environment variable to the container.
- Cleans up the codebase by removing temporary debugging endpoints.
- Adds  script for programmatic updates.
- Updates documentation with troubleshooting insights from the implementation process.
2026-01-26 08:53:13 +00:00

80 lines
5.1 KiB
Markdown

# Meeting Assistant (Transcription Tool)
**Version:** 0.6.0
**Status:** Beta (AI Insights Integration)
Der **Meeting Assistant** ist eine leistungsstarke Suite zur Transkription und Bearbeitung von Audio-Aufnahmen. Er kombiniert lokale FFmpeg-Verarbeitung mit der Gemini 2.0 Flash AI.
---
## 1. Architektur & Stack
* **FFmpeg Engine:** Automatisches Splitting großer Dateien in 30-Minuten-Segmente.
* **Gemini 2.0 Flash:** AI-Transkription mit Fokus auf JSON-Struktur (Sprecher, Timestamps) und zur Generierung von Meeting-Analysen.
* **Prompt Library:** Eine Sammlung von Vorlagen zur Steuerung der KI-Analyse.
* **Structured Storage:** SQLite speichert jedes Segment als editierbares JSON-Array und die Ergebnisse der KI-Analyse.
* **Unified UI:** Das Frontend fügt alle Segmente zu einem nahtlosen Dokument zusammen und bietet interaktive Analyse-Funktionen.
---
## 2. Key Features (v0.6.0)
### 🚀 **NEU:** AI Insights auf Knopfdruck
* **Meeting-Protokoll:** Erstellt automatisch ein formelles Protokoll (Meeting Minutes) mit Agenda, Entscheidungen und nächsten Schritten.
* **Action Items:** Extrahiert eine Aufgabenliste mit Verantwortlichen und Fälligkeiten direkt aus dem Gespräch.
* **Rollenbasierte Zusammenfassungen:** Generiert spezifische Zusammenfassungen, z.B. eine "Sales Summary", die sich auf Kundenbedürfnisse, Kaufsignale und nächste Schritte für das Vertriebsteam konzentriert.
### 🎙️ Intelligente Transkription
* Unterstützt MP3/WAV bis 500MB.
* Native Sprechererkennung und Zeitstempel-Normalisierung über Segmentgrenzen hinweg.
### 👥 Globales Sprecher-Management
* **Speaker Bar:** Eine Übersicht aller im Dokument gefundenen Sprecher.
* **Global Rename:** Mit einem Klick kann ein Sprecher (z.B. "Speaker A") im gesamten Dokument dauerhaft umbenannt werden (z.B. "Thomas").
### ✂️ Präzises Schneiden (Trimming)
* **Trim Start:** Löscht alles *vor* einer ausgewählten Zeile (ideal zum Entfernen von Vorgesprächen).
* **Trim End:** Löscht alles *nach* einer ausgewählten Zeile (entfernt Verabschiedungen).
* **Single Line Delete:** Einzelne Zeilen oder Störgeräusche können individuell entfernt werden.
### 📝 Editor & Export
* **Inline-Edit:** Jeder Textblock und jeder Sprechername kann durch direktes Anklicken korrigiert werden.
* **Copy Full Transcript:** Kopiert das gesamte, bereinigte Transkript inkl. Timestamps in die Zwischenablage.
* **Copy Insights:** Jedes Analyse-Ergebnis kann einfach in die Zwischenablage kopiert werden.
---
## 3. API Endpunkte
| Methode | Pfad | Beschreibung |
| :--- | :--- | :--- |
| `GET` | `/meetings` | Liste aller Meetings. |
| `POST` | `/upload` | Audio-Upload & Prozess-Start. |
| `POST` | `/meetings/{id}/insights` | **Neu:** Generiert eine Analyse (z.B. Protokoll, Action Items). |
| `POST` | `/meetings/{id}/rename_speaker` | Globale Umbenennung in der DB. |
| `PUT` | `/chunks/{id}` | Speichert manuelle Text-Korrekturen. |
| `DELETE` | `/meetings/{id}` | Vollständiges Löschen. |
---
## 4. Roadmap
* **v0.7: Search:** Globale Suche über alle Transkripte hinweg.
* **v0.8: Q&A an das Meeting:** Ermöglicht, Fragen direkt an das Transkript zu stellen ("Was wurde zu Thema X beschlossen?").
* **v0.9: Export-Formate:** Export der Ergebnisse in verschiedene Formate (z.B. PDF, DOCX).
---
## 5. Development Notes & Troubleshooting
Bei der Implementierung der AI-Insights-Funktion (v0.6.0) traten mehrere Probleme auf, deren Lösungen für die zukünftige Entwicklung wichtig sind:
* **Isolierung von Microservices:** Der Versuch, eine zentrale `helpers.py`-Datei aus dem `transcription-app`-Container zu importieren, schlug mit einem `ModuleNotFoundError` fehl.
* **Lösung:** Kritische Funktionen (wie der Gemini-API-Client) wurden in eine lokale Bibliothek (`/lib/gemini_client.py`) innerhalb des Service-Backends dupliziert, um den Service eigenständig zu machen.
* **API-Schlüssel in Docker:** Der neue, isolierte Service konnte den API-Schlüssel nicht aus einer Datei lesen.
* **Lösung:** Der `GEMINI_API_KEY` wurde als Umgebungsvariable über die `docker-compose.yml`-Datei an den Container übergeben. Dies ist die Best Practice für die Bereitstellung von "Secrets" für containerisierte Anwendungen. **Wichtig:** Ein `docker-compose restart` reicht nicht aus, um die Änderung zu übernehmen; ein `docker-compose up -d --force-recreate <service_name>` ist erforderlich.
* **Modell-Kompatibilität:** API-Aufrufe schlugen mit `404 NOT_FOUND` fehl, weil versucht wurde, ein nicht zum API-Schlüssel passendes Modell (`gemini-1.5-flash`) zu verwenden.
* **Lösung:** Der Modellname wurde auf das im Projekt etablierte und funktionierende Modell `gemini-2.0-flash` korrigiert.
* **Datenformatierung:** Die KI lieferte generische Antworten, weil das an sie übergebene Transkript leer war.
* **Lösung:** Die Analyse des rohen JSON-Outputs aus der Datenbank (`debug_chunks`-Endpunkt) zeigte, dass die Formatierungslogik die `absolute_seconds` zur korrekten chronologischen Sortierung verwenden muss. Die `_format_transcript`-Funktion wurde entsprechend angepasst.