A comprehensive testing and benchmarking suite for Whisper speech recognition models, focusing on transcription and diarization performance. This project tests C++ and Python implementations to evaluate Whisper's capabilities across different scenarios.
2
stars
40
commits
C++
primary language
Feb 13, 2026
updated
In the cpp_version directory, I have implemented a C++ version with it's own README.md and a whisper_benchmark.csv file with the results of the transcription and diarization.
In this directory, I have implemented a Python version with this README.md.
Add mp3 files to the data directory and run the container.
# Build the python version
docker compose up --build
# Put your audio file in the data/ directory and run the container
docker compose run --rm whisper-diarize audio.mp3 --model tiny --num-speakers 2
# Or run the cpp version
cd cpp_version
bash ./examples/run_example.sh --file /data/audio.mp3 --model tiny
A containerized solution for automatic speech transcription with speaker diarization using faster-whisper and pyannote.audio.
This is an efficient method to apply Whisper on CPU-based systems, focusing on batch processing. It uses optimization techniques such as quantization and alternative frameworks for improved performance, combined with speaker diarization capabilities.
This Docker container provides an easy-to-use solution for:
Clone this repository:
git clone https://github.com/DonRichards/whisper_testing
cd whisper_testing
Get a Hugging Face API token:
Accept the model license agreements:
Configure your environment:
cp .env.example .envHF_TOKEN=your_token_here
Place your audio files in the data directory:
mkdir -p data
cp path/to/your/audio.mp3 data/
Run the transcription:
# Basic usage (output will be audio.vtt)
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny
# Specify number of speakers
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny --num-speakers 2
# Choose output format
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny --format txt
The output file will automatically use the same name as the input file but with the appropriate extension (e.g., audio.mp3 → audio.vtt)
Available Whisper model sizes:
tiny (fastest, least accurate)basesmallmedium (default)largelarge-v2 (slowest, most accurate)To avoid downloading models every time you run the container, you can pre-download them:
# Create models directory
mkdir -p models
# Download a specific model size
# Options: "tiny", "base", "small", "medium", "large", "large-v2"
python download_whisper_models.py --model tiny
Command line arguments:
--model - Whisper model size (default: medium)--output - Custom output file path (optional)--format - Output format: vtt, srt, or txt (default: vtt)--num-speakers - Number of speakers expected in the audio--language - Language code for transcription--task - Choose between "transcribe" or "translate" (to English)File Not Found Error
Speaker Diarization Not Working
Model Download Issues
To avoid accumulating orphan containers:
# Use --rm flag when running
docker compose run --rm whisper-diarize ...
# Or clean up manually
docker compose down --remove-orphans
docker container prune
VTT (default)
TXT
SRT
The system automatically logs performance metrics to /data/whisper_benchmarks.csv, including:
Expected performance for a 5-minute audio file on a typical CPU:
Note: Performance can vary significantly based on:
The system will provide an estimate of processing time based on:
Approximate processing speeds (on a typical CPU):
Transcription Only:
With Speaker Diarization:
Example:
Note: Actual processing times may vary based on:
This repository contains testing and benchmarking tools for the Whisper speech recognition model, using the C++ implementation from whisper.cpp.
TO DO
25 commits
15 commits
C++
42.3%
Python
34.9%
Shell
14.4%
Jupyter Notebook
5.9%
Dockerfile
1.4%
CMake
1.1%
A comprehensive testing and benchmarking suite for Whisper speech recognition models, focusing on transcription and diarization performance. This project tests C++ and Python implementations to evaluate Whisper's capabilities across different scenarios.
2
stars
40
commits
C++
primary language
Feb 13, 2026
updated
In the cpp_version directory, I have implemented a C++ version with it's own README.md and a whisper_benchmark.csv file with the results of the transcription and diarization.
In this directory, I have implemented a Python version with this README.md.
Add mp3 files to the data directory and run the container.
# Build the python version
docker compose up --build
# Put your audio file in the data/ directory and run the container
docker compose run --rm whisper-diarize audio.mp3 --model tiny --num-speakers 2
# Or run the cpp version
cd cpp_version
bash ./examples/run_example.sh --file /data/audio.mp3 --model tiny
A containerized solution for automatic speech transcription with speaker diarization using faster-whisper and pyannote.audio.
This is an efficient method to apply Whisper on CPU-based systems, focusing on batch processing. It uses optimization techniques such as quantization and alternative frameworks for improved performance, combined with speaker diarization capabilities.
This Docker container provides an easy-to-use solution for:
Clone this repository:
git clone https://github.com/DonRichards/whisper_testing
cd whisper_testing
Get a Hugging Face API token:
Accept the model license agreements:
Configure your environment:
cp .env.example .envHF_TOKEN=your_token_here
Place your audio files in the data directory:
mkdir -p data
cp path/to/your/audio.mp3 data/
Run the transcription:
# Basic usage (output will be audio.vtt)
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny
# Specify number of speakers
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny --num-speakers 2
# Choose output format
docker compose run --rm whisper-diarize /data/audio.mp3 --model tiny --format txt
The output file will automatically use the same name as the input file but with the appropriate extension (e.g., audio.mp3 → audio.vtt)
Available Whisper model sizes:
tiny (fastest, least accurate)basesmallmedium (default)largelarge-v2 (slowest, most accurate)To avoid downloading models every time you run the container, you can pre-download them:
# Create models directory
mkdir -p models
# Download a specific model size
# Options: "tiny", "base", "small", "medium", "large", "large-v2"
python download_whisper_models.py --model tiny
Command line arguments:
--model - Whisper model size (default: medium)--output - Custom output file path (optional)--format - Output format: vtt, srt, or txt (default: vtt)--num-speakers - Number of speakers expected in the audio--language - Language code for transcription--task - Choose between "transcribe" or "translate" (to English)File Not Found Error
Speaker Diarization Not Working
Model Download Issues
To avoid accumulating orphan containers:
# Use --rm flag when running
docker compose run --rm whisper-diarize ...
# Or clean up manually
docker compose down --remove-orphans
docker container prune
VTT (default)
TXT
SRT
The system automatically logs performance metrics to /data/whisper_benchmarks.csv, including:
Expected performance for a 5-minute audio file on a typical CPU:
Note: Performance can vary significantly based on:
The system will provide an estimate of processing time based on:
Approximate processing speeds (on a typical CPU):
Transcription Only:
With Speaker Diarization:
Example:
Note: Actual processing times may vary based on:
This repository contains testing and benchmarking tools for the Whisper speech recognition model, using the C++ implementation from whisper.cpp.
TO DO
25 commits
15 commits
C++
42.3%
Python
34.9%
Shell
14.4%
Jupyter Notebook
5.9%
Dockerfile
1.4%
CMake
1.1%