Toolkit to benchmark various speech recognition APIs (NeMo, Whisper...) and visualize the results
Jupyter Notebook
4
86 commits
updated Oct 9, 2026
Toolkit to benchmark various speech recognition APIs (NeMo, Whisper...) and visualize the results. Supported models are mostly french. It can compute WER, RTF (or latencies when streaming) and measure hardware usage.
uv run python benchmarker.py CONFIG_FILE [--output_folder DIR] [--input_manifest FILE] [--debug] [--not_compute_rtf] [--not_save_predictions] [--not_save_alignments] [--log_file FILE]
--debug: only 2 files per benchmark.benchmarks list, each entry with a backend and a model. Parameter lists are expanded (grid).output_folder/<model folder>. Already computed folders are skipped (resumption). full_name: True adds the settings to the folder name.wer, cer, wer_nocasepunc, cer_nocasepunc, with a 95% bootstrap confidence interval. Each file's errors are capped at 100%.logs/.The input data file (manifest) is a jsonl file (one json per line). Each line must have these fields:
They can also have:
Examples are provided in the examples folder. There is an audio file, a config file, and a notebook for generating plots.
Install uv then install the package:
# Install core dependencies
uv sync
# Install backend-specific dependencies (as needed)
uv sync --extra whisper
uv sync --extra nemo
uv sync --extra voxtral --extra qwen-asr # transformers 5.x backends can share an env
Available extras:
whisper (faster-whisper), openai-whisper, nemo, transformers, voxtral, qwen-asr, vibevoice, moss, gemma3n, lintovad (auditok / silero VAD)visu (notebooks), tools (scripts of tools/)whisper and nemo are incompatible with each other and with the transformers 5.x extras (moss, voxtral, qwen-asr, vibevoice, gemma3n): use one environment per group (uv sync --all-extras does not work). The vllm backend only talks HTTP to a vllm serve process, vLLM itself being expected in its own environment/container.
pip install -e .
pip install -e ".[whisper]" # for whisper backends
pip install -e ".[nemo]" # for nemo backends
Some tools are available in the tools folder:
site/) from a results folder (and the speed runs of results_rtf for the RTFx column)model_info (license, size, languages) of results metadata.json from the Hugging Face APIThe current available backends:
vllm serveTo add a backend: inherit from asr_benchmark.benchmark.interfaces.Model, implement load, transcribe, get_folder_name, get_metadata, and register it in asr_benchmark.benchmark.backend_to_model.
Built from benchmarks/sota/results (and results_rtf for the RTFx column) by tools/leaderboard/build.py, and published by a GitHub Action (.github/workflows/leaderboard.yml) on each push to main. Local preview: python tools/leaderboard/build.py, then open site/index.html.
For any results folder:
python tools/leaderboard/build.py --results RESULTS_DIR --manifest MANIFEST --output OUT_DIR # -> OUT_DIR/index.html
--rtf_results / --rtf_manifest add the RTFx column and the speed-runs description (optional).
For a new model, fill model_info in its metadata.json with tools/fill_model_info.py, then by hand (architecture, task, streaming, wer_note, rtf_note, prompt_source).
Benchmark of ASR models for the french language used to make the LinTO STT FR Fastconformer Huggingface page. The datasets used in the benchmark are : Common Voice, Multilingual LibriSpeech, Voxpopuli, SUMM-RE, TEDx and YouTube.
See the results here
Toolkit to benchmark various speech recognition APIs (NeMo, Whisper...) and visualize the results
Jupyter Notebook
4
86 commits
updated Oct 9, 2026
Toolkit to benchmark various speech recognition APIs (NeMo, Whisper...) and visualize the results. Supported models are mostly french. It can compute WER, RTF (or latencies when streaming) and measure hardware usage.
uv run python benchmarker.py CONFIG_FILE [--output_folder DIR] [--input_manifest FILE] [--debug] [--not_compute_rtf] [--not_save_predictions] [--not_save_alignments] [--log_file FILE]
--debug: only 2 files per benchmark.benchmarks list, each entry with a backend and a model. Parameter lists are expanded (grid).output_folder/<model folder>. Already computed folders are skipped (resumption). full_name: True adds the settings to the folder name.wer, cer, wer_nocasepunc, cer_nocasepunc, with a 95% bootstrap confidence interval. Each file's errors are capped at 100%.logs/.The input data file (manifest) is a jsonl file (one json per line). Each line must have these fields:
They can also have:
Examples are provided in the examples folder. There is an audio file, a config file, and a notebook for generating plots.
Install uv then install the package:
# Install core dependencies
uv sync
# Install backend-specific dependencies (as needed)
uv sync --extra whisper
uv sync --extra nemo
uv sync --extra voxtral --extra qwen-asr # transformers 5.x backends can share an env
Available extras:
whisper (faster-whisper), openai-whisper, nemo, transformers, voxtral, qwen-asr, vibevoice, moss, gemma3n, lintovad (auditok / silero VAD)visu (notebooks), tools (scripts of tools/)whisper and nemo are incompatible with each other and with the transformers 5.x extras (moss, voxtral, qwen-asr, vibevoice, gemma3n): use one environment per group (uv sync --all-extras does not work). The vllm backend only talks HTTP to a vllm serve process, vLLM itself being expected in its own environment/container.
pip install -e .
pip install -e ".[whisper]" # for whisper backends
pip install -e ".[nemo]" # for nemo backends
Some tools are available in the tools folder:
site/) from a results folder (and the speed runs of results_rtf for the RTFx column)model_info (license, size, languages) of results metadata.json from the Hugging Face APIThe current available backends:
vllm serveTo add a backend: inherit from asr_benchmark.benchmark.interfaces.Model, implement load, transcribe, get_folder_name, get_metadata, and register it in asr_benchmark.benchmark.backend_to_model.
Built from benchmarks/sota/results (and results_rtf for the RTFx column) by tools/leaderboard/build.py, and published by a GitHub Action (.github/workflows/leaderboard.yml) on each push to main. Local preview: python tools/leaderboard/build.py, then open site/index.html.
For any results folder:
python tools/leaderboard/build.py --results RESULTS_DIR --manifest MANIFEST --output OUT_DIR # -> OUT_DIR/index.html
--rtf_results / --rtf_manifest add the RTFx column and the speed-runs description (optional).
For a new model, fill model_info in its metadata.json with tools/fill_model_info.py, then by hand (architecture, task, streaming, wer_note, rtf_note, prompt_source).
Benchmark of ASR models for the french language used to make the LinTO STT FR Fastconformer Huggingface page. The datasets used in the benchmark are : Common Voice, Multilingual LibriSpeech, Voxpopuli, SUMM-RE, TEDx and YouTube.
See the results here