Runbook: ASR (Automatic Speech Recognition)
Service overview
Section titled “Service overview”ASR runs as a RunPod serverless endpoint. The orchestrator dispatches asr jobs via worker-provider-runpod, polls for results, and stores transcripts in media_job.
Symptoms → Diagnosis → Fix
Section titled “Symptoms → Diagnosis → Fix”Job stuck in pending state > 5 min
Section titled “Job stuck in pending state > 5 min”Diagnosis
- Check RunPod endpoint health: RunPod dashboard → Endpoints →
kc-asr-{env}→ Status. - Check cold-start queue depth — RunPod shows “queued” vs “running” workers.
- Check orchestrator logs:
docker logs keepcadence-orchestrator | grep asr.
Fix
- If endpoint is disabled: re-enable in RunPod dashboard.
- If no workers available: scale min workers from 0 → 1 in endpoint settings (incurs idle cost).
- If orchestrator is not polling: restart orchestrator container.
Transcript quality degraded (gibberish / wrong language)
Section titled “Transcript quality degraded (gibberish / wrong language)”Diagnosis
- Check
media_job.metadatafor the failing job — confirmlanguagefield is set correctly. - Check input audio duration — files > 2 h may exceed RunPod timeout (default 3600 s).
Fix
- Pass explicit
languagehint in the job payload. - Split long files before dispatch (orchestrator pipeline should do this; check
orchestrator-pipelines).
RunPod returns 5xx
Section titled “RunPod returns 5xx”Diagnosis
- Check RunPod status page: https://status.runpod.io
- Check endpoint logs in RunPod dashboard.
Fix
- Transient 5xx: orchestrator retries automatically (exponential back-off, 3 attempts).
- Persistent 5xx: open RunPod support ticket; consider failover to a secondary endpoint.
Useful queries
Section titled “Useful queries”-- Jobs stuck in ASR processingSELECT id, status, created_at, metadata->>'error' AS errorFROM media_jobWHERE job_type = 'asr' AND status IN ('pending', 'processing')ORDER BY created_atLIMIT 20;