Speech models

Run Whisper on your own machine.

Three routes, the commands for each one from the projects' own READMEs, and a way to check that nothing leaves your computer.

Download FrazeFirst 30 minutes free, no card.

The short answer

Fraze does not run Whisper, so take this as a guide and not a pitch. There are three common ways to run Whisper locally: the official openai-whisper Python package, whisper.cpp for a Mac or a machine with no GPU or no Python, and faster-whisper for an NVIDIA GPU.

All three download the model weights once, then transcribe files on your own machine, so you can turn the network off afterwards. The standard commands read files. Captions of something playing right now need a streaming layer on top.

Three routes, and what each one needs

Best forNeedsHow you run it
openai-whisperThe reference setup, every model sizePython and ffmpegA whisper command, or Python
whisper.cppMacs, and machines with no GPU or no PythonGit, CMake and a C or C++ compilerA whisper-cli binary you build
faster-whisperSpeed on an NVIDIA GPUPython 3.9 or greater, CUDA 12 libraries for the GPUPython only
FrazeLive captions of audio your computer playsApple silicon Mac or Windows 11 PCA desktop app, running a different model

All three are MIT licensed and keep the audio on your machine. They run the same Whisper models: whisper.cpp downloads them converted to its ggml format, faster-whisper converted for CTranslate2. Pick by the hardware you have.

The official package: openai-whisper

The Whisper README says the codebase is expected to be compatible with Python 3.8 to 3.11 and recent PyTorch versions, and that it needs the ffmpeg command line tool. The package's pyproject.toml also lists Python 3.12 and 3.13. Run the ffmpeg line for your system, then the pip line.

The default is the turbo model. The README warns that turbo is not trained for translation, so to turn non-English speech into English text use a multilingual model such as medium or large. whisper --help lists every option.

If pip fails, the README says tiktoken may have no prebuilt wheel for your platform, so install Rust. For No module named 'setuptools_rust', run pip install setuptools-rust.

# ffmpeg first: run only the line for your system
# macOS, Homebrew
brew install ffmpeg
# Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg
# Windows, Chocolatey
choco install ffmpeg

pip install -U openai-whisper

# transcribe one or more files with the turbo model
whisper audio.flac audio.mp3 audio.wav --model turbo

# name the spoken language
whisper japanese.wav --language Japanese

# translate speech into English
whisper japanese.wav --model medium --language Japanese --task translate

No GPU or no Python: whisper.cpp

whisper.cpp is a plain C and C++ implementation with no dependencies, and it supports CPU only inference. Its README lists macOS on Intel and Arm, Linux, Windows, Android, iOS, Raspberry Pi and WebAssembly, and says that on Apple silicon the inference runs fully on the GPU through Metal. Clone it, fetch a model in ggml format, build, run. On Windows the README swaps the sh script for models\download-ggml-model.cmd.

The README says whisper-cli currently runs only with 16 bit WAV files, so convert anything else with ffmpeg first. Its memory table runs from tiny at 75 MiB on disk and about 273 MB in memory to large at 2.9 GiB and about 3.9 GB.

git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp

sh ./models/download-ggml-model.sh base.en

cmake -B build
cmake --build build -j --config Release

./build/bin/whisper-cli -f samples/jfk.wav

# whisper-cli reads 16 bit WAV only, so convert other files first
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

# your own file, naming the model you downloaded
./build/bin/whisper-cli -m models/ggml-base.en.bin -f output.wav

# detailed usage
./build/bin/whisper-cli -h

Speed on an NVIDIA GPU: faster-whisper

faster-whisper rebuilds Whisper on CTranslate2. Its README says it is up to 4 times faster than openai/whisper for the same accuracy while using less memory, and that 8 bit quantization improves that further. It needs Python 3.9 or greater, but no system ffmpeg, because it decodes with PyAV. The README says GPU execution needs two NVIDIA libraries installed: cuBLAS for CUDA 12 and cuDNN 9 for CUDA 12. The README shows Python usage only.

