skillsafe-ai/whisper-tiny
Whisper tiny speech-to-text (encoder + decoder, transformers.js)
Browser-ready import artifacts for automatic-speech-recognition, produced by SkillSafe's reproducible converter (`models/` in skillsafe.ai) from a pinned upstream source. Every byte here is derivable from that source plus the recipe below; nothing was edited by hand.
Provenance
Files
registry files are parameter files served from models.skillsafe.ai once vetted; bundle files ship inside an app; registry-shared is a runtime library reused by every model of the same architecture.
Verification
Imported as published upstream (no conversion). Each file is pinned by SHA-256 to its source; every ONNX file passed onnx.checker and a CPU smoke run under onnxruntime with zero-filled inputs at the declared shapes:
Use in the browser
import * as ort from "onnxruntime-web";
const session = await ort.InferenceSession.create("https://huggingface.co/skillsafe-ai/whisper-tiny/resolve/main/onnx/decoder_model_merged.onnx", { executionProviders: ["webgpu", "wasm"] });Contract (onnx/decoder_model_merged.onnx): input input_ids int64 ['batch_size', 'decoder_sequence_length'], encoder_hidden_states float32 ['batch_size', 'encoder_sequence_length / 2', 384], past_key_values.0.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.0.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.0.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.0.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.1.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.1.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.1.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.1.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.2.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.2.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.2.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.2.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.3.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.3.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length', 64], past_key_values.3.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], past_key_values.3.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], use_cache_branch bool [1] → output logits float32 ['batch_size', 'decoder_sequence_length', 51865], present.0.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.0.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.0.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.0.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.1.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.1.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.1.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.1.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.2.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.2.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.2.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.2.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.3.decoder.key float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.3.decoder.value float32 ['batch_size', 6, 'past_decoder_sequence_length + 1', 64], present.3.encoder.key float32 ['batch_size', 6, 'encoder_sequence_length_out', 64], present.3.encoder.value float32 ['batch_size', 6, 'encoder_sequence_length_out', 64]. Opset 14.
Licence and attribution
Whisper tiny: Copyright 2022 OpenAI, Apache License 2.0 (https://github.com/openai/whisper); ONNX export by onnx-community (https://huggingface.co/onnx-community/whisper-tiny).
Licence: Apache-2.0 — notice: https://github.com/openai/whisper/blob/main/LICENSE. The conversion recipe and this model card are part of the SkillSafe repository and carry its licence; the weights remain under the upstream licence above.
The full manifest.json in this repo records the recipe, sources, toolchain (including the uv.lock hash) and per-file verification numbers.
