5.3 KiB
5.3 KiB
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 & Translation
- Übersetzung (DE/EN): Übersetzt das gesamte Transkript mit einem Klick ins Englische.
- 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}/translate |
Neu: Übersetzt das Transkript in eine Zielsprache (aktuell: 'English'). |
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 demtranscription-app-Container zu importieren, schlug mit einemModuleNotFoundErrorfehl.- 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.
- Lösung: Kritische Funktionen (wie der Gemini-API-Client) wurden in eine lokale Bibliothek (
- API-Schlüssel in Docker: Der neue, isolierte Service konnte den API-Schlüssel nicht aus einer Datei lesen.
- Lösung: Der
GEMINI_API_KEYwurde als Umgebungsvariable über diedocker-compose.yml-Datei an den Container übergeben. Dies ist die Best Practice für die Bereitstellung von "Secrets" für containerisierte Anwendungen. Wichtig: Eindocker-compose restartreicht nicht aus, um die Änderung zu übernehmen; eindocker-compose up -d --force-recreate <service_name>ist erforderlich.
- Lösung: Der
- Modell-Kompatibilität: API-Aufrufe schlugen mit
404 NOT_FOUNDfehl, 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-flashkorrigiert.
- Lösung: Der Modellname wurde auf das im Projekt etablierte und funktionierende Modell
- 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 dieabsolute_secondszur korrekten chronologischen Sortierung verwenden muss. Die_format_transcript-Funktion wurde entsprechend angepasst.
- Lösung: Die Analyse des rohen JSON-Outputs aus der Datenbank (