CoolFace
Modelpublic

skillsafe-ai/whisper-tiny

sourceHugging Faceapache-2.0updated 3d agoView on Hugging Face
0likes24downloads
Model Card

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

Upstreamhttps://huggingface.co/onnx-community/whisper-tiny/tree/ff4177021cc41f7db950912b73ea4fdf7d01d8e7
Upstream SHA-256 / commitff4177021cc41f7db950912b73ea4fdf7d01d8e7
Reciperecipes/whisper-tiny.yaml — sha256 199acdcb6a95cd1402db0c23a09ae07979df82fe604cd07f75f1e2c5a85ff0dd
ToolchainPython 3.12.13, torch 2.10.0, onnx 1.23.0, onnxruntime 1.30.0 on Darwin 25.6.0 arm64
Converted2026-09-22T20:43:38+00:00

Files

fileclasssizeSHA-256
added_tokens.jsonbundle0.03 MB9715fd2243b6f06a5858b5e32950d2853f73dd5bc201aafcf76f5082a2d8acd1
config.jsonbundle0.00 MB46aeea0a406afbeb563fc8e59ca10609203df4299af6a83f73752fef369efd2d
generation_config.jsonbundle0.00 MBf5c67e5a4f7102f8cb4d058bc95da276bbc19eeec997267c3bb0f25ef68facd1
merges.txtbundle0.47 MB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
normalizer.jsonbundle0.05 MBbf1c507dc8724ca9cf9903640dacfb69dae2f00edee4f21ceba106a7392f26dd
onnx/decoder_model_merged.onnxregistry (fp32)113.06 MB8d20f4157407006e871d63ca0a3c54dddd7db33dfc4ee076960f1f8b2763ce3e
onnx/decoder_model_merged_fp16.onnxregistry (fp16)56.83 MBa1aac8aa5f4e9e835e343025edf5e4d1644ab6f629c0f8c21e121868e60b3f6c
onnx/decoder_model_merged_quantized.onnxregistry (q8)29.30 MB25e807a962b6349356d0ea5d0dfe530b7e5bf0e2a484aeca0359d03143faddd3
onnx/encoder_model.onnxregistry (fp32, q8)31.38 MB6642befb640f950d4a8cbbd17834d59e7e75f575b81ccf213e06b050623ab1dd
onnx/encoder_model_fp16.onnxregistry (fp16)15.75 MBfc4bf9f3fadc450b128c3ef0711a4e61a55797447b6a700abe7fb97d9f549518
preprocessor_config.jsonbundle0.00 MBa6a76d28c93edb273669eb9e0b0636a2bddbb1272c3261e47b7ca6dfdbac1b8d
special_tokens_map.jsonbundle0.00 MBe67ae3a0aaa99abcd9f187138e12db1f65c16a14761c50ef10eef2c174a7a691
tokenizer.jsonbundle2.37 MB27fc476bfe7f17299480be2273fc0608e4d5a99aba2ab5dec5374b4482d1a566
tokenizer_config.jsonbundle0.27 MB2a4c4281cf9f51ac6ccc406fdc711a087afe6530f671fa7b80953edc498275ce
vocab.jsonbundle0.99 MB50d6a919f0a0601d56a04eb583c780d18553aa388254ba3158eb6a00f13e2c1a

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:

