OpenAI’s Whisper models are open-weight, genuinely accurate, and light enough to run comfortably on a CPU for shorter clips — no cloud API, no per-minute cost, and no audio ever leaving your machine.
The Fastest Path: faster-whisper
pip install faster-whisper
from faster_whisper import WhisperModel
# "base" runs comfortably on CPU; "large-v3" needs a GPU for reasonable speed
model = WhisperModel("base", device="cpu", compute_type="int8")
segments, info = model.transcribe("meeting.mp3", beam_size=5)
print(f"Detected language: {info.language}")
for segment in segments:
print(f"[{segment.start:.1f}s -> {segment.end:.1f}s] {segment.text}")
Model Size Trade-offs
tiny ~75MB fastest, noticeably less accurate base ~145MB good balance for CPU use small ~500MB solid accuracy, still CPU-usable medium ~1.5GB needs a decent GPU for real-time speed large-v3 ~3GB best accuracy, GPU strongly recommended
Real-Time Transcription from a Microphone
import sounddevice as sd
import numpy as np
from faster_whisper import WhisperModel
model = WhisperModel("base", device="cpu", compute_type="int8")
def callback(indata, frames, time, status):
audio = np.squeeze(indata)
segments, _ = model.transcribe(audio, language="en")
for seg in segments:
print(seg.text, end=" ", flush=True)
with sd.InputStream(callback=callback, channels=1, samplerate=16000, blocksize=16000*5):
print("Listening... Ctrl+C to stop")
while True:
pass
Where This Is Genuinely Useful
Transcribing meetings and interviews without sending recordings to a third party, building accessibility features into your own tools, and subtitle generation for personal video projects — anywhere the privacy or cost of a cloud transcription API is a real concern rather than a hypothetical one.