Satt opp faster-whisper-server (fedirz/faster-whisper-server:latest-cpu) som Docker-tjeneste på produksjonsserveren. Ingen GPU tilgjengelig — bruker CPU med int8-kvantisering og large-v3 modell for best norsk kvalitet. Verifisert: - Transkripsjon fungerer via OpenAI-kompatibelt API - verbose_json med segmenter og tidskoder OK - Docker DNS-oppslag fra sidelinja-net fungerer - Maskinrommet har WHISPER_URL=http://faster-whisper:8000 - RAM-bruk ~2.5 GB med modell lastet Konfigurasjon: - Image: fedirz/faster-whisper-server:latest-cpu - Modell: large-v3 (norsk), int8, CPU - CAS montert read-only for direkte filtilgang - Healthcheck via python3 (curl ikke tilgjengelig i image) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
111 lines
3.2 KiB
Markdown
111 lines
3.2 KiB
Markdown
# Erfaring: faster-whisper oppsett
|
|
**Dato:** 2026-03-17
|
|
|
|
## Kontekst
|
|
Oppgave 7.1 — sette opp faster-whisper som Docker-tjeneste for norsk tale-til-tekst (STT).
|
|
Serveren er en Hetzner VPS (8 vCPU, 16 GB RAM) uten GPU.
|
|
|
|
## Valg
|
|
|
|
### Image: `fedirz/faster-whisper-server`
|
|
- Gir OpenAI-kompatibelt HTTP API (`/v1/audio/transcriptions`)
|
|
- CPU-variant: `fedirz/faster-whisper-server:latest-cpu`
|
|
- GPU-variant: `fedirz/faster-whisper-server:latest-cuda` (for fremtidig bruk)
|
|
- Laster modell automatisk fra HuggingFace ved første request (lazy loading)
|
|
|
|
### Modell: `large-v3`
|
|
- Best norsk kvalitet blant standard Whisper-modeller
|
|
- ~2.5 GB RAM med int8-kvantisering (CPU)
|
|
- Treigere enn `medium` på CPU, men akseptabelt for bakgrunnsjobber
|
|
- Alternativ: `NbAiLab/nb-whisper-large` (norsk-finjustert) — ikke testet
|
|
|
|
### Kvantisering: `int8`
|
|
- Halverer RAM-bruk vs float32, minimal kvalitetstap
|
|
- Obligatorisk for CPU — float16 krever GPU
|
|
|
|
## Docker Compose-konfigurasjon
|
|
|
|
```yaml
|
|
faster-whisper:
|
|
image: fedirz/faster-whisper-server:latest-cpu
|
|
restart: unless-stopped
|
|
environment:
|
|
WHISPER__MODEL: large-v3
|
|
WHISPER__INFERENCE_DEVICE: cpu
|
|
WHISPER__COMPUTE_TYPE: int8
|
|
volumes:
|
|
- /srv/synops/data/whisper-models:/root/.cache/huggingface
|
|
- /srv/synops/media/cas:/srv/synops/media/cas:ro
|
|
networks:
|
|
- sidelinja-net
|
|
healthcheck:
|
|
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen(\"http://localhost:8000/health\")"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 120s
|
|
```
|
|
|
|
## API-bruk
|
|
|
|
Endepunkt fra Docker-nettverket: `http://faster-whisper:8000`
|
|
|
|
```bash
|
|
# Enkel transkripsjon
|
|
curl -X POST http://faster-whisper:8000/v1/audio/transcriptions \
|
|
-F "file=@lydfil.wav" \
|
|
-F "model=large-v3" \
|
|
-F "language=no" \
|
|
-F "response_format=verbose_json"
|
|
```
|
|
|
|
Respons (verbose_json):
|
|
```json
|
|
{
|
|
"task": "transcribe",
|
|
"language": "no",
|
|
"duration": 1.0,
|
|
"text": "...",
|
|
"segments": [
|
|
{
|
|
"id": 1,
|
|
"start": 0.0,
|
|
"end": 3.5,
|
|
"text": "...",
|
|
"no_speech_prob": 0.01
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Ressursbruk
|
|
- **RAM:** ~2.5 GB (idle, modell lastet)
|
|
- **CPU:** Minimal ved idle. Bruker alle tilgjengelige kjerner under transkripsjon.
|
|
- **Disk:** ~3 GB for large-v3 modell (i `/srv/synops/data/whisper-models/`)
|
|
|
|
## Gotchas
|
|
1. **Healthcheck:** Containeren har ikke `curl` installert. Bruk python3 urllib i stedet.
|
|
2. **Modellnedlasting:** Første request etter oppstart trigger modellnedlasting (~3 GB).
|
|
`start_period: 120s` i healthcheck gir tid til dette.
|
|
3. **CAS-tilgang:** Containeren monterer CAS read-only for direkte filtilgang.
|
|
Alternativt kan maskinrommet sende filer via multipart upload.
|
|
4. **Hallusinering:** Whisper hallusinerer tekst på stille/tone-filer (høy `no_speech_prob`).
|
|
Filtrér segmenter med `no_speech_prob > 0.6` i postprosessering.
|
|
|
|
## Ved GPU-oppgradering
|
|
Bytt til CUDA-image og float16:
|
|
```yaml
|
|
faster-whisper:
|
|
image: fedirz/faster-whisper-server:latest-cuda
|
|
environment:
|
|
WHISPER__MODEL: large-v3
|
|
WHISPER__INFERENCE_DEVICE: cuda
|
|
WHISPER__COMPUTE_TYPE: float16
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities: [gpu]
|
|
```
|