Workspace / Discovery

Public registry snapshot: 2026-10-03. Enable JavaScript or follow Public model JSON for current registry data.

← Back to models

Speech recognition

Whisper Tiny

Compact transcription model for speech and bounded audio experiments.

Source use case: turn a short spoken recording into text. Use the private CPU test preview below.

PRIVATE CPU PREVIEW

Transcribe a short recording.

Use audio you own or have permission to process. Batch size: one clip.

16-bit PCM WAV · mono or stereo · 8–48 kHz · 0.1–30 seconds · up to 6 MiB. No turnaround guarantee.

One unit per started audio second is reserved on submission and charged once on delivery. Failed or cancelled jobs release all units. Audio and transcripts stay private; this preview has no automatic retention cleanup.

Prepare a compatible WAV

Use a short spoken recording you own or have permission to process. Already have a supported WAV? Use it directly.

With FFmpeg installed, replace the input path below. This converts the first 30 seconds to mono, 16 kHz, 16-bit PCM locally and refuses to overwrite an existing file.

ffmpeg -n -i "./my-recording.mp3" -t 30 -vn -ac 1 -ar 16000 \
  -c:a pcm_s16le "./short-clip.wav"

Listen to short-clip.wav before uploading. Conversion sends nothing to ModelUse and does not grant development units.

Sign in before selecting private audio. An existing operator-issued development grant is required; sign-in grants no units. Saved input IDs and request keys resume after sign-in; audio bytes are never stored in this browser.

Use this same model through the API

Bash, curl, jq and Python 3; an existing workspace API key, an operator-issued noncash development grant and a supported private WAV are required. Set MODELUSE_TOKEN and MODELUSE_WAV locally. Never put them in a public URL or log.

This example uses the same recipe, task reference and service as the form. It saves only private run state and the result on your own machine. Reuse its directory and key to recover the same request; do not repeat an uncertain upload.

set -euo pipefail
: "${MODELUSE_TOKEN:?Set your existing workspace API key}"
CORE="${MODELUSE_CORE:-https://core.modeluse.com}"
WAV="${MODELUSE_WAV:-./short-clip.wav}"
RUN_DIR="${MODELUSE_RUN_DIR:-./modeluse-run}"
RECIPE_ID='whisper-tiny-cpu-v1:openai--whisper-tiny:169d4a4341b33bc18d8881c4b69c2e104e1cc0af'
umask 077
mkdir -p "$RUN_DIR"

curl --fail --silent --show-error --max-time 20 -H "Authorization: Bearer $MODELUSE_TOKEN" \
  "$CORE/v1/credits" > "$RUN_DIR/credits.json"
jq -e '.meter_version=="noncash-dev-seconds-v1" and .payments_enabled==false' "$RUN_DIR/credits.json" >/dev/null

# Upload once. Stop after an uncertain upload; do not silently repeat it.
if [ ! -f "$RUN_DIR/input.json" ]; then
  jq -e ' .available>0 ' "$RUN_DIR/credits.json" >/dev/null || { echo 'No development audio units available. An existing operator-issued grant is required; sign-in and funding grant no units.' >&2; exit 1; }
  [ ! -e "$RUN_DIR/upload.started" ] || { echo 'Inspect the uncertain upload before retrying.' >&2; exit 1; }
  : > "$RUN_DIR/upload.started"
  curl --fail --silent --show-error --max-time 30 -X POST "$CORE/v1/inputs" \
    -H "Authorization: Bearer $MODELUSE_TOKEN" -H 'Content-Type: audio/wav' \
    --data-binary "@$WAV" > "$RUN_DIR/input.tmp"
  mv "$RUN_DIR/input.tmp" "$RUN_DIR/input.json"
fi
INPUT_ID=$(jq -er '.id' "$RUN_DIR/input.json")
curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
  "$CORE/v1/inputs/$INPUT_ID/quote" > "$RUN_DIR/quote.json"
jq -e --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID"  \
  '.recipe_id==$recipe and .input_id==$input and .meter_version=="noncash-dev-seconds-v1" and .payments_enabled==false and
   (.duration_seconds|type)=="number" and .duration_seconds>=0.1 and .duration_seconds<=30 and
   (.units|type)=="number" and .units==(.duration_seconds|ceil) ' \
  "$RUN_DIR/quote.json" >/dev/null

if [ ! -f "$RUN_DIR/request.json" ]; then
  jq -e --slurpfile credits "$RUN_DIR/credits.json" \
  '.units <= $credits[0].available' "$RUN_DIR/quote.json" >/dev/null || { echo 'This quote exceeds the available development audio units. No job was submitted.' >&2; exit 1; }
fi
cat "$RUN_DIR/quote.json"

# Keep this exact body and key for retries. Use a new directory for a deliberate new run.
if [ ! -f "$RUN_DIR/request.json" ]; then
  jq -nc --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID" \
    --arg reference '' --arg service 'interactive'  \
    '{recipe_id:$recipe,input_id:$input,caller_reference:$reference,service:$service}' > "$RUN_DIR/request.json"
