LXC-Frontend (FastAPI + HTML/JS): - Audio-Upload (MP3/WAV/M4A/MP4/OGG/FLAC, max. 500 MB) - SQLite Job-Store, BackgroundTask-Pipeline - Job-Liste mit Live-Status, Downloads (DOCX + JSON) - Mac-Health-Indicator im UI Mac-Worker (FastAPI): - /api/transcribe (lightning-whisper-mlx | faster-whisper | mock) - /api/summarize + /api/protocol via Ollama (llama3.1:8b) - /api/export/docx via python-docx Deploy: - systemd-Service, Nginx Reverse-Proxy - deploy/install.sh: idempotentes LXC-Setup Doku: README.md, lxc-frontend/README.md, mac-worker/README.md
367 lines
5.1 KiB
Markdown
367 lines
5.1 KiB
Markdown
# Lastenheft / Umsetzungskonzept
|
|
# Self-hosted AI-Transkriptionssystem für Sitzungsaufzeichnungen
|
|
|
|
## Ziel
|
|
|
|
Eine Firma lädt regelmäßig Audioaufzeichnungen von Sitzungen hoch.
|
|
Das System transkribiert die Aufnahme automatisch, erkennt mehrere Sprecher, erstellt Zusammenfassungen und exportiert fertige Protokolle.
|
|
|
|
---
|
|
|
|
# 1. Architektur
|
|
|
|
```text
|
|
Benutzer
|
|
↓
|
|
Webfrontend im LXC-Container
|
|
↓
|
|
REST/API-Aufruf
|
|
Mac-Rechner als AI-Backend
|
|
├─ Whisper / MLX-Whisper / whisper.cpp
|
|
├─ Ollama
|
|
├─ optionale Speaker-Diarization
|
|
└─ Export DOCX/PDF/TXT
|
|
```
|
|
|
|
---
|
|
|
|
# 2. Systemaufteilung
|
|
|
|
## 2.1 LXC-Container (ohne GPU)
|
|
|
|
### Aufgaben
|
|
|
|
- Weboberfläche
|
|
- Datei-Upload
|
|
- Benutzerverwaltung
|
|
- Jobverwaltung
|
|
- Statusanzeige
|
|
- Downloadbereich
|
|
- Speicherung der Ergebnisse
|
|
|
|
### Der LXC führt keine AI-Verarbeitung durch.
|
|
|
|
---
|
|
|
|
## 2.2 Mac-Rechner (mit Ollama)
|
|
|
|
### Aufgaben
|
|
|
|
- Speech-to-Text
|
|
- Audioanalyse
|
|
- Sprechererkennung
|
|
- Zusammenfassung
|
|
- Protokollgenerierung
|
|
- Exporterstellung
|
|
|
|
---
|
|
|
|
# 3. Komponenten
|
|
|
|
## 3.1 Webfrontend im LXC
|
|
|
|
### Empfohlene Technologien
|
|
|
|
- FastAPI oder Flask
|
|
- HTML/CSS/JavaScript
|
|
- SQLite oder PostgreSQL
|
|
- Nginx Reverse Proxy
|
|
- Optional Docker
|
|
|
|
### Funktionen
|
|
|
|
- Upload von MP3/WAV/M4A
|
|
- Anzeige laufender Jobs
|
|
- Download fertiger Ergebnisse
|
|
- Benutzerverwaltung optional
|
|
|
|
---
|
|
|
|
## 3.2 AI-Backend auf dem Mac
|
|
|
|
### Empfohlene Technologien
|
|
|
|
- Ollama
|
|
- whisper.cpp
|
|
- lightning-whisper-mlx
|
|
- optional WhisperX
|
|
- optional pyannote.audio
|
|
- FastAPI
|
|
|
|
### Empfehlung für Apple Silicon
|
|
|
|
```text
|
|
lightning-whisper-mlx
|
|
```
|
|
|
|
### Alternative
|
|
|
|
```text
|
|
whisper.cpp
|
|
```
|
|
|
|
---
|
|
|
|
# 4. Datenfluss
|
|
|
|
```text
|
|
1. Benutzer lädt Audio im Webfrontend hoch
|
|
2. LXC speichert Datei temporär
|
|
3. LXC sendet Datei oder Dateipfad an Mac-API
|
|
4. Mac transkribiert Audio
|
|
5. Mac erkennt optional Sprecher
|
|
6. Mac sendet Transkript an Ollama
|
|
7. Ollama erzeugt:
|
|
- Zusammenfassung
|
|
- Beschlüsse
|
|
- Aufgaben
|
|
- offizielles Protokoll
|
|
8. Ergebnis wird gespeichert
|
|
9. Benutzer lädt Ergebnis herunter
|
|
```
|
|
|
|
---
|
|
|
|
# 5. API-Design
|
|
|
|
## Endpunkte auf dem Mac
|
|
|
|
### Transkription starten
|
|
|
|
```http
|
|
POST /api/transcribe
|
|
```
|
|
|
|
### Zusammenfassung erzeugen
|
|
|
|
```http
|
|
POST /api/summarize
|
|
```
|
|
|
|
### Protokoll generieren
|
|
|
|
```http
|
|
POST /api/protocol
|
|
```
|
|
|
|
### Jobstatus abrufen
|
|
|
|
```http
|
|
GET /api/job/{job_id}
|
|
```
|
|
|
|
### Ergebnis abrufen
|
|
|
|
```http
|
|
GET /api/result/{job_id}
|
|
```
|
|
|
|
---
|
|
|
|
# 6. Ausgabeformate
|
|
|
|
## Das System erzeugt
|
|
|
|
- Rohtranskript
|
|
- Zeitgestempeltes Transkript
|
|
- Sprecherzuordnung
|
|
- Zusammenfassung
|
|
- Beschlussliste
|
|
- Aufgabenliste
|
|
- Sitzungsprotokoll
|
|
|
|
---
|
|
|
|
## Exportformate
|
|
|
|
- TXT
|
|
- DOCX
|
|
- PDF
|
|
|
|
---
|
|
|
|
# 7. Beispielausgabe
|
|
|
|
```text
|
|
Sitzungsprotokoll
|
|
|
|
Datum: 13.05.2026
|
|
Thema: Monatsbesprechung
|
|
|
|
Teilnehmer:
|
|
- Sprecher 1
|
|
- Sprecher 2
|
|
- Sprecher 3
|
|
|
|
Zusammenfassung:
|
|
In der Sitzung wurden Budget, Personalplanung und IT-Migration besprochen.
|
|
|
|
Beschlüsse:
|
|
- Budget für Q3 wird freigegeben.
|
|
- Servererneuerung wird vorbereitet.
|
|
|
|
Aufgaben:
|
|
- Herr Müller holt Angebote ein.
|
|
- Frau Schneider koordiniert den nächsten Termin.
|
|
|
|
Transkript:
|
|
[00:00:01] Sprecher 1: Guten Morgen zusammen.
|
|
[00:00:07] Sprecher 2: Ich beginne mit dem Budgetbericht.
|
|
```
|
|
|
|
---
|
|
|
|
# 8. Ollama-Konfiguration
|
|
|
|
## Ollama im Netzwerk erreichbar machen
|
|
|
|
```bash
|
|
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
|
|
```
|
|
|
|
### Test vom LXC
|
|
|
|
```bash
|
|
curl http://MAC-IP:11434/api/tags
|
|
```
|
|
|
|
---
|
|
|
|
# 9. Empfohlener Firmenworkflow
|
|
|
|
```text
|
|
1. Sitzung wird aufgenommen
|
|
2. Datei wird im Webportal hochgeladen
|
|
3. System verarbeitet die Datei automatisch
|
|
4. Sekretariat prüft Ergebnis
|
|
5. Protokoll wird final gespeichert oder verteilt
|
|
```
|
|
|
|
---
|
|
|
|
# 10. Prioritäten
|
|
|
|
## Priorität 1 (MVP)
|
|
|
|
- Upload-Webfrontend
|
|
- Mac-API
|
|
- Audio-Transkription
|
|
- Ollama-Zusammenfassung
|
|
- DOCX-Export
|
|
|
|
---
|
|
|
|
## Priorität 2
|
|
|
|
- Sprechererkennung
|
|
- PDF-Export
|
|
- Benutzerverwaltung
|
|
- Protokollvorlagen
|
|
|
|
---
|
|
|
|
## Priorität 3
|
|
|
|
- Active Directory / LDAP
|
|
- Nextcloud-/SharePoint-Integration
|
|
- automatische E-Mail-Verteilung
|
|
- Übersetzungen
|
|
|
|
---
|
|
|
|
# 11. Technische Empfehlung
|
|
|
|
## MVP-Architektur
|
|
|
|
### LXC
|
|
|
|
```text
|
|
- FastAPI Webfrontend
|
|
- SQLite
|
|
- Upload-Verzeichnis
|
|
- Ergebnis-Verzeichnis
|
|
```
|
|
|
|
### Mac
|
|
|
|
```text
|
|
- FastAPI Worker
|
|
- lightning-whisper-mlx
|
|
- Ollama
|
|
- python-docx
|
|
```
|
|
|
|
---
|
|
|
|
# 12. Ziel der ersten Version
|
|
|
|
Die erste Version soll können:
|
|
|
|
- Audiodatei hochladen
|
|
- Datei an den Mac senden
|
|
- Audio automatisch transkribieren
|
|
- Zusammenfassung mit Ollama erzeugen
|
|
- Sitzungsprotokoll als DOCX exportieren
|
|
- Ergebnis im Webfrontend herunterladen
|
|
|
|
---
|
|
|
|
# 13. Erweiterungsmöglichkeiten
|
|
|
|
## Später mögliche Funktionen
|
|
|
|
- Live-Transkription
|
|
- automatische Sprechererkennung mit Namen
|
|
- Meeting-Kalenderintegration
|
|
- Teams-/Zoom-Import
|
|
- automatische E-Mail-Protokolle
|
|
- Mehrsprachigkeit
|
|
- Übersetzung
|
|
- Suchfunktion
|
|
- Archivierung
|
|
- Rechte- und Rollensystem
|
|
|
|
---
|
|
|
|
# 14. Sicherheitsanforderungen
|
|
|
|
- vollständiger lokaler Betrieb
|
|
- keine Cloud-Anbindung
|
|
- DSGVO-konforme Verarbeitung
|
|
- Zugriffsschutz
|
|
- HTTPS
|
|
- Benutzerrechte
|
|
- Audit-Logging optional
|
|
|
|
---
|
|
|
|
# 15. Empfohlene Open-Source-Komponenten
|
|
|
|
## Speech-to-Text
|
|
|
|
- Whisper
|
|
- whisper.cpp
|
|
- lightning-whisper-mlx
|
|
|
|
## Speaker-Diarization
|
|
|
|
- pyannote.audio
|
|
- WhisperX
|
|
|
|
## LLM / Zusammenfassung
|
|
|
|
- Ollama
|
|
|
|
## Dokumentenerstellung
|
|
|
|
- python-docx
|
|
- reportlab
|
|
|
|
## Webfrontend
|
|
|
|
- FastAPI
|
|
- Flask
|
|
- Nginx
|
|
|
|
---
|