Packages
Native Elixir bindings for whisper.cpp. Accepts 16 kHz mono f32 PCM and runs on CPU, CUDA, ROCm (hipBLAS), Metal, Vulkan, or CoreML.
Current section
Files
Jump to
Current section
Files
whisper_cpp
CHANGELOG.md
CHANGELOG.md
# Changelog
All notable changes to `whisper_cpp` will be documented in this file. The
format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.2.0] - 2026-05-20
### Added
- `WhisperCpp.load_model/2`: GGML/GGUF model loading with `:cpu`, `:cuda`,
`:hipblas`, `:vulkan`, `:metal`, `:coreml`, `:intel_sycl`, and `:auto`
device selection.
- `WhisperCpp.transcribe/3`: full whisper.cpp transcription on
`{:pcm_f32, binary}` buffers (little-endian f32 mono at 16 kHz) with
segment, token, and optional per-word output.
- `WhisperCpp.transcribe_slice/4`: time-shifted per-slice transcription that
reuses one decoded PCM buffer.
- `WhisperCpp.AbortHandle`: cooperative cancellation. Pass an `%AbortHandle{}`
via `:abort_handle` and call `AbortHandle.abort/1` from another process to
stop in-flight inference; the partial transcription produced before the
abort is returned.
- `:progress_pid` transcribe option: receive `{:whisper_progress, pct}`
messages as work advances; duplicate percentages are coalesced.
- `:word_timestamps` option for per-word timing.
- `WhisperCpp.available_devices/0`: backend introspection for the loaded NIF
artefact.
- `WhisperCpp.Pcm`: PCM slicing helpers. Audio file decoding is intentionally
out of scope; callers decode upstream (ffmpeg, Bumblebee, ...) and share one
decoded PCM buffer across stages.
- Rustler NIF built on `whisper-rs`, with cargo features for `cuda`,
`hipblas`, `vulkan`, `metal`, `coreml`, `intel-sycl`, `openblas`, and
`openmp`. Inference does not serialise across processes sharing one loaded
model.
- Precompiled NIF artefacts via `rustler_precompiled` for x86_64 / aarch64
Linux (CPU, CUDA, hipBLAS variants) and aarch64 macOS (Metal).