# Meeting Assistant (Transcription Tool) **Version:** 0.4.0 **Status:** Beta (Functional with Editing) Der **Meeting Assistant** ist ein lokaler Micro-Service zur Transkription und Analyse von Audio-Dateien (Meetings, Calls, Interviews). Er kombiniert die Datensicherheit einer lokalen Datenhaltung mit der Leistungsfähigkeit von Googles **Gemini 2.0 Flash** Modell für kostengünstige, hochqualitative Speech-to-Text Umwandlung. --- ## 1. Architektur Der Service folgt dem "Sidecar"-Pattern im Docker-Stack und ist vollständig in das Dashboard integriert. * **Frontend:** React (Vite + Tailwind) unter `/tr/`. * **Backend:** FastAPI (Python) unter `/tr/api/`. * **Processing:** * **FFmpeg:** Zerlegt große Audio-Dateien (> 2 Stunden) in verarbeitbare 30-Minuten-Chunks. * **Gemini 2.0 Flash:** Führt die Transkription durch und liefert strukturiertes JSON (Sprecher, Zeitstempel, Text). * **SQLite:** Speichert Metadaten, Status und die bearbeitbaren JSON-Segmente. * **Storage:** Lokales Docker-Volume für Audio-Uploads. ### Datenfluss 1. **Upload:** User lädt MP3 hoch -> Speicherung in `/app/uploads_audio`. 2. **Chunking:** Backend startet Background-Task -> FFmpeg erstellt Segmente. 3. **Transkription:** Loop über Chunks -> Upload zu Gemini -> JSON-Extraktion -> Offset-Berechnung -> DB-Speicherung. 4. **Assemblierung:** Das Frontend lädt alle Chunks eines Meetings und stellt sie als eine durchgehende Liste dar. --- ## 2. API Endpunkte Basis-URL: `/tr/api` | Methode | Pfad | Beschreibung | | :--- | :--- | :--- | | `GET` | `/meetings` | Liste aller Meetings inkl. Status. | | `POST` | `/upload` | Upload einer Audio-Datei (`multipart/form-data`). | | `GET` | `/meetings/{id}` | Lädt Meeting-Details inklusive aller Text-Chunks (JSON). | | `DELETE` | `/meetings/{id}` | Löscht ein Meeting inkl. Dateien komplett. | | `PUT` | `/chunks/{id}` | Aktualisiert den Inhalt (Text/Sprecher) eines spezifischen 30-Min-Chunks. | --- ## 3. Datenbank Schema (SQLite) Datei: `transcripts.db` ### `meetings` * `id`: PK * `title`, `status`, `duration_seconds`, `file_path`. ### `transcript_chunks` * `id`: PK * `meeting_id`: FK * `chunk_index`: 0, 1, 2... * `raw_text`: Backup des rohen Gemini-Outputs. * `json_content`: **JSON** (Editierbar). Struktur: `[{ "time": "MM:SS", "absolute_seconds": 120, "speaker": "A", "text": "..." }]` --- ## 4. Features & Bedienung ### Transkription * Upload von MP3/WAV Dateien (bis 500MB). * Automatische Erkennung von Sprechern (Speaker A, Speaker B). ### Editor-Modus (v0.4) * **Inline Editing:** Klicken Sie auf einen Sprechernamen oder Text, um ihn direkt zu bearbeiten. Änderungen werden sofort gespeichert. * **Zeilen Löschen:** Fahren Sie mit der Maus über eine Zeile und klicken Sie auf das rote "X", um irrelevante Teile (z.B. Smalltalk) zu entfernen. * **Sprecher-Aliasing (Ansicht):** Klicken Sie auf den blauen Sprechernamen ("Speaker A"), um ihn für die *aktuelle Sitzung* umzubenennen (z.B. in "Thomas"). *Hinweis: Dies ändert aktuell nur die Ansicht, nicht die Datenbank für alle Zeilen.* --- ## 5. Roadmap / Next Steps * **v0.5: Global Rename:** Button "Alle 'Speaker A' dauerhaft in DB umbenennen". * **v0.6: AI Analysis:** "Erstelle Meeting Notes" Button basierend auf dem korrigierten Transkript. * **v0.7:** Export als Word/PDF. --- ## 6. Troubleshooting * **Legacy Format:** Bei Dateien, die vor v0.3 hochgeladen wurden, erscheint ein Warnhinweis. Bitte neu hochladen, um die Editier-Funktionen zu nutzen. * **Upload bricht ab:** Prüfen Sie die Dateigröße (< 500MB).