File size: 4,124 Bytes
2bc9356
 
 
03e9779
2bc9356
 
 
 
 
03e9779
 
 
 
2bc9356
03e9779
 
2bc9356
 
03e9779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2bc9356
04c6868
03e9779
 
2bc9356
 
03e9779
 
 
 
 
 
04c6868
03e9779
 
04c6868
03e9779
 
 
 
 
 
2bc9356
03e9779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
04c6868
03e9779
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
pipeline_tag: automatic-speech-recognition
license: apache-2.0
base_model: openai/whisper-base
library_name: kerasformers
tags:
- keras
- kerasformers
- whisper
- automatic-speech-recognition
- audio
- multilingual
- arxiv:2212.04356
- pytorch
- jax
- tf
---

## ***See [our collection](https://huggingface.co/collections/kerasformers/whisper-6a6ac856710a03d7d2e207b6) for all versions of Whisper.***

# Run Whisper with Keras 3: JAX, PyTorch, or TensorFlow

[![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-black?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-Whisper-blue)](https://imvision12.github.io/KerasFormers/whisper/) [![Collection](https://img.shields.io/badge/HF-Whisper%20collection-yellow)](https://huggingface.co/collections/kerasformers/whisper-6a6ac856710a03d7d2e207b6)

# kerasformers/whisper_base

Paper: [Robust Speech Recognition via Large-Scale Weak Supervision (arXiv:2212.04356)](https://arxiv.org/abs/2212.04356) · [HF Papers](https://huggingface.co/papers/2212.04356)

Whisper is a **multilingual** encoder-decoder ASR model trained on large-scale weak supervision. Use `task="transcribe"` to keep the source language or `task="translate"` to render English. Pass `language=None` to let the model detect the spoken language. Output is cased and punctuated.

For more details on the model, please go to the upstream [model card](https://huggingface.co/openai/whisper-base).

Pure-**Keras 3** conversion of [`openai/whisper-base`](https://huggingface.co/openai/whisper-base) for [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on **TensorFlow / Torch / JAX**.

This is an **ASR** checkpoint (`WhisperConditionalGenerate`, 74M).

## ✨ Quick start

```python
import os
os.environ["KERAS_BACKEND"] = "torch"  # or "jax" / "tensorflow"

import soundfile as sf
from kerasformers.models.whisper import (
    WhisperProcessor,
    WhisperConditionalGenerate,
)

model = WhisperConditionalGenerate.from_weights("kerasformers/whisper_base")
processor = WhisperProcessor.from_weights("kerasformers/whisper_base")

audio, sr = sf.read("your_audio.wav", dtype="float32")  # 16 kHz mono
# task="transcribe" keeps the source language; "translate" -> English.
text = model.generate(audio, processor, language="en", task="transcribe")
print(repr(text[0]))
```

Load any Whisper variant the same way with `from_weights("kerasformers/<variant>")`:

| Variant | Hub | Notes |
|---|---|---|
| `whisper_tiny` | [`kerasformers/whisper_tiny`](https://huggingface.co/kerasformers/whisper_tiny) | 39M |
| `whisper_base` | [`kerasformers/whisper_base`](https://huggingface.co/kerasformers/whisper_base) | 74M |
| `whisper_small` | [`kerasformers/whisper_small`](https://huggingface.co/kerasformers/whisper_small) | 244M |
| `whisper_medium` | [`kerasformers/whisper_medium`](https://huggingface.co/kerasformers/whisper_medium) | 769M |
| `whisper_large` | [`kerasformers/whisper_large`](https://huggingface.co/kerasformers/whisper_large) | 1.55B |
| `whisper_large_v2` | [`kerasformers/whisper_large_v2`](https://huggingface.co/kerasformers/whisper_large_v2) | 1.55B |
| `whisper_large_v3` | [`kerasformers/whisper_large_v3`](https://huggingface.co/kerasformers/whisper_large_v3) | 128 mel bins |
| `whisper_large_v3_turbo` | [`kerasformers/whisper_large_v3_turbo`](https://huggingface.co/kerasformers/whisper_large_v3_turbo) | 4 decoder layers |

## Tips

- Set `KERAS_BACKEND` **before** importing Keras / kerasformers.
- Prefer `WhisperProcessor.from_weights(...)` so mel bins match the variant (v3 uses 128).
- Clips are padded to a 30 s window; chunk longer audio yourself.
- See [Whisper docs](https://imvision12.github.io/KerasFormers/whisper/) and [Loading Weights](https://imvision12.github.io/KerasFormers/loading_weights/).
- Community / upstream safetensors still work via the `hf:` prefix, e.g. `WhisperConditionalGenerate.from_weights("hf:openai/whisper-base")`.

## Special Thanks

A huge thank you to the OpenAI Whisper authors for creating and releasing these models.

License: Apache 2.0.