Skip to main content

whispercpp

Pybind11 bindings for whisper.cpp

Quickstart

Install with pip:

pip install whispercpp

To use the latest version, install from source:

pip install git+https://github.com/aarnphm/whispercpp.git

For local setup, initialize all submodules:

git submodule update --init --recursive

Build the wheel:

# Option 1: using pypa/build
python3 -m build -w

# Option 2: using bazel
./tools/bazel build //:whispercpp_wheel

Install the wheel:

# Option 1: via pypa/build
pip install dist/*.whl

# Option 2: using bazel
pip install $(./tools/bazel info bazel-bin)/*.whl

The binding provides a Whisper class:

from whispercpp import Whisper

w = Whisper.from_pretrained("tiny.en")

Currently, the inference API is provided via transcribe:

w.transcribe(np.ones((1, 16000)))

You can use ffmpeg or librosa to load audio files into a Numpy array, then pass it to transcribe:

import ffmpeg
import numpy as np

try:
    y, _ = (
        ffmpeg.input("/path/to/audio.wav", threads=0)
        .output("-", format="s16le", acodec="pcm_s16le", ac=1, ar=sample_rate)
        .run(
            cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True
        )
    )
except ffmpeg.Error as e:
    raise RuntimeError(f"Failed to load audio: {e.stderr.decode()}") from e

arr = np.frombuffer(y, np.int16).flatten().astype(np.float32) / 32768.0

w.transcribe(arr)

The Pybind11 bindings supports all of the features from whisper.cpp.

The binding can also be used via api:

from whispercpp import api

ctx = api.Context.from_file("/path/to/saved_weight.bin")
params = api.Params()

ctx.full(arr, params)

Development

See DEVELOPMENT.md

APIs

Whisper

  1. Whisper.from_pretrained(model_name: str) -> Whisper

    Load a pre-trained model from the local cache or download and cache if needed.

    w = Whisper.from_pretrained("tiny.en")

The model will be saved to $XDG_DATA_HOME/whispercpp or ~/.local/share/whispercpp if the environment variable is not set.

  1. Whisper.transcribe(arr: NDArray[np.float32], num_proc: int = 1)

    Running transcription on a given Numpy array. This calls full from whisper.cpp. If num_proc is greater than 1, it will use full_parallel instead.

    w.transcribe(np.ones((1, 16000)))

api

api is a direct binding from whisper.cpp, that has similar APIs to whisper-rs.

  1. api.Context

    This class is a wrapper around whisper_context

    from whispercpp import api
    
    ctx = api.Context.from_file("/path/to/saved_weight.bin")
  2. api.Params

    This class is a wrapper around whisper_params

    from whispercpp import api
    
    params = api.Params()

Why not?

  • whispercpp.py. There are a few key differences here:

    • They provides the Cython bindings. From the UX standpoint, this achieves the same goal as whispercpp. The difference is whispercpp use Pybind11 instead. Feel free to use it if you prefer Cython over Pybind11. Note that whispercpp.py and whispercpp are mutually exclusive, as they also use the whispercpp namespace.

    • whispercpp doesn’t pollute your $HOME directory, rather it follows the XDG Base Directory Specification for saved weights.

  • Using cdll and ctypes and be done with it?

    • This is also valid, but requires a lot of hacking and it is pretty slow comparing to Cython and Pybind11.

Metadata

Release files for whispercpp 0.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for whispercpp 0.0.17
File Size Uploaded
whispercpp-0.0.17.tar.gz 4.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for whispercpp 0.0.17
File
whispercpp-0.0.17-cp311-cp311-manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
whispercpp-0.0.17-cp310-cp310-manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 15.0 MB

Release files / whispercpp-0.0.17.tar.gz

Download URL whispercpp-0.0.17.tar.gz
Size 4.0 MB
Tags Source
SHA-256 checksum
How to use checksums
174a2c82e0ee7bcc4c21301633df86d7de49395d81d9455a9bedfb0c790813de
BLAKE2b-256 checksum
How to use checksums
2d9b690f807441baa32e5165ddadb31a6716549c71d2f91eb62e74dda394dffd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.8

Release files / whispercpp-0.0.17-cp311-cp311-manylinux2014_x86_64.whl

Download URL whispercpp-0.0.17-cp311-cp311-manylinux2014_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2f1709e0ce7eb7cd61d9b0ae3adfde725325efced0fe08f7aa98eaf4d3d57a7f
BLAKE2b-256 checksum
How to use checksums
d942ad80b416d2be6a500a10de8868855957de266b0906f8da23a37fa35277cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.2

Release files / whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl

Download URL whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
23c766b3d59026874f1e2de53c7003c26c020b1a515bdef6ea70fae5319e1baf
BLAKE2b-256 checksum
How to use checksums
69114aea56130fe2291e727d6a35e28aac27b6c8361dc087b645e162b614ecd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.2

Release files / whispercpp-0.0.17-cp310-cp310-manylinux2014_x86_64.whl

Download URL whispercpp-0.0.17-cp310-cp310-manylinux2014_x86_64.whl
Size 1.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
91c2ceded37a4c0cb19e0f971126c2cd57d307a90cf2099ab5ec272033bcd12c
BLAKE2b-256 checksum
How to use checksums
4996557e160fc49d1c242f9423b614b5f2d1122146adc569cf068360193db5ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.10

Release files / whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl

Download URL whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl
Size 1.3 MB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
70053d9e789e270931ebd1c69a2d17504f87cec29c27187bb92f16af965a9644
BLAKE2b-256 checksum
How to use checksums
c939f5c52bb2c61a7a399e06821da0e71d2c14e924f1efc8503b1cb2e469ab7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.10

Release files / whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl

Download URL whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl
Size 1.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
12b8ce6d3e7ecbd80b677fa8732628030e9e42627205474876ebe768622f2c53
BLAKE2b-256 checksum
How to use checksums
0be569040cca15b1867c75c997e61394a21a995b6299fa464b8f9a36724f9263
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl

Download URL whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl
Size 1.3 MB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
280bfbc83f9e516b172f15680d5e8aa52b2b7607bf2effb1e17a6b0cf1c81f38
BLAKE2b-256 checksum
How to use checksums
8d85f8efb9bbe31ad4121c3c648b98171ed4c32dd7c50180dc1e795d60931e83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl

Download URL whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl
Size 1.4 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6d244421c8124fc75e09def87b8f003b6597007fc76f9892a5ecdec5f32dbd55
BLAKE2b-256 checksum
How to use checksums
3aab51b0c557cc5f84e409a8e05186cd6a843db712513889793651ef34c8320b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release files / whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl

Download URL whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl
Size 1.3 MB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
942266c77c6400f159443d16b73785f1f03d40026d3c821d69e8111de1165d39
BLAKE2b-256 checksum
How to use checksums
5f22fe910a51bd70479a92b0e75bfaf241c38b9f644ea71b004e1b6e6148c88a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release history Release notifications | RSS feed

This release

0.0.17 This release

9 release files

0.0.16

9 release files

0.0.15

9 release files

0.0.14

1 release file

0.0.11

1 release file

0.0.9

1 release file

0.0.8

7 release files

0.0.7

7 release files

0.0.6

7 release files

0.0.5

3 release files

0.0.4

4 release files

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page