- Added FastAPI backend with FFmpeg and Gemini 2.0 integration - Added React frontend with upload and meeting list - Integrated into main docker-compose stack and dashboard
3.2 KiB
3.2 KiB
Meeting Assistant (Transcription Tool)
Version: 0.1.0 Status: Beta (Core Functionality)
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 eigentliche Transkription durch (via
google-genaiSDK). - SQLite: Speichert Metadaten, Status und Ergebnisse.
- Storage: Lokales Docker-Volume für Audio-Uploads (werden nach Verarbeitung nicht gelöscht, um Re-Analysen zu ermöglichen).
Datenfluss
- Upload: User lädt MP3 hoch -> Speicherung in
/app/uploads_audio. - Chunking: Backend startet Background-Task -> FFmpeg erstellt Segmente in
/app/uploads_audio/chunks/{id}/. - Transkription: Loop über alle Chunks -> Upload zu Gemini File API -> Generierung -> Löschung aus Gemini Cloud -> Speicherung in DB.
- Assemblierung: (Geplant für v0.2) Zusammenfügen der Text-Fragmente.
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). Startet Prozess. |
GET |
/health |
Status-Check. |
3. Datenbank Schema (SQLite)
Datei: transcripts.db
meetings
id: PKtitle: Dateiname (z.B. "Jours_Fixe_Januar.mp3")status:UPLOADED->SPLITTING->TRANSCRIBING->COMPLETEDduration_seconds: Gesamtlängefile_path: Lokaler Pfad
transcript_chunks
id: PKmeeting_id: FKchunk_index: 0, 1, 2...raw_text: Das rohe Transkript von Gemini.
4. Konfiguration & Limits
- Max Upload Size: 500 MB (konfiguriert in Nginx).
- Chunk Size: 30 Minuten (1800 Sekunden).
- Modell:
gemini-2.0-flash(Temperatur 0.1 für Faktentreue). - Kosten: Gemini 2.0 Flash ist extrem günstig (Audio-Input), aber beachten Sie die API-Limits bei sehr vielen parallelen Uploads.
5. Roadmap / Next Steps
- v0.2: Frontend-Detailansicht mit Volltext-Anzeige.
- v0.3: Sprecher-Identifikation (Mapping "Speaker A" -> "Thomas").
- v0.4: "Meeting Notes" Generator (Zusammenfassung via LLM).
6. Troubleshooting
- Upload bricht ab: Prüfen Sie, ob die Datei > 500MB ist oder der Nginx-Timeout (1800s) greift.
- Status bleibt bei "TRANSCRIBING": Prüfen Sie die Docker-Logs (
docker logs transcription-app). Evtl. ist der API-Key ungültig oder das Quota erschöpft. - FFmpeg Fehler: Stellen Sie sicher, dass das Eingangsformat valide ist (MP3, WAV, M4A werden meist unterstützt).