# tüit Transkriptor — Setup-Anleitung ## Architektur ``` ┌─────────────────────────┐ ┌──────────────────────────────┐ │ Client (Linux) │ │ Beastix (LAN-Server) │ │ │ WAV │ │ │ Transkriptor-App │ ──────► │ faster-whisper-server :8000 │ │ Browser-UI :8765 │ Text │ Ollama :11434 │ │ │ ◄────── │ │ └─────────────────────────┘ └──────────────────────────────┘ ``` Jeder Client läuft komplett unabhängig. Die KI-Verarbeitung (Whisper + Ollama) kann entweder lokal oder auf Beastix ausgeführt werden — konfigurierbar über die Einstellungsseite. --- ## Beastix (Server-Setup, einmalig) ### 1. faster-whisper-server installieren ```bash sudo pacman -S python-pipx # Arch Linux pipx install faster-whisper-server pipx ensurepath ``` **Bekannter Bug in Version 0.0.2** — fehlende `pyproject.toml` im pipx-venv: ```bash cat > ~/.local/share/pipx/venvs/faster-whisper-server/lib/python*/site-packages/pyproject.toml << 'EOF' [project] name = "faster-whisper-server" version = "0.0.2" EOF ``` ### 2. Als systemd-User-Service einrichten ```bash cat > ~/.config/systemd/user/faster-whisper-server.service << 'EOF' [Unit] Description=faster-whisper-server (OpenAI-compatible Whisper API) After=network.target [Service] ExecStart=%h/.local/bin/faster-whisper-server --host 0.0.0.0 --port 8000 --model large-v3 Restart=on-failure RestartSec=5 [Install] WantedBy=default.target EOF systemctl --user daemon-reload systemctl --user enable --now faster-whisper-server.service ``` ### 3. Ollama installieren (falls noch nicht vorhanden) ```bash curl -fsSL https://ollama.com/install.sh | sh ollama pull gemma3:12b ``` ### 4. Firewall — Ports freigeben (LAN-intern) ```bash # Whisper-Server sudo ufw allow from 192.168.0.0/16 to any port 8000 # Ollama sudo ufw allow from 192.168.0.0/16 to any port 11434 ``` Ports nur für LAN freigeben — nicht ins Internet exponieren. --- ## Client-Setup (jeder Linux-Rechner) ### 1. Transkriptor installieren ```bash git clone git@git.tueit.de:tueit_GmbH/tueit_Transkriptor.git cd tueit_Transkriptor python -m venv .venv .venv/bin/pip install -r requirements.txt ``` ### 2. App starten ```bash .venv/bin/python main.py ``` Beim ersten Start: Browser öffnet sich automatisch (oder manuell: http://localhost:8765). Einmal Admin-Account anlegen, dann einloggen. ### 3. Beastix konfigurieren (Einstellungen → ⚙) Als Admin einloggen → Zahnrad-Icon im Header → Einstellungen: | Feld | Wert (Beispiel) | |------|-----------------| | Whisper Server URL | `http://beastix:8000` | | Whisper Modell | `large-v3` | | Ollama Server URL | `http://beastix:11434` | | Ollama Modell | `gemma3:12b` (aus Dropdown wählen) | Leer lassen = lokale Verarbeitung (benötigt lokales Whisper-Modell). ### 4. Als systemd-User-Service einrichten (optional) ```bash cat > ~/.config/systemd/user/tueit-transcriber.service << 'EOF' [Unit] Description=tüit Transkriptor After=network.target [Service] WorkingDirectory=%h/work/tueit_Transkriptor ExecStart=%h/work/tueit_Transkriptor/.venv/bin/python main.py Restart=on-failure RestartSec=5 [Install] WantedBy=default.target EOF systemctl --user daemon-reload systemctl --user enable --now tueit-transcriber.service ``` --- ## Audio — PipeWire Combined Source Um Mikrofon + System-Audio gleichzeitig aufzunehmen (z.B. für Konferenzen): Einstellungen → Audio → **Combined Source erstellen** - Mikrofon auswählen - System-Audio Monitor auswählen (z.B. `alsa_output.*.monitor`) - Erstellen → neues Device `transkriptor-combined.monitor` erscheint in der Liste - Als Aufnahmequelle auswählen und speichern Die PipeWire-Module werden in `~/.config/tueit-transcriber/pipewire-modules.json` gespeichert. Bei App-Stop können sie mit `pactl unload-module ` entladen werden. --- ## Diarisierung (Sprecher-Erkennung) — HuggingFace-Setup Die Diarisierung verwendet das Modell `pyannote/speaker-diarization-3.1`. Das Modell ist kostenfrei, erfordert aber eine einmalige Zustimmung zu den Nutzungsbedingungen. ### 1. HuggingFace-Account Falls noch kein Account vorhanden: https://huggingface.co/join ### 2. Modell-Zugriff beantragen 1. https://huggingface.co/pyannote/speaker-diarization-3.1 aufrufen 2. **"Access repository"** klicken und die Nutzungsbedingungen akzeptieren ### 3. Read-Token erstellen 1. https://huggingface.co/settings/tokens aufrufen 2. **"New token"** → Name z.B. `transkriptor` → Typ **Read** → erstellen 3. Token kopieren (beginnt mit `hf_`) ### 4. Token in Transkriptor eintragen Als Admin einloggen → Zahnrad-Icon → Einstellungen → **Diarisierung**: - Checkbox **"Sprecher-Erkennung aktivieren"** aktivieren - Token in das Feld **HuggingFace Token** eintragen - **Speichern** Beim ersten Einsatz lädt pyannote das Modell herunter (~1 GB) und cached es lokal.