Skip to main content

No project description provided

Project description

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whispercpp-0.0.17.tar.gz (4.0 MB view details)

Uploaded Source

Built Distributions

whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9

whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8

whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file whispercpp-0.0.17.tar.gz.

File metadata

  • Download URL: whispercpp-0.0.17.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for whispercpp-0.0.17.tar.gz
Algorithm Hash digest
SHA256 174a2c82e0ee7bcc4c21301633df86d7de49395d81d9455a9bedfb0c790813de
MD5 df45cbdaf685de43cd0d77eb4bd8e7d3
BLAKE2b-256 2d9b690f807441baa32e5165ddadb31a6716549c71d2f91eb62e74dda394dffd

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f1709e0ce7eb7cd61d9b0ae3adfde725325efced0fe08f7aa98eaf4d3d57a7f
MD5 df6304a3dd086413fa0c09de84f495f0
BLAKE2b-256 d942ad80b416d2be6a500a10de8868855957de266b0906f8da23a37fa35277cb

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23c766b3d59026874f1e2de53c7003c26c020b1a515bdef6ea70fae5319e1baf
MD5 8d45225f172964da6dcd67821a80a16d
BLAKE2b-256 69114aea56130fe2291e727d6a35e28aac27b6c8361dc087b645e162b614ecd9

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 91c2ceded37a4c0cb19e0f971126c2cd57d307a90cf2099ab5ec272033bcd12c
MD5 be70d77307846e12cbb84246389b94ec
BLAKE2b-256 4996557e160fc49d1c242f9423b614b5f2d1122146adc569cf068360193db5ce

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 70053d9e789e270931ebd1c69a2d17504f87cec29c27187bb92f16af965a9644
MD5 bf549ba8d9fc29909227e8b8dcc84558
BLAKE2b-256 c939f5c52bb2c61a7a399e06821da0e71d2c14e924f1efc8503b1cb2e469ab7a

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 12b8ce6d3e7ecbd80b677fa8732628030e9e42627205474876ebe768622f2c53
MD5 3ff6f47e5df1c70d277115d6b802795e
BLAKE2b-256 0be569040cca15b1867c75c997e61394a21a995b6299fa464b8f9a36724f9263

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 280bfbc83f9e516b172f15680d5e8aa52b2b7607bf2effb1e17a6b0cf1c81f38
MD5 98d69d9757fc5ff42fa2311654fcc5ff
BLAKE2b-256 8d85f8efb9bbe31ad4121c3c648b98171ed4c32dd7c50180dc1e795d60931e83

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d244421c8124fc75e09def87b8f003b6597007fc76f9892a5ecdec5f32dbd55
MD5 e3891f5ab1d35b03ae7edff64384780c
BLAKE2b-256 3aab51b0c557cc5f84e409a8e05186cd6a843db712513889793651ef34c8320b

See more details on using hashes here.

File details

Details for the file whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp-0.0.17-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 942266c77c6400f159443d16b73785f1f03d40026d3c821d69e8111de1165d39
MD5 542bcb164a25858c0a9f91dbc7fb2a2c
BLAKE2b-256 5f22fe910a51bd70479a92b0e75bfaf241c38b9f644ea71b004e1b6e6148c88a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page