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
91 lines
3.1 KiB
Markdown
91 lines
3.1 KiB
Markdown
# Voice-Agent
|
|
|
|
Self-hosted Transkriptions- und Protokollsystem für Sitzungsaufzeichnungen — vollständig lokal, DSGVO-konform.
|
|
|
|
> Vollständiges Lastenheft: siehe [`need.md`](need.md)
|
|
|
|
## Architektur
|
|
|
|
```
|
|
Benutzer
|
|
│
|
|
▼ HTTP (Upload)
|
|
┌─────────────────────────────┐ ┌──────────────────────────────┐
|
|
│ LXC-Container │ HTTP │ Mac (Apple Silicon) │
|
|
│ - FastAPI + HTML/JS UI │ ──────► │ - FastAPI Worker │
|
|
│ - SQLite Job-Store │ │ - lightning-whisper-mlx │
|
|
│ - Result-Verzeichnis │ ◄────── │ - Ollama (llama3.1:8b) │
|
|
│ - Nginx Reverse Proxy │ │ - python-docx │
|
|
└─────────────────────────────┘ └──────────────────────────────┘
|
|
```
|
|
|
|
- **LXC**: keine AI-Verarbeitung — nur Uploads, Job-Tracking, Auslieferung.
|
|
- **Mac**: Stateless API. Erhält Audio/Text, gibt Transkripte / Zusammenfassungen / Protokolle / DOCX zurück.
|
|
|
|
## MVP-Funktionsumfang (v0.1)
|
|
|
|
- [x] Audio-Upload (MP3, WAV, M4A, MP4, OGG, FLAC, max. 500 MB)
|
|
- [x] Whisper-Transkription auf dem Mac
|
|
- [x] Ollama-Zusammenfassung (Beschlüsse, Aufgaben, Teilnehmer)
|
|
- [x] Strukturiertes Sitzungsprotokoll
|
|
- [x] DOCX-Export
|
|
- [ ] Speaker-Diarization (Prio 2)
|
|
- [ ] Auth / Benutzerverwaltung (Prio 2)
|
|
- [ ] PDF-Export (Prio 2)
|
|
|
|
## Schnellstart
|
|
|
|
### 1. Mac einrichten
|
|
Siehe [`mac-worker/README.md`](mac-worker/README.md).
|
|
|
|
### 2. LXC provisionieren
|
|
Mit dem Toolkit-Skill `/proxmox-lxc` (oder manuell). Anschließend auf dem LXC:
|
|
|
|
```bash
|
|
sudo bash <(curl -sSL https://git.cynfo.net/christian/voice-agent/raw/branch/main/deploy/install.sh)
|
|
```
|
|
|
|
oder nach `git clone`:
|
|
|
|
```bash
|
|
cd /var/www/voice-agent
|
|
sudo ./deploy/install.sh
|
|
```
|
|
|
|
### 3. Konfigurieren
|
|
|
|
`/var/www/voice-agent/lxc-frontend/.env` öffnen und `MAC_API_URL` auf die LAN-IP des Macs setzen, dann:
|
|
|
|
```bash
|
|
sudo systemctl restart voice-agent
|
|
```
|
|
|
|
### 4. Verwenden
|
|
Browser auf `http://<LXC-IP>/` öffnen, Audio hochladen, fertig.
|
|
|
|
## Verzeichnisstruktur
|
|
|
|
```
|
|
voice-agent/
|
|
├── lxc-frontend/ # FastAPI Web-App (läuft im LXC)
|
|
│ ├── app/
|
|
│ ├── requirements.txt
|
|
│ └── .env.example
|
|
├── mac-worker/ # FastAPI AI-Worker (läuft auf dem Mac)
|
|
│ ├── app/
|
|
│ ├── requirements.txt
|
|
│ └── .env.example
|
|
├── deploy/ # systemd / nginx / install.sh
|
|
├── config/ # Toolkit-Konfiguration (project.env)
|
|
├── .claude/ # KI-Agenten Skills
|
|
├── need.md # Lastenheft
|
|
└── README.md
|
|
```
|
|
|
|
## Sicherheit
|
|
|
|
- Vollständig lokaler Betrieb. Keine Cloud-Calls.
|
|
- HTTPS via Reverse-Proxy ist Aufgabe der Infrastruktur (Let's Encrypt o. Ä.).
|
|
- Mac-Worker hat **keine** Auth — Betrieb nur im internen Netz.
|
|
- Uploads / Ergebnisse unter `/var/lib/voice-agent/` — bei Bedarf Backup einplanen.
|