Skip to main content

WhisperS2T-Reborn ⚡

An Optimized Speech-to-Text Pipeline for the Whisper Model Using CTranslate2

WhisperS2T-Reborn is a modernized fork of WhisperS2T, an optimized lightning-fast Speech-to-Text (ASR) pipeline. It is tailored for the Whisper model using the CTranslate2 backend to provide faster transcription. It includes several heuristics to enhance transcription accuracy.

Whisper is a general-purpose speech recognition model developed by OpenAI. It is trained on a large dataset of diverse audio and is also a multitasking model that can perform multilingual speech recognition, speech translation, and language identification.

Installation

pip install -U whisper-s2t-reborn

Quick Start

Transcribe a single file

import whisper_s2t

model = whisper_s2t.load_model(model_identifier="large-v3")

files = ['audio1.wav']
lang_codes = ['en']
tasks = ['transcribe']
initial_prompts = [None]

out = model.transcribe_with_vad(files,
                                lang_codes=lang_codes,
                                tasks=tasks,
                                initial_prompts=initial_prompts,
                                batch_size=32)

print(out[0][0]) # Print first utterance for first file
"""
[Console Output]

{'text': "Let's bring in Phil Mackie who is there at the palace...",
 'avg_logprob': -0.25426941679184695,
 'no_speech_prob': 8.147954940795898e-05,
 'start_time': 0.0,
 'end_time': 24.8}
"""

Batch across multiple files

Passing multiple files allows segments from different files to be batched together, making better use of the GPU:

import whisper_s2t

model = whisper_s2t.load_model(model_identifier="large-v3")

files = ['audio1.wav', 'audio2.wav', 'audio3.wav']
lang_codes = ['en', 'en', 'en']
tasks = ['transcribe', 'transcribe', 'transcribe']
initial_prompts = [None, None, None]

out = model.transcribe_with_vad(files,
                                lang_codes=lang_codes,
                                tasks=tasks,
                                initial_prompts=initial_prompts,
                                batch_size=32)

# out[0] = results for audio1.wav, out[1] = results for audio2.wav, etc.
for file_idx, transcript in enumerate(out):
    print(f"File {files[file_idx]}: {len(transcript)} segments")

Word-level alignment

To enable word-level timestamps, load the model with:

model = whisper_s2t.load_model("large-v3", asr_options={'word_timestamps': True})

Running on CPU

model = whisper_s2t.load_model("large-v3", device="cpu", compute_type="float32")

Pass compute_type="float32" — CTranslate2 does not run float16 on CPU. Smaller models (base, small) are much more practical for CPU inference.

Supported Models

Model Identifier
Tiny tiny / tiny.en
Base base / base.en
Small small / small.en
Medium medium / medium.en
Large V3 large-v3
Large V3 Turbo large-v3-turbo
Distil Small distil-small.en
Distil Medium distil-medium.en
Distil Large V3 distil-large-v3
Distil Large V3.5 distil-large-v3.5

All models are available in float16, float32, and bfloat16 compute types via CTranslate2-4you on Hugging Face.

Benchmarks

Model: distil-large-v3 · FP16 · CUDA · RTX 4090 Engine: whisper-s2t-reborn 1.7.1 · CTranslate2 4.8.1 · torch 2.11.0+cu128 Audio: sam_altman_lex_podcast_367.flac (~2 h 9 min)

Comparing openai-whisper (no batch support) against whisper-s2t-reborn.

Backend Batch Size Time (s) Speedup Inference VRAM (MB)
openai-whisper 1 110.1 1.0× 314
whisper-s2t-reborn 1 65.5 1.7× 393
whisper-s2t-reborn 2 52.6 2.1× 540
whisper-s2t-reborn 4 40.7 2.7× 869
whisper-s2t-reborn 8 35.4 3.1× 1,452
whisper-s2t-reborn 16 32.6 3.4× 2,762
whisper-s2t-reborn 32 31.0 3.6× 5,267
whisper-s2t-reborn 64 30.2 3.6× 10,304

The increased VRAM usage even at batch size 1 is largely due to the VAD model. Openai's implementation doesn't use voice activity detection. The benchmarks folder has the actual scripts used.

Acknowledgements

  • Original WhisperS2T: Thanks to shashig for the original WhisperS2T project that this fork is based on.
  • OpenAI Whisper Team: Thanks to the OpenAI Whisper Team for open-sourcing the Whisper model.
  • CTranslate2 Team: Thanks to the CTranslate2 Team for providing a faster inference engine for Transformers architecture.
  • NVIDIA NeMo Team: Thanks to the NVIDIA NeMo Team for their contribution of the open-source VAD model used in this pipeline.

License

This project is licensed under MIT License - see the LICENSE file for details.

Metadata

Release files for whisper-s2t-reborn 1.7.2

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

Source distribution (sdist)

Source distribution for whisper-s2t-reborn 1.7.2
File Size Uploaded
whisper_s2t_reborn-1.7.2.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for whisper-s2t-reborn 1.7.2
File Interpreter ABI Platform
whisper_s2t_reborn-1.7.2-py3-none-any.whl Python 3 none any Details

Total release size: 2.9 MB

Release files / whisper_s2t_reborn-1.7.2.tar.gz

Download URL whisper_s2t_reborn-1.7.2.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
073d745bb1b66ed8aa0298e098e9f83a09029ce77f449fc9f71406223b9678b2
BLAKE2b-256 checksum
How to use checksums
1e257db88510a5466f374f756dbe7f29d02457a37c2b149bdbfa0e00bfe51ccf
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 Sep 30, 2026.

Transparency log

Release files / whisper_s2t_reborn-1.7.2-py3-none-any.whl

Download URL whisper_s2t_reborn-1.7.2-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
cda496600236f532e0f2298c463c731f943efbed6a5bdf6def2d56ac9c6b3082
BLAKE2b-256 checksum
How to use checksums
bd018b60d53999c9cde096f65b05346f68d2f16d7e6e52243edc18290579f322
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

1.8.0

2 release files

This release

1.7.2 This release

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

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