fileinputsoutputsms
onnx/decoder_model_merged.onnxinputids[1, 4], encoderhiddenstates[1, 1500, 384], pastkeyvalues.0.decoder.key[1, 6, 1, 64], pastkeyvalues.0.decoder.value[1, 6, 1, 64], pastkeyvalues.0.encoder.key[1, 6, 1500, 64], pastkeyvalues.0.encoder.value[1, 6, 1500, 64], pastkeyvalues.1.decoder.key[1, 6, 1, 64], pastkeyvalues.1.decoder.value[1, 6, 1, 64], pastkeyvalues.1.encoder.key[1, 6, 1500, 64], pastkeyvalues.1.encoder.value[1, 6, 1500, 64], pastkeyvalues.2.decoder.key[1, 6, 1, 64], pastkeyvalues.2.decoder.value[1, 6, 1, 64], pastkeyvalues.2.encoder.key[1, 6, 1500, 64], pastkeyvalues.2.encoder.value[1, 6, 1500, 64], pastkeyvalues.3.decoder.key[1, 6, 1, 64], pastkeyvalues.3.decoder.value[1, 6, 1, 64], pastkeyvalues.3.encoder.key[1, 6, 1500, 64], pastkeyvalues.3.encoder.value[1, 6, 1500, 64], usecache_branch[1]logits[1, 4, 51865], present.0.decoder.key[1, 6, 4, 64], present.0.decoder.value[1, 6, 4, 64], present.0.encoder.key[1, 6, 1500, 64], present.0.encoder.value[1, 6, 1500, 64], present.1.decoder.key[1, 6, 4, 64], present.1.decoder.value[1, 6, 4, 64], present.1.encoder.key[1, 6, 1500, 64], present.1.encoder.value[1, 6, 1500, 64], present.2.decoder.key[1, 6, 4, 64], present.2.decoder.value[1, 6, 4, 64], present.2.encoder.key[1, 6, 1500, 64], present.2.encoder.value[1, 6, 1500, 64], present.3.decoder.key[1, 6, 4, 64], present.3.decoder.value[1, 6, 4, 64], present.3.encoder.key[1, 6, 1500, 64], present.3.encoder.value[1, 6, 1500, 64]10.7
onnx/decoder_model_merged_fp16.onnxinputids[1, 4], encoderhiddenstates[1, 1500, 384], pastkeyvalues.0.decoder.key[1, 6, 1, 64], pastkeyvalues.0.decoder.value[1, 6, 1, 64], pastkeyvalues.0.encoder.key[1, 6, 1500, 64], pastkeyvalues.0.encoder.value[1, 6, 1500, 64], pastkeyvalues.1.decoder.key[1, 6, 1, 64], pastkeyvalues.1.decoder.value[1, 6, 1, 64], pastkeyvalues.1.encoder.key[1, 6, 1500, 64], pastkeyvalues.1.encoder.value[1, 6, 1500, 64], pastkeyvalues.2.decoder.key[1, 6, 1, 64], pastkeyvalues.2.decoder.value[1, 6, 1, 64], pastkeyvalues.2.encoder.key[1, 6, 1500, 64], pastkeyvalues.2.encoder.value[1, 6, 1500, 64], pastkeyvalues.3.decoder.key[1, 6, 1, 64], pastkeyvalues.3.decoder.value[1, 6, 1, 64], pastkeyvalues.3.encoder.key[1, 6, 1500, 64], pastkeyvalues.3.encoder.value[1, 6, 1500, 64], usecache_branch[1]logits[1, 4, 51865], present.0.decoder.key[1, 6, 4, 64], present.0.decoder.value[1, 6, 4, 64], present.0.encoder.key[1, 6, 1500, 64], present.0.encoder.value[1, 6, 1500, 64], present.1.decoder.key[1, 6, 4, 64], present.1.decoder.value[1, 6, 4, 64], present.1.encoder.key[1, 6, 1500, 64], present.1.encoder.value[1, 6, 1500, 64], present.2.decoder.key[1, 6, 4, 64], present.2.decoder.value[1, 6, 4, 64], present.2.encoder.key[1, 6, 1500, 64], present.2.encoder.value[1, 6, 1500, 64], present.3.decoder.key[1, 6, 4, 64], present.3.decoder.value[1, 6, 4, 64], present.3.encoder.key[1, 6, 1500, 64], present.3.encoder.value[1, 6, 1500, 64]21.2
onnx/decoder_model_merged_quantized.onnxinputids[1, 4], encoderhiddenstates[1, 1500, 384], pastkeyvalues.0.decoder.key[1, 6, 1, 64], pastkeyvalues.0.decoder.value[1, 6, 1, 64], pastkeyvalues.0.encoder.key[1, 6, 1500, 64], pastkeyvalues.0.encoder.value[1, 6, 1500, 64], pastkeyvalues.1.decoder.key[1, 6, 1, 64], pastkeyvalues.1.decoder.value[1, 6, 1, 64], pastkeyvalues.1.encoder.key[1, 6, 1500, 64], pastkeyvalues.1.encoder.value[1, 6, 1500, 64], pastkeyvalues.2.decoder.key[1, 6, 1, 64], pastkeyvalues.2.decoder.value[1, 6, 1, 64], pastkeyvalues.2.encoder.key[1, 6, 1500, 64], pastkeyvalues.2.encoder.value[1, 6, 1500, 64], pastkeyvalues.3.decoder.key[1, 6, 1, 64], pastkeyvalues.3.decoder.value[1, 6, 1, 64], pastkeyvalues.3.encoder.key[1, 6, 1500, 64], pastkeyvalues.3.encoder.value[1, 6, 1500, 64], usecache_branch[1]logits[1, 4, 51865], present.0.decoder.key[1, 6, 4, 64], present.0.decoder.value[1, 6, 4, 64], present.0.encoder.key[1, 6, 1500, 64], present.0.encoder.value[1, 6, 1500, 64], present.1.decoder.key[1, 6, 4, 64], present.1.decoder.value[1, 6, 4, 64], present.1.encoder.key[1, 6, 1500, 64], present.1.encoder.value[1, 6, 1500, 64], present.2.decoder.key[1, 6, 4, 64], present.2.decoder.value[1, 6, 4, 64], present.2.encoder.key[1, 6, 1500, 64], present.2.encoder.value[1, 6, 1500, 64], present.3.decoder.key[1, 6, 4, 64], present.3.decoder.value[1, 6, 4, 64], present.3.encoder.key[1, 6, 1500, 64], present.3.encoder.value[1, 6, 1500, 64]11.9
onnx/encoder_model.onnxinput_features[1, 80, 3000]lasthiddenstate[1, 1500, 384]39.5
onnx/encoder_model_fp16.onnxinput_features[1, 80, 3000]lasthiddenstate[1, 1500, 384]62.7

Use in the browser

js
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.