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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

whispercpp_py-0.0.23-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

whispercpp_py-0.0.23-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

whispercpp_py-0.0.23-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

whispercpp_py-0.0.23-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_py-0.0.23-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 175c6355a0916ccae426075ff1f36ee0bfff111ff3c10b3804e2d1dc3e89722d
MD5 0a3765ccfb3eb3ffe06f351ae6a06c42
BLAKE2b-256 7491b553056bde8edb677ef7d066a42b949647169f73071ed13fe88791ad00fc

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3c97b88d36999d73268741d7dc21a30c81b8e76cb1d8eed438c5708f7bccd870
MD5 9aa0c89da9308e7145e730178aea12e9
BLAKE2b-256 98b0bfca1b12e2ca9700df3811bcead666f4461f7cc65805a8827a63a5925470

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0e8776fbc5881f6d0e3ba4706e5a92a32fe05a3a72ead2c6d920070a46994b8
MD5 f06e3668f78110744cbbc5fb74f3ca2e
BLAKE2b-256 71a29415df160e2952a2b2d1d4bfa3486d1cc73f99b219ce1fef8d021ba7769c

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ecfa2bff8bbc02b33d9882b99448e7825cb044a9aeb88d7603b70a3b26e34ca
MD5 713c6d47c1be6bbf65e8b9845a314392
BLAKE2b-256 d78a024e3b897083bd002821137e94800ee755361769d9ed597c4180cf37b9f0

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31cffc6f69b38579b358609c5c45cc366e478481676090351a43dceff4efa14b
MD5 ebf48bcaabf34a5dec06cb1c5e37053c
BLAKE2b-256 bf688cf4171d069602f111d542d72eaad6d2b5b64ae12008c37507385ae571cc

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cf255f9fb81af5f474fa8e21ae096230c7af9b790773c31281883e3a4c6dc89e
MD5 45963b6a445bf7604aa318f0faeca232
BLAKE2b-256 901ae75df47c8aff2c9cf7ddca5d52263eab2ce97d1bf54919771590b5d379c8

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f84059a9da39a5475e98184c3b3b672585598fc1182176a8b876a06a2a30fa28
MD5 ade32f63ffe04eea8f09ed3608d7c895
BLAKE2b-256 ce526ee2602c6490805c423e68ff3929704e1f8d2021472b5eeccb30f2675e2d

See more details on using hashes here.

File details

Details for the file whispercpp_py-0.0.23-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for whispercpp_py-0.0.23-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e865753313eb24a747f11b39c01b59991d1121a8653f6cdea2d99cfda0910398
MD5 599f06d2903301706f56173288d28e34
BLAKE2b-256 d3d1d703eb6d56a491b9612c95ebbe83a78ed7b8c5f38d99982430d993bbfb6f

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