Public registry snapshot: 2026-10-03. Enable JavaScript or follow Public model JSON for current registry data.
← Back to modelsSpeech 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.
Your draft is saved on this device. Each accepted job keeps its identity through retries and reloads.