Files
Brancheneinstufung2/TRANSCRIPTION_TOOL.md
Floke caad625c0c feat(transcription): add meeting assistant micro-service v0.1.0
- 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
2026-01-24 16:34:01 +00:00

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-genai SDK).
    • 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

  1. Upload: User lädt MP3 hoch -> Speicherung in /app/uploads_audio.
  2. Chunking: Backend startet Background-Task -> FFmpeg erstellt Segmente in /app/uploads_audio/chunks/{id}/.
  3. Transkription: Loop über alle Chunks -> Upload zu Gemini File API -> Generierung -> Löschung aus Gemini Cloud -> Speicherung in DB.
  4. 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: PK
  • title: Dateiname (z.B. "Jours_Fixe_Januar.mp3")
  • status: UPLOADED -> SPLITTING -> TRANSCRIBING -> COMPLETED
  • duration_seconds: Gesamtlänge
  • file_path: Lokaler Pfad

transcript_chunks

  • id: PK
  • meeting_id: FK
  • chunk_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).