feat: upload audio, get a private Swedish transcript, discuss it (#33, ADR-033) #39
@@ -12,6 +12,20 @@ it** — endpoints and aliases drift, and this file is a snapshot (2026-06-06),
|
|||||||
- **Off-cluster (host / NodePort):** `http://koala:30401/v1/` — service `litellm-nodeport` (`4000:30401`).
|
- **Off-cluster (host / NodePort):** `http://koala:30401/v1/` — service `litellm-nodeport` (`4000:30401`).
|
||||||
- NOTE: the earlier `31234` was **wrong** — `31234` is the `llama-swap` NodePort (`8080:31234`),
|
- NOTE: the earlier `31234` was **wrong** — `31234` is the `llama-swap` NodePort (`8080:31234`),
|
||||||
not LiteLLM. Use `30401` for off-cluster LiteLLM. `confirm` resolved.
|
not LiteLLM. Use `30401` for off-cluster LiteLLM. `confirm` resolved.
|
||||||
|
- **Speech-to-text (ADR-033):** the same gateway serves `POST /v1/audio/transcriptions` for
|
||||||
|
`iguana/kb-whisper` (primary, local) and `berget/kb-whisper` (fallback, EU cloud — private audio
|
||||||
|
leaves the homelab if it is used). **Call it via the NodePort / in-cluster address above, NOT
|
||||||
|
`https://llm-api.d-ma.be`:** that public ingress (openresty) returns `413` for bodies over
|
||||||
|
roughly 8–10 MB (~5 minutes of 16 kHz WAV), while the NodePort took 174 MB (90 minutes) in one
|
||||||
|
request (measured 2026-10-01, `docs/research/audio-length-ceiling-2026-10-01.md`). Send multipart
|
||||||
|
field `file`, `response_format=verbose_json`, no `Expect: 100-continue`. iguana's whisper-server
|
||||||
|
can wedge permanently after a Metal OOM (infra#273); never branch on its
|
||||||
|
`{"error":"failed to process audio"}` string — it has had at least five causes. Tapir's knobs:
|
||||||
|
`TAPIR_UPLOADS_ENABLED` (off by default), `TAPIR_UPLOAD_MAX_MB` (200), `TAPIR_UPLOAD_MAX_MINUTES`
|
||||||
|
(90), `TAPIR_TRANSCRIBE_MODEL`, `TAPIR_TRANSCRIBE_FALLBACK_MODEL` (empty disables the cloud
|
||||||
|
fallback), `TAPIR_TRANSCRIBE_TIMEOUT` (30m), `TAPIR_UPLOAD_TMP_DIR`, `TAPIR_FFMPEG_BIN`,
|
||||||
|
`TAPIR_FFPROBE_BIN`, `TAPIR_MAX_UPLOADED_TRANSCRIPT_CHARS` (120000). Needs `ffmpeg` + `ffprobe`
|
||||||
|
in the runtime image; Tapir's own ingress body limit for a 200 MB upload is unverified (infra).
|
||||||
- **Auth key:** treat as a secret via the SecretStore port; do not hardcode in committed code.
|
- **Auth key:** treat as a secret via the SecretStore port; do not hardcode in committed code.
|
||||||
NOTE: the documented `sk-local-123` returned `401` on `30401/v1/models` (2026-06-02) — it is
|
NOTE: the documented `sk-local-123` returned `401` on `30401/v1/models` (2026-06-02) — it is
|
||||||
stale or the gateway now enforces the `LITELLM_MASTER_KEY` (1Password `op://HomeLab/LITELLM_MASTER_KEY`).
|
stale or the gateway now enforces the `LITELLM_MASTER_KEY` (1Password `op://HomeLab/LITELLM_MASTER_KEY`).
|
||||||
|
|||||||
Reference in New Issue
Block a user