Skip to main content

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, bfloat16 and float32. auto resolves to float16.
  • 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: generate is 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_greedy and generate_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 and speed

Every release is checked against the upstream ctranslate2 4.8.1 wheel from PyPI, the one production used, with faster-whisper 1.2.1 and Systran/faster-whisper-large-v3 in float16, the same cuBLAS 12.8.4.1 and a fixed random seed (the temperature fallback samples). The workload is three long-form interviews (5.6 h): every third 30 s window decoded three ways (beam 3 with temperature fallback, beam 3 at temperature 0, greedy), and streaming with LocalAgreement on nine 5-minute segments (the window grows by 0.5 s per round, up to 15 s). Tokens, scores, no-speech probabilities, word timestamps and every streaming round are compared exactly. rapido runs with CT2_CUDA_GRAPHS=1.

RTX 5080 (sm_120) RTX 4090 (sm_89)
differences in 672 windows and 5400 streaming rounds 0 0
30 s windows: upstream → rapido 796 s → 709 s (−11%) 689 s → 609 s (−12%)
streaming with LocalAgreement: upstream → rapido 2134 s → 1798 s (−16%) 1681 s → 1544 s (−8%)

On the RTX 4090 the GPU was shared with other services, so its times are noisier. The release wheel (graphs up to step 128 by default) measured 751 s and 1923 s on the RTX 5080 in a later run.

Live streaming server (wfs2, agent mode, four recorded sessions replayed in real time, RTX 5080), ASR time per call:

p50 p95 ASR calls in the same time
upstream ctranslate2 184 ms 385 ms 3302
rapido 163 ms 316 ms 3797

The faster engine lets LocalAgreement run more, shorter-spaced rounds. The turn texts of the two runs differ by 8.0%, within the noise of real-time replay: two runs of the upstream engine differ by 8.9%, because the rounds land at different moments.

The release checks also cover CUDA graph capture next to onnxruntime CUDA sessions on the same GPU (Silero VAD and SmartTurn run next to Whisper in a streaming server), peak device memory, and the CrisperWhisper decoding APIs (their tokens match the nyrahealth CTranslate2 fork they come from).

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.1

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

Built distributions (wheels)

Table of built distributions (wheels) for CTranslate2-rapid-whisper 0.1.1
File Actions
ctranslate2_rapid_whisper-0.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
ctranslate2_rapid_whisper-0.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
ctranslate2_rapid_whisper-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
ctranslate2_rapid_whisper-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
ctranslate2_rapid_whisper-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
ctranslate2_rapid_whisper-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for ctranslate2_rapid_whisper-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Total release size: 66.0 MB

Release files / ctranslate2_rapid_whisper-0.1.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
d78a0b8377293de6aaccaca42cc6e0490c23747e5e426095f5db8bf3b4fdf348
BLAKE2b-256 checksum
How to use checksums
f5933a2021f576fd671a18f08057480d267b5ba32e713f574bf80e0284a6430d
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 log

Release files / ctranslate2_rapid_whisper-0.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
a43402b6d8f7e3e99130e7a5e25f6bb76c10be7d9f898890e238bffad1f5e7da
BLAKE2b-256 checksum
How to use checksums
78626bda31bf767a0abe0946effff55430a0fa0d734f277ff5d80c2dfda7d907
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 log

Release files / ctranslate2_rapid_whisper-0.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
6f3b15b524f94ba76c29b5772e63ba6f8a5c22d7a14d9c732fa90bed79c8c451
BLAKE2b-256 checksum
How to use checksums
93e332fa9a48ba2759048e0f7fd31cd1a972b82e9e87d5fd1223752f8ed6cead
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 log

Release files / ctranslate2_rapid_whisper-0.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
14fae81d5d95c4620b79f61d5ac4ddc9a774bdd4c2c51853566a4786261803f8
BLAKE2b-256 checksum
How to use checksums
be2cf39d310e6f54eb8fc9a3d921cb75fa7cd49f61504866a9ab66ce113cc1bd
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 log

Release files / ctranslate2_rapid_whisper-0.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
beb8f9789a1383fbe2e962e77e1696bac860caaf88e56db76b49396e38b855a1
BLAKE2b-256 checksum
How to use checksums
05244c2f7ff8c8490dcaa4200c97675dfd24d7707f19fa8935ec6570adfb3116
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 log

Release files / ctranslate2_rapid_whisper-0.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL ctranslate2_rapid_whisper-0.1.1-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
98e2f31c968e2ea867d97ef8df479fdd731f731fc790c3fd01eae6f3db74be04
BLAKE2b-256 checksum
How to use checksums
02d40b14971cc52322178509da62184a0a7e48bc945c4a15a695c9ee4441705e
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 log

Security for CTranslate2-rapid-whisper 0.1.1

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.

Select from 6 files

Attestation for ctranslate2_rapid_whisper-0.1.1-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 log

A 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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

6 release files Full provenance

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