# in a terminal
pip install faster-whisper

# then save the lines below as transcribe.py and run: python transcribe.py
from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="float16")
# or on the CPU: WhisperModel("large-v3", device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", beam_size=5)
for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

Picking a size, and proving it is offline

  • tiny, 39 M parameters, about 1 GB of VRAM, about 10 times the speed of large
  • base, 74 M, about 1 GB, about 7 times
  • small, 244 M, about 2 GB, about 4 times
  • medium, 769 M, about 5 GB, about 2 times
  • large, 1550 M, about 10 GB, the baseline
  • turbo, 809 M, about 6 GB, about 8 times

Those are the Whisper README's numbers. The speeds were measured on an A100 on English speech, and the README warns that real speed varies a lot with language, speaking speed and hardware, so read them as ratios, not promises about your laptop. The four smaller sizes also have English only versions, tiny.en through medium.en, which the README says tend to do better on English, mostly at tiny and base. turbo is an optimized large-v3 with a small accuracy cost.

To check it really is local, run it once with the network on so the weights land on disk, then turn Wi-Fi off and run the same command again. openai-whisper keeps checkpoints in ~/.cache/whisper unless you pass download_root or set XDG_CACHE_HOME. whisper.cpp saves the ggml file in its models folder. faster-whisper saves to the standard Hugging Face cache directory unless you pass download_root. For its offline run, pass local_files_only=True to WhisperModel so it does not try the Hugging Face Hub, or give it the path of a local model directory.

Whisper is for files, live captions are another job

The Whisper README says its transcribe method reads the entire file and processes it with a sliding 30 second window, and the command line takes file names. For captions of a call or a video while it plays you need a streaming setup. whisper.cpp ships one, whisper-stream, which its README calls a naive example of real-time inference on microphone audio. Fraze is built for that job, with a different model: NVIDIA's Parakeet TDT 0.6B v3 through sherpa-onnx with Silero voice activity detection, and Mozilla's Bergamot for translation. On macOS 26 it can use Apple's SpeechAnalyzer.

The trade goes both ways. In the founder's own runs, word error rate in percent, lower is better, Whisper large-v3-turbo scored 1.93 on LibriSpeech clean against Parakeet's 2.15. It also led on all four FLEURS read speech sets both were run on, German, Spanish, French and Russian, 200 clips each: German was 5.33 against 6.21. Parakeet led on Earnings-22 conference calls, 11.20 against 12.35. One caveat from the benchmark's own notes: Whisper was run through WhisperKit's Core ML build, not one of the three routes above, and the Open ASR Leaderboard puts the reference build at 11.07 on Earnings-22, level with Parakeet.

Whisper covers far more languages too. Parakeet v3's card lists 25 European languages, and Whisper's card says its non-English training data represents 98 languages. Parakeet's side of the trade is speed: it ran at about 0.02 times real time on a Mac mini. In Fraze, captions land about half a second to a second after a speaker pauses.

Questions

How do I install Whisper locally?

Install ffmpeg from your package manager, run pip install -U openai-whisper, then run whisper yourfile.mp3 --model turbo. On a machine without Python, build whisper.cpp instead.

Can Whisper run offline?

Yes, after the first download. Each route fetches the weights once and then works with no connection. Turn Wi-Fi off and run the same command again to confirm. With faster-whisper, pass local_files_only=True for that run.

Do I need a GPU to run Whisper locally?

No. whisper.cpp supports CPU only inference and is the usual choice without one, and faster-whisper also runs on the CPU with int8. A GPU mainly buys speed on the larger sizes, and the Whisper README's VRAM column says how much you would need.

Can local Whisper give me live captions?

Not with the standard commands. Whisper processes a file in 30 second windows, so real time use means a streaming layer that feeds it short chunks. whisper.cpp's whisper-stream example does this for the microphone. For captions of what your computer is playing right now, a live tool is simpler.

Try it on your next call.

Download Fraze

macOS 14 or later on Apple silicon. The Windows 11 build is not out yet. Needs a free account.