fi
# Never turn an older model-only retry into a pipeline request (or the reverse).
jq -e --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID" --arg pipeline '' \
  '.recipe_id==$recipe and .input_id==$input and (.pipeline_id // "")==$pipeline' "$RUN_DIR/request.json" >/dev/null
[ -s "$RUN_DIR/request-key" ] || python3 -c 'import uuid; print(uuid.uuid4())' > "$RUN_DIR/request-key"
REQUEST_KEY=$(cat "$RUN_DIR/request-key")
curl --fail --silent --show-error --max-time 30 -X POST "$CORE/v1/jobs" \
  -H "Authorization: Bearer $MODELUSE_TOKEN" -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $REQUEST_KEY" --data-binary "@$RUN_DIR/request.json" > "$RUN_DIR/job.json"
JOB_ID=$(jq -er '.id' "$RUN_DIR/job.json")

# Bounded readback. A timeout leaves the durable job running: rerun to recover.
for poll in $(seq 1 150); do
  curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
    "$CORE/v1/jobs/$JOB_ID" > "$RUN_DIR/job.json"
  STATUS=$(jq -er '.status' "$RUN_DIR/job.json")
  case "$STATUS" in
    completed) break ;;
    failed|cancelled) echo "Job is $STATUS; inspect its private receipt." >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done
[ "$STATUS" = completed ] || { echo "Job remains $STATUS; recover the same directory or cancel the job explicitly." >&2; exit 1; }

ARTIFACT_ID=$(jq -er '.artifact_id' "$RUN_DIR/job.json")
curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
  "$CORE/v1/artifacts/$ARTIFACT_ID" > "$RUN_DIR/result.tmp"

mv "$RUN_DIR/result.tmp" "$RUN_DIR/result.json"
printf '%s\n' "Private JSON saved: $RUN_DIR/result.json"

To cancel accepted work, use its saved job ID with POST /v1/jobs/{job_id}/cancel and the same existing credential. Leaving this page or stopping the script does not cancel a job.

MODEL PROVENANCE

A source you can trace.

Repository
openai/whisper-tiny ↗ (pinned source, opens in a new tab)
Source revision
169d4a4341b33bc18d8881c4b69c2e104e1cc0af
Declared licence
apache-2.0
Declared artifacts
4
Available evidence
Source metadata

Licence labels describe the registry declaration. Review the pinned source’s terms for each artifact; commercial eligibility has not been established here.

Artifact hashes are source declarations. Local weight verification, quality, latency and cost measurements are not provided by this catalog.

What can I do here?

Private transcription + manifest export available

Source task
Speech recognition
Audio execution
Private CPU transcription preview enabled in registry. A source task label does not establish executable availability.
Executable task here
CPU model manifest export; Private CPU transcription (operator-enabled preview)
Manifest price / cost
Manifest: no external compute charge. Customer price not published. Host and storage cost are unknown.
Audio price / usage
Registered preview uses noncash development units: one unit per started audio second. These are not USD or a customer price. No monetary price is published here.
Manifest input
Exact recipe ID, optional task reference (up to 160 characters), interactive or background service preference. No audio input.
Manifest output
JSON manifest with the pinned source revision, declared artifacts and recipe. No audio or transcription output.

Registered CPU preview contract: 16-bit PCM WAV, mono or stereo, 8–48 kHz, 0.1–30 seconds, up to 6 MiB; private JSON transcript output. Disabled by default in the candidate. Audio selection requires sign-in, development units and explicit runnable availability in the live registry.

Agent discovery and example request

Read this model without an account. The live API is authoritative for currently registered recipes.

Public model JSON ↗

Example body for POST /v1/jobs. A workspace credential and a unique Idempotency-Key are required. This exports metadata.

{
  "recipe_id": "manifest-v1:openai--whisper-tiny:169d4a4341b33bc18d8881c4b69c2e104e1cc0af",
  "caller_reference": "source-review",
  "service": "background"
}

Private transcription also requires an operator-issued development grant and an authenticated raw WAV upload to POST /v1/inputs. Read its /v1/inputs/{input_id}/quote and your /v1/credits before submitting. Browser mutations need the session CSRF token; agent calls use a private workspace key. Keep private text and audio out of public logs.

Example job body after upload. Replace the input ID with your owned private input. Save one unique request key before dispatch and reuse that exact key and body after an interrupted response.

{
  "recipe_id": "whisper-tiny-cpu-v1:openai--whisper-tiny:169d4a4341b33bc18d8881c4b69c2e104e1cc0af",
  "input_id": "YOUR_OWNED_PRIVATE_INPUT_ID",
  "caller_reference": "private-transcription",
  "service": "interactive"
}
API contract ↗
Technical metadata export

FIRST REPRODUCIBLE STEP

Build a model manifest.

Export the exact source revision, declared artifact hashes and recipe as a portable JSON record.

CPU taskNo audio uploadNo external compute charge

Your draft is saved on this device. Each accepted job keeps its identity through retries and reloads.