zeromodels/moonshine_tiny
*See [our collection](https://huggingface.co/collections/zeromodels/moonshine-6a8eaf317c682a7009c68b2c) for all versions of Moonshine.*
Run Moonshine with Keras 3: JAX, PyTorch, or TensorFlow
  
zeromodels/moonshine_tiny
Paper: Moonshine: Speech Recognition for Live Transcription and Voice Commands (arXiv:2410.15608) · HF Papers
Moonshine is an English ASR encoder-decoder built for short / live audio: the encoder sees the raw waveform length you pass in (no Whisper-style 30 s pad), so short commands stay cheap. Output is cased and punctuated.
For more details on the model, please go to the upstream model card.
Pure-Keras 3 conversion of `UsefulSensors/moonshine-tiny` for zeromodels. One implementation runs unmodified on TensorFlow / Torch / JAX.
This is an ASR checkpoint (MoonshineConditionalGenerate).
✨ Quick start
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
import soundfile as sf
from zeromodels.models.moonshine import (
MoonshineProcessor,
MoonshineConditionalGenerate,
)
model = MoonshineConditionalGenerate.from_weights("zeromodels/moonshine_tiny")
processor = MoonshineProcessor.from_weights("zeromodels/moonshine_tiny")
audio, sr = sf.read("your_audio.wav", dtype="float32") # 16 kHz mono
# Cost scales with clip length: no fixed 30 s pad like Whisper.
text = model.generate(audio, processor)
print(repr(text[0]))Load any Moonshine variant the same way with from_weights("zeromodels/<variant>"):
Tips
- Set
KERAS_BACKENDbefore importing Keras / zeromodels. - Prefer
MoonshineProcessor.from_weights(...)so feature extraction matches. - English-only; pass a list of waveforms to batch.
- See Moonshine docs and Loading Weights.
- Community / upstream safetensors still work via the
hf:prefix, e.g.MoonshineConditionalGenerate.from_weights("hf:UsefulSensors/moonshine-tiny").
Special Thanks
A huge thank you to the Useful Sensors Moonshine authors for creating and releasing these models.
License: MIT.
