rapido-whisper
rapido-whisper is a Whisper-only inference engine for NVIDIA GPUs, derived from
CTranslate2 4.8.3 (MIT). It keeps the CTranslate2
Python API for Whisper (import ctranslate2), so faster-whisper
and CrisperWhisper run on it unchanged.
Its rule is bit-identical outputs. Every change keeps tokens, scores, no-speech probabilities and word timestamps equal to the original CTranslate2 on the same GPU and cuBLAS version. Speedups that change floating point rounding are opt-in or left out.
What it contains
- Whisper only: encoder, decoder,
generate,align,detect_language, and the Transformers Whisper converter (ct2-transformers-converter). - CUDA only, native code for Ada (sm_89: RTX 40xx, L4, L40) and Blackwell (sm_120: RTX 50xx).
- Compute types
float16,bfloat16andfloat32.autoresolves tofloat16. - CUDA graphs for decoder steps (
CT2_CUDA_GRAPHS=1). Each step is captured once and replayed in later calls, for example in every window of streaming ASR. The graphs run the same kernels as the regular path. Measured on an RTX 5080 with large-v3:generateis about 20% faster (5.9 → 4.6 ms/token greedy, 719 → 611 ms beam 5 on a 15 s window). - The CrisperWhisper decoding APIs from
nyrahealth/CTranslate2:
prefill,forward_step,forward_batch,*_with_attention,generate_greedy_with_attention,generate_dual_greedyandgenerate_speculative.
Removed from CTranslate2: every model except Whisper (translators, generators, encoders, Wav2Vec2), the CLI, CPU backends (MKL, oneDNN, Ruy, OpenBLAS, Accelerate, OpenMP), AMD HIP, tensor parallelism, FlashAttention, AWQ, int8/int16 quantization, and LLM-only layer features (rotary, ALiBi, RMSNorm, GQA/MQA, sliding windows, T5 relative positions, Gemma norms). A model that needs any of them is rejected at load time with an explicit error.
Build
Requirements: CUDA 12.8+ (sm_120 needs it), CMake ≥ 3.18 and GCC. The release flags below
match the wheels; -DWITH_CUDNN=ON runs the encoder's conv1d through cuDNN instead, which
changes its rounding.
git submodule update --init --recursive
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_CUDA=ON -DWITH_CUDNN=OFF -DCUDA_DYNAMIC_LOADING=ON \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.8 \
"-DCUDA_ARCH_FLAGS_OVERRIDE=-gencode;arch=compute_89,code=sm_89;-gencode;arch=compute_120,code=sm_120;-gencode;arch=compute_120,code=compute_120" \
-DCMAKE_INSTALL_PREFIX=$PWD/../install
make -j$(nproc) install
cd ../python
CTRANSLATE2_ROOT=$PWD/../install pip install --no-build-isolation .
CUDA_ARCH_FLAGS_OVERRIDE passes the -gencode flags directly, because older CMake
FindCUDA cannot parse two-digit architectures such as 12.0. Set LD_LIBRARY_PATH to
install/lib at runtime.
Install
pip install "CTranslate2-rapid-whisper[cuda]"
The wheels are built like the upstream ctranslate2 wheels: without cuDNN and with CUDA
loaded at runtime, so they produce the same outputs as the upstream wheel with the same
cuBLAS. The cuBLAS version decides the exact floating point results; import ctranslate2
loads cuBLAS 12 from, in this order: a libcublas.so.12 in LD_LIBRARY_PATH, the
nvidia-cublas-cu12 wheel (the cuda extra, also pulled by torch's CUDA 12 builds), the
system CUDA. Pin nvidia-cublas-cu12 (e.g. ==12.8.4.1) to get the same results everywhere.
The distribution installs the ctranslate2 module, so it replaces the upstream
ctranslate2 package and cannot be installed next to it. faster-whisper declares a
ctranslate2 dependency; install it with --no-deps, otherwise pip installs the upstream
package over this one:
pip uninstall -y ctranslate2
pip install "CTranslate2-rapid-whisper[cuda]"
pip install --no-deps faster-whisper
pip install "av>=11,<16" tokenizers onnxruntime huggingface_hub tqdm
Versions: ctranslate2.__version__ stays at the API-compatible 4.8.3, and
ctranslate2.rapido_version gives the engine version.
Runtime options
| Variable | Default | Effect |
|---|---|---|
CT2_CUDA_GRAPHS |
0 |
Run decoder steps as CUDA graphs. Outputs are bit-identical. |
CT2_CUDA_GRAPHS_MAX_STEPS |
128 |
Last decoding step run as a graph, and capacity of the persistent self-attention caches. Longer decodes continue on the regular path. |
CT2_CUDA_GRAPHS_MAX_BUFFER_SETS |
2 |
Buffer sets kept, one per decoding shape (batch × beams, encoder output). |
CT2_CUDA_GRAPHS_MEMLOG |
0 |
Log the graphs' device memory (info level, e.g. with CT2_VERBOSE=1). |
CT2_CUDA_GRAPHS_DEVICE_GREEDY |
1 |
Greedy token selection inside the graph (no-timestamp greedy only). |
CT2_CUDA_GRAPHS_QUEUE |
2 |
Greedy steps queued before reading their results. |
CT2_WHISPER_FOLD_PREFIX |
0 |
Forward a text prefix in one pass. Not bit-identical: scores differ in the last fp16 bits. |
Memory: every captured step graph holds ~8 MB of device memory (the launch parameters of its ~1000 kernels), and each decoding shape keeps persistent buffers: the self-attention caches at full capacity (twice, ping-pong) and the cross-attention keys/values. Random sampling (the temperature fallback) and batches that shrink during a call are decoded without graphs. Measured on an RTX 4090 with large-v3 float16, 82 interview windows of 30 s, beam 3 with temperature fallback:
| peak device memory | time | |
|---|---|---|
| upstream ctranslate2 4.8.1 wheel | 5.5 GB | 92 s |
rapido, CT2_CUDA_GRAPHS_MAX_STEPS=128 (default) |
6.7 GB | 83 s |
rapido, CT2_CUDA_GRAPHS_MAX_STEPS=448 |
7.9 GB | 83 s |
rapido, CT2_CUDA_GRAPHS_MAX_STEPS=96 |
6.4 GB | 87 s |
Verification
The equivalence tooling lives outside the library: compare_ct2.py (1340 outputs covering
greedy, beam, n-best, batches, prefixes, timestamps and faster-whisper transcribe with
word timestamps), fork_check.py (long-form interviews and streaming with
LocalAgreement) and stream_la.py. Against CTranslate2 4.8.3, with and without CUDA
graphs, they report 0 differing tokens and 0 differing scores, no-speech probabilities and
word times, and identical streaming rounds.
License
MIT, as CTranslate2. The CrisperWhisper APIs come from nyrahealth/CTranslate2 (MIT). The CrisperWhisper model weights have their own non-commercial license.
Metadata
Release files for CTranslate2-rapid-whisper 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 66.0 MB
Release files / ctranslate2_rapid_whisper-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
41bad66b542baded7c8d0232c9edabb9beb507840b6afb7c4bea1cb310313f96
|
|
BLAKE2b-256 checksum How to use checksums |
57957f642dfd54416d2051b27dd6387dec12950a1d9e91c3cda539106123a8d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / ctranslate2_rapid_whisper-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
94b8af7ea6306f8d47e4e6c6e1b217e48a7fc705af8b1710736124e3764a6445
|
|
BLAKE2b-256 checksum How to use checksums |
c4655b2852d990ff278856dc19e26322a96e2266185754924d6b8d6b0e38fe96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / ctranslate2_rapid_whisper-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ff2bbe2ecc69b8cd078942edf52f1fb680bdf4ed5d0af3cc2b9ff799dfad13b0
|
|
BLAKE2b-256 checksum How to use checksums |
059a41878cb4eedbaad4ed7e8678211e8db720d0077f8ac474ab10b16bfe5669
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / ctranslate2_rapid_whisper-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
124e2ba7a117a39c2c809fa7b1efd119ecc1d44a5cef4282e6c5ff2d4bcec8ac
|
|
BLAKE2b-256 checksum How to use checksums |
8e2c22ac23d5cfa88594e12b59d2d36b0bf1e50ac984679bedd90d3180534080
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / ctranslate2_rapid_whisper-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d368ac3b18cf234b49dc0eef297da28f599481afa5693cac6522d5a98a0f3c40
|
|
BLAKE2b-256 checksum How to use checksums |
f31c04e10da95818165aa95dc5d7040a604e8c0edb4b428e62dd8cdc86cf937f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / ctranslate2_rapid_whisper-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctranslate2_rapid_whisper-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4744efde9acdea2d456bfc8bc50545206861cc30b7c92952a0fc65064ae7094b
|
|
BLAKE2b-256 checksum How to use checksums |
ae53a6c863e990e170e03d4c95206e14695f86c4181386a997483c16c6e2d8da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logSecurity for CTranslate2-rapid-whisper 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for ctranslate2_rapid_whisper-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.