GPU Compute / Recipe

Audio and transcription jobs

Run Whisper batch transcription or audio processing pipelines as one-off GPU jobs. Billing stops when the script exits — no persistent endpoint needed for occasional workloads.

Prerequisites: npm install -g badgr-cli then badgr login. Setup guide →

Batch transcription with Whisper

Run a Python script that transcribes a folder of audio files. Pass model size and paths via --env:

badgr run python transcribe.py \
  --gpu RTX_4090 \
  --env WHISPER_MODEL=large-v3 \
  --env AUDIO_DIR=./audio \
  --env OUTPUT_FILE=transcripts.json

A typical transcribe.py using faster-whisper:

import os, json
from pathlib import Path
from faster_whisper import WhisperModel

model = WhisperModel(
    os.environ.get("WHISPER_MODEL", "large-v3"),
    device="cuda",
    compute_type="float16",
)

audio_dir = Path(os.environ.get("AUDIO_DIR", "./audio"))
results = []

for path in audio_dir.glob("*.mp3"):
    segments, info = model.transcribe(str(path))
    text = " ".join(seg.text for seg in segments)
    results.append({"file": path.name, "language": info.language, "text": text})
    print(f"Done: {path.name}")

output = os.environ.get("OUTPUT_FILE", "transcripts.json")
with open(output, "w") as f:
    json.dump(results, f, indent=2)
print(f"Wrote {len(results)} transcripts to {output}")

Use a pre-built transcription image

Run a container that already has faster-whisper and CUDA set up. Pass model size and input/output paths via --env:

badgr run \
  --image ghcr.io/my-org/whisper-batch:latest \
  --gpu RTX_4090 \
  --env WHISPER_MODEL=large-v3 \
  --env MANIFEST_URL=https://storage.example.com/manifest.json \
  --env OUTPUT_BUCKET=my-transcripts

Detach and check logs later

Use --detach for large batches so you don't need to keep your terminal open:

# Launch and return immediately
badgr run python transcribe.py \
  --gpu RTX_4090 \
  --env WHISPER_MODEL=large-v3 \
  --detach

# Check progress when ready
badgr logs <deployment-id>

Options

--gpu RTX_4090Recommended for Whisper — fits large-v3 at 24 GB VRAM
--image <ref>Custom container with faster-whisper or whisper.cpp
--env KEY=VALUESet environment variables (model size, paths, etc.) — repeatable
--detachReturn job ID immediately, don't stream logs
--max-runtime <min>Auto-stop after N minutes (recommended to cap spend)
--max-cost <$>Auto-stop when spend reaches this amount

Next steps