Skip to main content

Python bindings for transcribe.cpp

Project description

transcribe-cpp

Python bindings for transcribe.cpp, a C/C++ speech-to-text library built on ggml.

Status: in development. Until wheels are published, use a locally built libtranscribe through repo auto-discovery or TRANSCRIBE_LIBRARY.

import transcribe_cpp

with transcribe_cpp.Model("model.gguf") as model:
    with model.session() as session:
        result = session.run(pcm_float32_16k_mono)
        print(result.text)

run() takes mono 16 kHz float32 PCM (buffer-protocol object or sequence). It does not decode containers or resample; convert audio before calling it.

import numpy as np

pcm = np.asarray(audio, dtype=np.float32)   # 1-D, 16 kHz mono
# Downmix stereo first; 2-D input is rejected:
# pcm = audio.mean(axis=1).astype(np.float32)
result = session.run(pcm)

Streaming models expose incremental transcription with committed/tentative text views — see examples/stream_wav.py:

with model.session() as session, session.stream() as stream:
    for chunk in pcm_chunks:
        stream.feed(chunk)
        text = stream.text()        # .committed (stable) + .tentative
    stream.finalize()

Long transcriptions can be cancelled from another thread with session.cancel() — the run raises Aborted with the partial transcript on exc.partial_result (same for OutputTruncated).

Backends

Model(backend=...) picks the compute device ("auto" uses the best available). transcribe_cpp.backends() lists registered backends and backend_available(kind) checks one kind.

Variable Effect
TRANSCRIBE_BACKEND overrides the "auto" default; explicit backend= still wins
TRANSCRIBE_NATIVE_PROVIDER forces an installed native provider package, for example cu12
TRANSCRIBE_LIBRARY loads exactly this shared library

Planned wheels will bundle CPU plus platform accelerators; transcribe-cpp[cu12] will add the CUDA 12 provider.

Running from a working tree

The binding loads the native library at import and verifies its ABI layout and version before use. Build a shared library, then run from the repo or point TRANSCRIBE_LIBRARY at it:

cmake -B build-shared -DTRANSCRIBE_BUILD_SHARED=ON
cmake --build build-shared --target transcribe

cd bindings/python
PYTHONPATH=src uv run --no-project python examples/transcribe_wav.py \
    ../../models/whisper-tiny.en/whisper-tiny.en-Q5_K_M.gguf ../../samples/jfk.wav

No-model tests always run; model tests skip unless smoke assets are present. Override paths with TRANSCRIBE_SMOKE_MODEL, TRANSCRIBE_SMOKE_AUDIO, and TRANSCRIBE_SMOKE_STREAMING_MODEL.

cd bindings/python
TRANSCRIBE_LIBRARY=../../build-shared/src/libtranscribe.dylib \
    uv run --extra test pytest

Notes

  • One run/stream at a time per Model in 0.x: sessions share the model's compute backend, so serialize runs across sessions (or load one model per worker). See the Model docstring.
  • Import package: transcribe_cpp
  • Distribution: transcribe-cpp
  • License: MIT

Project details


Download files

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

Source Distribution

transcribe_cpp-0.0.11.tar.gz (87.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transcribe_cpp-0.0.11-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

Details for the file transcribe_cpp-0.0.11.tar.gz.

File metadata

  • Download URL: transcribe_cpp-0.0.11.tar.gz
  • Upload date:
  • Size: 87.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transcribe_cpp-0.0.11.tar.gz
Algorithm Hash digest
SHA256 cf1443ce83fc456bed57f527ce7eb22b18d2b63aa189b20d39cf24ef504564ad
MD5 3c738984cdae26715a67cf0bde056d94
BLAKE2b-256 aad90a919137f0c54fbe5883e0e1414b50118409b067e57d947f6ea61764637e

See more details on using hashes here.

Provenance

The following attestation bundles were made for transcribe_cpp-0.0.11.tar.gz:

Publisher: publish.yml on handy-computer/transcribe.cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transcribe_cpp-0.0.11-py3-none-any.whl.

File metadata

  • Download URL: transcribe_cpp-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 32.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transcribe_cpp-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 5192bf4c0fadc400139928280ddedc91df1362742f36b1236b7245419ec3509e
MD5 abd006b0324402b6f4e8f7d0e6a2be04
BLAKE2b-256 b327e845fe8f882ca14cce453ff3d85b9f614f40c62fc82bc375107fa2d1e360

See more details on using hashes here.

Provenance

The following attestation bundles were made for transcribe_cpp-0.0.11-py3-none-any.whl:

Publisher: publish.yml on handy-computer/transcribe.cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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