From 0c73a73aa390f288a8c4fff12ef879ee1aa122bb Mon Sep 17 00:00:00 2001 From: Quentin Fuxa Date: Sun, 15 Mar 2026 11:16:15 +0100 Subject: [PATCH] update benchmark results and procedure --- BENCHMARK.md | 205 ----- README.md | 19 +- ...00_00_07_english_1_speaker.transcript.json | 97 --- .../00_00_16_french_1_speaker.transcript.json | 177 ---- ...0_00_30_english_3_speakers.transcript.json | 382 --------- audio_tests/generate_transcripts.py | 58 -- benchmark_chart.png | Bin 70338 -> 0 bytes benchmark_scatter.png | Bin 97315 -> 0 bytes benchmark_scatter_en_aware.png | Bin 0 -> 91066 bytes benchmark_scatter_en_unaware.png | Bin 0 -> 95927 bytes benchmark_scatter_fr_aware.png | Bin 0 -> 94407 bytes benchmark_scatter_fr_unaware.png | Bin 0 -> 92947 bytes pyproject.toml | 3 +- run_benchmark.py | 290 ------- scripts/create_long_samples.py | 137 +++ scripts/generate_architecture.py | 15 +- scripts/run_scatter_benchmark.py | 430 ++++++++++ test_backend_offline.py | 804 ------------------ whisperlivekit/benchmark/__init__.py | 34 + whisperlivekit/benchmark/compat.py | 105 +++ whisperlivekit/benchmark/datasets.py | 561 ++++++++++++ whisperlivekit/benchmark/metrics.py | 273 ++++++ whisperlivekit/benchmark/report.py | 161 ++++ whisperlivekit/benchmark/runner.py | 181 ++++ whisperlivekit/cli.py | 191 ++--- 25 files changed, 1967 insertions(+), 2156 deletions(-) delete mode 100644 BENCHMARK.md delete mode 100644 audio_tests/00_00_07_english_1_speaker.transcript.json delete mode 100644 audio_tests/00_00_16_french_1_speaker.transcript.json delete mode 100644 audio_tests/00_00_30_english_3_speakers.transcript.json delete mode 100644 audio_tests/generate_transcripts.py delete mode 100644 benchmark_chart.png delete mode 100644 benchmark_scatter.png create mode 100644 benchmark_scatter_en_aware.png create mode 100644 benchmark_scatter_en_unaware.png create mode 100644 benchmark_scatter_fr_aware.png create mode 100644 benchmark_scatter_fr_unaware.png delete mode 100644 run_benchmark.py create mode 100644 scripts/create_long_samples.py create mode 100644 scripts/run_scatter_benchmark.py delete mode 100644 test_backend_offline.py create mode 100644 whisperlivekit/benchmark/__init__.py create mode 100644 whisperlivekit/benchmark/compat.py create mode 100644 whisperlivekit/benchmark/datasets.py create mode 100644 whisperlivekit/benchmark/metrics.py create mode 100644 whisperlivekit/benchmark/report.py create mode 100644 whisperlivekit/benchmark/runner.py diff --git a/BENCHMARK.md b/BENCHMARK.md deleted file mode 100644 index 81239f0..0000000 --- a/BENCHMARK.md +++ /dev/null @@ -1,205 +0,0 @@ -# WhisperLiveKit Benchmark Report - -Benchmark comparing all supported ASR backends, streaming policies, and model sizes on Apple Silicon. -All tests run through the full AudioProcessor pipeline (same code path as production WebSocket). - -## Test Environment - -| Property | Value | -|----------|-------| -| Hardware | Apple M4, 32 GB RAM | -| OS | macOS 25.3.0 (arm64) | -| Python | 3.13 | -| faster-whisper | 1.2.1 | -| mlx-whisper | installed (via mlx) | -| Voxtral MLX | native MLX backend | -| Voxtral (HF) | transformers-based | -| VAC (Silero VAD) | enabled unless noted | -| Chunk size | 100 ms | -| Pacing | no-realtime (as fast as possible) | - -## Audio Test Files - -| File | Duration | Language | Speakers | Description | -|------|----------|----------|----------|-------------| -| `00_00_07_english_1_speaker.wav` | 7.2 s | English | 1 | Short dictation with pauses | -| `00_00_16_french_1_speaker.wav` | 16.3 s | French | 1 | French speech with intentional silence gaps | -| `00_00_30_english_3_speakers.wav` | 30.0 s | English | 3 | Multi-speaker conversation | - -Ground truth transcripts (`.transcript.json`) with per-word timestamps are hand-verified. - ---- - -## Results - -### English -- Short (7.2 s, 1 speaker) - -| Backend | Policy | Model | RTF | WER | Timestamp MAE | -|---------|--------|-------|-----|-----|---------------| -| faster-whisper | LocalAgreement | base | 0.20x | 21.1% | 0.080 s | -| faster-whisper | SimulStreaming | base | 0.14x | 0.0% | 0.239 s | -| faster-whisper | LocalAgreement | small | 0.59x | 21.1% | 0.089 s | -| faster-whisper | SimulStreaming | small | 0.39x | 0.0% | 0.221 s | -| mlx-whisper | LocalAgreement | base | 0.05x | 21.1% | 0.080 s | -| mlx-whisper | SimulStreaming | base | 0.14x | 10.5% | 0.245 s | -| mlx-whisper | LocalAgreement | small | 0.16x | 21.1% | 0.089 s | -| mlx-whisper | SimulStreaming | small | 0.20x | 10.5% | 0.226 s | -| voxtral-mlx | voxtral | 4B | 0.32x | 0.0% | 0.254 s | -| voxtral (HF) | voxtral | 4B | 1.29x | 0.0% | 1.876 s | - -### English -- Multi-speaker (30.0 s, 3 speakers) - -| Backend | Policy | Model | RTF | WER | Timestamp MAE | -|---------|--------|-------|-----|-----|---------------| -| faster-whisper | LocalAgreement | base | 0.24x | 44.7% | 0.235 s | -| faster-whisper | SimulStreaming | base | 0.10x | 5.3% | 0.398 s | -| faster-whisper | LocalAgreement | small | 0.59x | 25.0% | 0.226 s | -| faster-whisper | SimulStreaming | small | 0.26x | 5.3% | 0.387 s | -| mlx-whisper | LocalAgreement | base | 0.06x | 23.7% | 0.237 s | -| mlx-whisper | SimulStreaming | base | 0.11x | 5.3% | 0.395 s | -| mlx-whisper | LocalAgreement | small | 0.13x | 25.0% | 0.226 s | -| mlx-whisper | SimulStreaming | small | 0.20x | 5.3% | 0.394 s | -| voxtral-mlx | voxtral | 4B | 0.31x | 9.2% | 0.176 s | -| voxtral (HF) | voxtral | 4B | 1.00x | 32.9% | 1.034 s | - -

-Benchmark comparison on 30s English -

- -

-Speed vs Accuracy tradeoff -

- -### French (16.3 s, 1 speaker, `--language fr`) - -| Backend | Policy | Model | RTF | WER | Timestamp MAE | -|---------|--------|-------|-----|-----|---------------| -| faster-whisper | LocalAgreement | base | 0.22x | 25.7% | 3.460 s | -| faster-whisper | SimulStreaming | base | 0.10x | 31.4% | 3.660 s | -| faster-whisper | LocalAgreement | small | 0.76x | 42.9% | 0.051 s | -| faster-whisper | SimulStreaming | small | 0.29x | 25.7% | 0.219 s | -| mlx-whisper | LocalAgreement | base | 0.09x | ~45%* | ~5.0 s* | -| mlx-whisper | SimulStreaming | base | 0.09x | 40.0% | 3.540 s | -| mlx-whisper | LocalAgreement | small | 0.14x | 25.7% | 0.083 s | -| mlx-whisper | SimulStreaming | small | 0.17x | 31.4% | 0.203 s | -| voxtral-mlx | voxtral | 4B | 0.18x | 37.1% | 3.422 s | -| voxtral (HF) | voxtral | 4B | 0.63x | 28.6% | 4.040 s | - -\* mlx-whisper + LocalAgreement + base is unstable on this French file (WER fluctuates 34-1037% across runs due to hallucination loops). The `small` model does not have this problem. - -**Timestamp note:** The base model produces very high timestamp MAE (3.4-3.7s) on this French file because it misaligns words around the silence gaps. The small model handles this much better (0.05-0.22s MAE). Voxtral also drifts on the silence gaps. - ---- - -## Model Size Comparison (base vs small) - -| | base | small | Observation | -|--|------|-------|-------------| -| **RTF** | 0.05-0.24x | 0.13-0.76x | small is 2-3x slower | -| **English WER (SS)** | 0-5.3% | 0-5.3% | No improvement: SimulStreaming already saturates on base | -| **English WER (LA)** | 21-44.7% | 21-25% | small reduces LA errors on longer audio | -| **French WER** | 25-40% | 25-43% | Mixed: depends on backend/policy combo | -| **French timestamps** | 3.4-5.0s MAE | 0.05-0.22s MAE | small is dramatically better for French timestamps | - -In short: **base + SimulStreaming** gives the best speed/accuracy tradeoff for English. The small model only helps if you need LocalAgreement (for subtitle-grade timestamps) or non-English languages. - ---- - -## Key Findings - -### Speed (RTF = processing time / audio duration, lower is better) - -1. **mlx-whisper + LocalAgreement + base** is the fastest combo on Apple Silicon: 0.05-0.06x RTF on English. 30 seconds of audio in under 2 seconds. -2. For **faster-whisper**, SimulStreaming is faster than LocalAgreement. For **mlx-whisper**, it is the opposite: LocalAgreement (0.05-0.06x) outperforms SimulStreaming (0.11-0.14x) on speed. -3. **voxtral-mlx** runs at 0.18-0.32x RTF -- 3-5x slower than mlx-whisper base, but well within real-time. -4. **voxtral (HF transformers)** hits 1.0-1.3x RTF. At the real-time boundary on Apple Silicon. Use the MLX variant instead. -5. The **small** model is 2-3x slower than base across all backends. - -### Accuracy (WER = Word Error Rate, lower is better) - -1. **SimulStreaming** gives dramatically lower WER than LocalAgreement on the whisper backends. On the 30s English file: 5.3% vs 23-44%. -2. **voxtral-mlx** hits 0% on short English and 9.2% on multi-speaker. It auto-detects language natively. Whisper also supports `--language auto`, but tends to bias towards English on short segments. -3. **LocalAgreement** tends to repeat the last sentence at end-of-stream (a known LCP artifact), inflating WER. This is visible in the 21% WER on the 7s file -- the same 4 extra words appear in every LA run. -4. On **French** with the correct `--language fr`, whisper base achieves 25-40% WER -- comparable to Voxtral's 28-37%. The small model does not consistently improve French WER. - -### Timestamps (MAE = Mean Absolute Error on word start times) - -1. **LocalAgreement** gives the best timestamps on English (0.08-0.09s MAE). -2. **SimulStreaming** is less precise (0.22-0.40s MAE) but good enough for most applications. -3. On French with silence gaps, **base model timestamps are unreliable** (3.4-5s MAE). The **small model fixes this** (0.05-0.22s MAE). This is the strongest argument for using `small` over `base`. -4. **voxtral-mlx** has good timestamps on English (0.18-0.25s MAE) but drifts on audio with long silence gaps (3.4s MAE on the French file). - -### VAC (Voice Activity Classification) Impact - -| Backend | Policy | VAC | 7s English WER | 30s English WER | -|---------|--------|-----|----------------|-----------------| -| faster-whisper | LocalAgreement | on | 21.1% | 44.7% | -| faster-whisper | LocalAgreement | off | 100.0% | 100.0% | -| voxtral-mlx | voxtral | on | 0.0% | 9.2% | -| voxtral-mlx | voxtral | off | 0.0% | 9.2% | - -- **Whisper backends need VAC** to work in streaming mode. Without it the buffer logic breaks down and you get empty or garbage output. -- **Voxtral is unaffected by VAC** since it handles its own internal chunking. Identical results with or without. VAC still saves compute on silent segments. - ---- - -## Recommendations - -| Use Case | Backend | Policy | Model | Notes | -|----------|---------|--------|-------|-------| -| Fastest English (Apple Silicon) | mlx-whisper | SimulStreaming | base | 0.11x RTF, 5.3% WER | -| Fastest English (Linux/GPU) | faster-whisper | SimulStreaming | base | 0.10x RTF, 5.3% WER | -| Best accuracy, English | faster-whisper | SimulStreaming | small | 0.26x RTF, 5.3% WER, still fast | -| Multilingual / auto-detect | voxtral-mlx | voxtral | 4B | 100+ languages, 0.18-0.32x RTF | -| Best timestamps | any | LocalAgreement | small | 0.05-0.09s MAE, good for subtitles | -| Low memory / embedded | mlx-whisper | SimulStreaming | base | Smallest footprint, fastest response | - ---- - -## Caveats - -- **3 test files, ~53 seconds total.** Results give relative rankings between backends but should not be taken as definitive WER numbers. Run on your own data for production decisions. -- **RTF varies between runs** (up to +/-30%) depending on thermal state, background processes, and model caching. The numbers above are single sequential runs on a warm machine. -- **Only base and small tested.** Medium and large-v3 would likely improve WER at the cost of higher RTF. We did not test them here because they are slow on Apple Silicon without GPU. - ---- - -## Reproducing These Benchmarks - -```bash -# Install test dependencies -pip install -e ".[test]" - -# Single backend test -python test_backend_offline.py --backend faster-whisper --policy simulstreaming --model base --no-realtime - -# With a specific language -python test_backend_offline.py --backend mlx-whisper --policy simulstreaming --model small --lan fr --no-realtime - -# Multi-backend auto-detect benchmark -python test_backend_offline.py --benchmark --no-realtime - -# Export to JSON -python test_backend_offline.py --benchmark --no-realtime --json results.json - -# Test with your own audio -python test_backend_offline.py --backend voxtral-mlx --audio your_file.wav --no-realtime -``` - -The benchmark harness computes WER and timestamp accuracy automatically when ground truth -`.transcript.json` files exist alongside the audio files. See `audio_tests/` for the format. - ---- - -## Help Us Benchmark on More Hardware - -These results are from a single Apple M4 machine. We'd love to see numbers from other setups: Linux with CUDA GPUs, older Macs, different CPU architectures, cloud instances, etc. - -If you run the benchmark on your hardware, please open an issue or PR with your results and we will add them here. The more data points we have, the better the recommendations get. - -What we are especially interested in: -- **NVIDIA GPUs** (RTX 3090, 4090, A100, T4, etc.) with faster-whisper -- **Older Apple Silicon** (M1, M2, M3) with mlx-whisper and voxtral-mlx -- **Medium and large-v3 models** (we only tested base and small so far) -- **Longer audio files** or domain-specific audio (medical, legal, call center) -- **Other languages** beyond English and French diff --git a/README.md b/README.md index 1d04f68..4f9c17c 100644 --- a/README.md +++ b/README.md @@ -134,10 +134,13 @@ uv sync --extra cu129 --extra voxtral-hf --extra translation See **Parameters & Configuration** below on how to use them.

-Speed vs Accuracy tradeoff +Speed vs Accuracy — English, compute-unaware +

+

+Speed vs Accuracy — English, compute-aware

-See **[BENCHMARK.md](BENCHMARK.md)** for the full benchmark with tables, model size comparison, and more. +Benchmarks use public audio from [LibriSpeech](https://huggingface.co/datasets/openslr/librispeech_asr) and [Multilingual LibriSpeech](https://huggingface.co/datasets/facebook/multilingual_librispeech) — fully reproducible with `python scripts/run_scatter_benchmark.py`. We are actively looking for benchmark results on other hardware (NVIDIA GPUs, different Apple Silicon chips, cloud instances). If you run the benchmarks on your machine, please share your results via an issue or PR! @@ -371,7 +374,7 @@ docker compose up --build wlk-cpu # Quick benchmark with the CLI wlk bench wlk bench --backend faster-whisper --model large-v3 -wlk bench --json results.json +wlk bench --languages all --json results.json # Install test dependencies for full suite pip install -e ".[test]" @@ -379,13 +382,11 @@ pip install -e ".[test]" # Run unit tests (no model download required) pytest tests/ -v -# Detailed multi-backend benchmark -python test_backend_offline.py --benchmark --no-realtime -python test_backend_offline.py --benchmark --no-realtime --json results.json +# Speed vs Accuracy scatter plot (all backends, compute-aware + unaware) +python scripts/create_long_samples.py # generate ~90s test samples (cached) +python scripts/run_scatter_benchmark.py # English (both modes) +python scripts/run_scatter_benchmark.py --lang fr # French ``` -See [BENCHMARK.md](BENCHMARK.md) for a full comparison of backends, policies, WER, speed, and -timestamp accuracy on Apple Silicon. - ## Use Cases Capture discussions in real-time for meeting transcription, help hearing-impaired users follow conversations through accessibility tools, transcribe podcasts or videos automatically for content creation, transcribe support calls with speaker identification for customer service... diff --git a/audio_tests/00_00_07_english_1_speaker.transcript.json b/audio_tests/00_00_07_english_1_speaker.transcript.json deleted file mode 100644 index 43ca785..0000000 --- a/audio_tests/00_00_07_english_1_speaker.transcript.json +++ /dev/null @@ -1,97 +0,0 @@ -[ - { - "word": "This", - "start": 0.0, - "end": 0.24 - }, - { - "word": "is", - "start": 0.24, - "end": 0.56 - }, - { - "word": "a", - "start": 0.56, - "end": 0.76 - }, - { - "word": "transcription", - "start": 0.76, - "end": 1.32 - }, - { - "word": "test.", - "start": 1.32, - "end": 2.0 - }, - { - "word": "We", - "start": 2.4, - "end": 2.5 - }, - { - "word": "want", - "start": 2.5, - "end": 2.66 - }, - { - "word": "to", - "start": 2.66, - "end": 2.84 - }, - { - "word": "see", - "start": 2.84, - "end": 3.1 - }, - { - "word": "if", - "start": 3.1, - "end": 3.34 - }, - { - "word": "we", - "start": 3.34, - "end": 3.5 - }, - { - "word": "can", - "start": 3.5, - "end": 3.68 - }, - { - "word": "use", - "start": 3.68, - "end": 4.04 - }, - { - "word": "smaller", - "start": 4.04, - "end": 4.76 - }, - { - "word": "chunks.", - "start": 4.76, - "end": 5.16 - }, - { - "word": "What", - "start": 6.06, - "end": 6.32 - }, - { - "word": "do", - "start": 6.32, - "end": 6.44 - }, - { - "word": "you", - "start": 6.44, - "end": 6.58 - }, - { - "word": "think?", - "start": 6.58, - "end": 6.84 - } -] \ No newline at end of file diff --git a/audio_tests/00_00_16_french_1_speaker.transcript.json b/audio_tests/00_00_16_french_1_speaker.transcript.json deleted file mode 100644 index 07c0b31..0000000 --- a/audio_tests/00_00_16_french_1_speaker.transcript.json +++ /dev/null @@ -1,177 +0,0 @@ -[ - { - "word": "Ok,", - "start": 2.02, - "end": 2.38 - }, - { - "word": "là", - "start": 2.52, - "end": 2.58 - }, - { - "word": "c", - "start": 2.58, - "end": 2.74 - }, - { - "word": "'est", - "start": 2.74, - "end": 2.76 - }, - { - "word": "un", - "start": 2.76, - "end": 2.86 - }, - { - "word": "test,", - "start": 2.86, - "end": 3.2 - }, - { - "word": "on", - "start": 3.34, - "end": 3.34 - }, - { - "word": "veut", - "start": 3.34, - "end": 3.48 - }, - { - "word": "voir", - "start": 3.48, - "end": 3.86 - }, - { - "word": "si", - "start": 3.86, - "end": 4.14 - }, - { - "word": "ça", - "start": 4.14, - "end": 4.26 - }, - { - "word": "arrive", - "start": 4.26, - "end": 4.36 - }, - { - "word": "à", - "start": 4.36, - "end": 4.5 - }, - { - "word": "capté", - "start": 4.5, - "end": 4.78 - }, - { - "word": "le", - "start": 4.78, - "end": 4.9 - }, - { - "word": "silence.", - "start": 4.9, - "end": 5.44 - }, - { - "word": "Là", - "start": 9.24, - "end": 9.6 - }, - { - "word": "il", - "start": 9.6, - "end": 9.78 - }, - { - "word": "est", - "start": 9.78, - "end": 9.84 - }, - { - "word": "une", - "start": 9.84, - "end": 9.96 - }, - { - "word": "telle", - "start": 9.96, - "end": 10.12 - }, - { - "word": "seconde", - "start": 10.12, - "end": 10.38 - }, - { - "word": "de", - "start": 10.38, - "end": 10.48 - }, - { - "word": "silence", - "start": 10.48, - "end": 10.78 - }, - { - "word": "et", - "start": 10.78, - "end": 11.06 - }, - { - "word": "je", - "start": 11.06, - "end": 11.16 - }, - { - "word": "vous", - "start": 11.16, - "end": 11.32 - }, - { - "word": "parle.", - "start": 11.32, - "end": 11.68 - }, - { - "word": "Et", - "start": 13.28, - "end": 13.64 - }, - { - "word": "voilà,", - "start": 13.64, - "end": 13.96 - }, - { - "word": "allez", - "start": 14.36, - "end": 14.62 - }, - { - "word": "on", - "start": 14.62, - "end": 14.78 - }, - { - "word": "va", - "start": 14.78, - "end": 14.88 - }, - { - "word": "tester", - "start": 14.88, - "end": 15.06 - }, - { - "word": "ça.", - "start": 15.06, - "end": 15.36 - } -] \ No newline at end of file diff --git a/audio_tests/00_00_30_english_3_speakers.transcript.json b/audio_tests/00_00_30_english_3_speakers.transcript.json deleted file mode 100644 index bb9d097..0000000 --- a/audio_tests/00_00_30_english_3_speakers.transcript.json +++ /dev/null @@ -1,382 +0,0 @@ -[ - { - "word": "Transcription", - "start": 0.0, - "end": 0.6 - }, - { - "word": "technology", - "start": 0.6, - "end": 1.24 - }, - { - "word": "has", - "start": 1.24, - "end": 1.5 - }, - { - "word": "improved", - "start": 1.5, - "end": 1.96 - }, - { - "word": "so", - "start": 1.96, - "end": 2.32 - }, - { - "word": "much", - "start": 2.32, - "end": 2.68 - }, - { - "word": "in", - "start": 2.68, - "end": 2.94 - }, - { - "word": "the", - "start": 2.94, - "end": 3.02 - }, - { - "word": "past", - "start": 3.02, - "end": 3.24 - }, - { - "word": "few", - "start": 3.24, - "end": 3.5 - }, - { - "word": "years.", - "start": 3.5, - "end": 3.96 - }, - { - "word": "Have", - "start": 4.56, - "end": 4.74 - }, - { - "word": "you", - "start": 4.74, - "end": 4.9 - }, - { - "word": "noticed", - "start": 4.9, - "end": 5.26 - }, - { - "word": "how", - "start": 5.26, - "end": 5.52 - }, - { - "word": "accurate", - "start": 5.52, - "end": 6.08 - }, - { - "word": "real", - "start": 6.08, - "end": 6.42 - }, - { - "word": "-time", - "start": 6.42, - "end": 6.74 - }, - { - "word": "speech", - "start": 6.74, - "end": 7.24 - }, - { - "word": "to", - "start": 7.24, - "end": 7.46 - }, - { - "word": "text", - "start": 7.46, - "end": 7.78 - }, - { - "word": "is", - "start": 7.78, - "end": 8.0 - }, - { - "word": "now?", - "start": 8.0, - "end": 8.3 - }, - { - "word": "Absolutely.", - "start": 8.7, - "end": 9.16 - }, - { - "word": "I", - "start": 10.04, - "end": 10.38 - }, - { - "word": "use", - "start": 10.38, - "end": 10.56 - }, - { - "word": "it", - "start": 10.56, - "end": 10.76 - }, - { - "word": "all", - "start": 10.76, - "end": 10.9 - }, - { - "word": "the", - "start": 10.9, - "end": 11.04 - }, - { - "word": "time", - "start": 11.04, - "end": 11.32 - }, - { - "word": "for", - "start": 11.32, - "end": 11.54 - }, - { - "word": "taking", - "start": 11.54, - "end": 11.86 - }, - { - "word": "notes", - "start": 11.86, - "end": 12.16 - }, - { - "word": "during", - "start": 12.16, - "end": 12.54 - }, - { - "word": "meetings.", - "start": 12.54, - "end": 12.94 - }, - { - "word": "It's", - "start": 13.6, - "end": 13.8 - }, - { - "word": "amazing", - "start": 13.8, - "end": 14.1 - }, - { - "word": "how", - "start": 14.1, - "end": 14.48 - }, - { - "word": "it", - "start": 14.48, - "end": 14.62 - }, - { - "word": "can", - "start": 14.62, - "end": 14.74 - }, - { - "word": "recognise", - "start": 14.74, - "end": 15.24 - }, - { - "word": "different", - "start": 15.24, - "end": 15.68 - }, - { - "word": "speakers", - "start": 15.68, - "end": 16.16 - }, - { - "word": "and", - "start": 16.16, - "end": 16.8 - }, - { - "word": "even", - "start": 16.8, - "end": 17.1 - }, - { - "word": "add", - "start": 17.1, - "end": 17.44 - }, - { - "word": "punctuation.", - "start": 17.44, - "end": 18.36 - }, - { - "word": "Yeah,", - "start": 18.88, - "end": 19.16 - }, - { - "word": "but", - "start": 19.36, - "end": 19.52 - }, - { - "word": "sometimes", - "start": 19.52, - "end": 20.16 - }, - { - "word": "noise", - "start": 20.16, - "end": 20.54 - }, - { - "word": "can", - "start": 20.54, - "end": 20.8 - }, - { - "word": "still", - "start": 20.8, - "end": 21.1 - }, - { - "word": "cause", - "start": 21.1, - "end": 21.44 - }, - { - "word": "mistakes.", - "start": 21.44, - "end": 21.94 - }, - { - "word": "Does", - "start": 22.68, - "end": 22.9 - }, - { - "word": "this", - "start": 22.9, - "end": 23.12 - }, - { - "word": "system", - "start": 23.12, - "end": 23.46 - }, - { - "word": "handle", - "start": 23.46, - "end": 23.88 - }, - { - "word": "that", - "start": 23.88, - "end": 24.12 - }, - { - "word": "well?", - "start": 24.12, - "end": 24.42 - }, - { - "word": "It", - "start": 24.42, - "end": 25.32 - }, - { - "word": "does", - "start": 25.32, - "end": 25.48 - }, - { - "word": "a", - "start": 25.48, - "end": 25.62 - }, - { - "word": "pretty", - "start": 25.62, - "end": 25.88 - }, - { - "word": "good", - "start": 25.88, - "end": 26.08 - }, - { - "word": "job", - "start": 26.08, - "end": 26.32 - }, - { - "word": "filtering", - "start": 26.32, - "end": 26.8 - }, - { - "word": "noise,", - "start": 26.8, - "end": 27.18 - }, - { - "word": "especially", - "start": 27.36, - "end": 28.0 - }, - { - "word": "with", - "start": 28.0, - "end": 28.28 - }, - { - "word": "models", - "start": 28.28, - "end": 28.62 - }, - { - "word": "that", - "start": 28.62, - "end": 28.94 - }, - { - "word": "use", - "start": 28.94, - "end": 29.22 - }, - { - "word": "voice", - "start": 29.22, - "end": 29.54 - }, - { - "word": "active.", - "start": 29.54, - "end": 29.9 - } -] \ No newline at end of file diff --git a/audio_tests/generate_transcripts.py b/audio_tests/generate_transcripts.py deleted file mode 100644 index 6749a5c..0000000 --- a/audio_tests/generate_transcripts.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 -"""Generate word-level timestamped transcripts using faster-whisper (offline). - -Produces one JSON file per audio with: [{word, start, end}, ...] -""" - -import json -import os - -from faster_whisper import WhisperModel - -AUDIO_DIR = os.path.dirname(os.path.abspath(__file__)) - -FILES = [ - ("00_00_07_english_1_speaker.wav", "en"), - ("00_00_16_french_1_speaker.wav", "fr"), - ("00_00_30_english_3_speakers.wav", "en"), -] - -def main(): - print("Loading faster-whisper model (base, cpu, float32)...") - model = WhisperModel("base", device="cpu", compute_type="float32") - - for filename, lang in FILES: - audio_path = os.path.join(AUDIO_DIR, filename) - out_path = os.path.join( - AUDIO_DIR, filename.rsplit(".", 1)[0] + ".transcript.json" - ) - - print(f"\n{'='*60}") - print(f"Transcribing: {filename} (language={lang})") - print(f"{'='*60}") - - segments, info = model.transcribe( - audio_path, word_timestamps=True, language=lang - ) - - words = [] - for segment in segments: - if segment.words: - for w in segment.words: - words.append({ - "word": w.word.strip(), - "start": round(w.start, 3), - "end": round(w.end, 3), - }) - print(f" {w.start:6.2f} - {w.end:6.2f} {w.word.strip()}") - - with open(out_path, "w", encoding="utf-8") as f: - json.dump(words, f, indent=2, ensure_ascii=False) - - print(f"\n -> {len(words)} words written to {os.path.basename(out_path)}") - - print("\nDone.") - - -if __name__ == "__main__": - main() diff --git a/benchmark_chart.png b/benchmark_chart.png deleted file mode 100644 index 20123bd15001786bf4b184d9a9d44bfe4ff1f8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70338 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 wB_2Lv?%X)}yZf1HTxn1ONa4 diff --git a/benchmark_scatter.png b/benchmark_scatter.png deleted file mode 100644 index 9f62bf385c516b547d382a4e97c984233af3b165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97315 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

0YqNNF!in4cRi=Ob!2;WC}wvHC*Bo4 z{qU3}>%#h1V7KzkUEkwVy=CQOoioe)!Vi$#{FNXAMClC;xeB(7n~CW%C=+6l+jo;* zz*<5VV&WgXqntFCE*J6I9_hdD4ei6fHJ^YFDH?+m(^90#rnBG{iguz! zSl}!dg@8M6Fj(%aR*Qkq43<4c)d7+WDa7wcMagJJrIxG47GFM{?bR0TGUU1Io-$Ku zi&HFf>odv3mRTTXbIuBbyKr)q@dfoKW_7`_$4>6Hk>>PDoG?<{J{5 z=i@T(LT>Cj2EHO1QPN`%Sy})D9kFPz+EE~aeOxRx>&XY8CP@IFc@G0{#-c$sv5!4; zK-Y8I{?z5Pt52rqp!QIAfqRwB%3gy(S0>w3c|#1j+`$Cw$V7+NxkXrnuKP$um2`D6 zBUgR*TU|u8uISXxgAZ;3!rKBZCl7bUE-*{)#k?ixf$A9-t1`8a2p~k;i*4?g%zr#( z(3@|tu+neU1U2lrk}5S~1e<>BC^lPD17jTama1%Pp=rj0nmfVydu*b?z}*NjMd%kV zsCwx*W1}efOx`4`s?MH&2_IB5P)sLREo;CTmw;{-#P!^#zyJwVOOZosU}-*J6l9ij zpJb-nZJH#H^1x`J%HSlYMO8HaJDaJYs;UIyS77v!1~$~y^>L*YKr7`p>CMkDqBcuKmn@~6KhI^zV}ogE?2;RK{}I8>-yv*pqL*FkoH zpK}e)q5<4je9;hYf0=qZ5Tz_nug;O`Mu48Z^M=tB@_4(6_F5^Lg!k;Z@$ob_>Ld9t zvU7O5&@OsVmVd55#&9Ap?NwVDq$g-ZW|N;It??59h0TcG`fI2SN)KOWFuASLR}zcl z6FBN0W7${PWVQTWVw+<6xA>ilUb@c4msf{w=Bu4Cnc_Wscwmu+*1{tViUWPk!Vc5M zxly^4)*JC(L$bNr%G+9{IZWm6gGHk(k6gMHZ<-d~8j#38==7fb<79X4+)E;K66o08 zYubit+WM^H)_k374MhS@R;x2AL!u(sS)8P=9hs$Owfbd+*CCr70|K>r%DQV~+P?Sd z#mTBSYO!LhIl~elDjMWAX3SW8DMdAisqMYQn*}g{XDzJu78r|Dk7-9o!#FX2UZ=s3C?qn&nn6V z4v*`aC^k~Xe2_80O1A%S^wnhDI`Go2+?$%nh=3$ekq@>m?lKmnvpMq(w9d7am_#193n9=ab(3Kp$2()Bp>7SXu7l(a{US0Dr4&Wm z3GsxxUZds~1#_ABt=>JyVtS$3D$?;9wNMHEbBT86aBC;NF|F^#9WDODq7_J{L||W=kv(je!^EF`wNXK9lw!Hq+l_Yd zfa+{X335Fbr1u(9ey3NruDUR2AW;$M$M<5P-w8b8`v664JpgfPcwC&8 zaV+%Ubv$;~jmi+W@2V3be5Sos_Oeg;-S9YgC}@8RvWn~k9mzhaR`++irBgXg-7cTv zU|}g->BN|*v>-mWymbZ%G0WyE`*GV)MCZ@VEh;+Ku5(lE#~cXQua$cyBi==YOB3_P z`Ptr)BHLF%CoLsHQK*5`E~}j4e6^z1yC{$Yz@NJRF(|JIs$LJ4=7#jZ5-~vXU4Xw1 z@o4S<(4ieRVMu8Ff&kiI3aQ9JD`x`m5h;Q(1HEj zF}fb>24*qOE$Wf}YKuBc-bO8~ZpLT;N&0z?1s~eh|3nLze z!e#lI^uVW@89tKbJDOicEN`lX3bUfsqnzT(>P1_^$|_=u3kT(~c6~`~O+uyK z+e_add*LkZcr#u+8eBl>2Q=YuIDtW(cuW2BWRn4B*_8GR12hiyQ8L&o6pR|xzCz9X4Nyl-o^Dp@g&R8U{1r(8{UY6KC z_E*q&xNQ($sOJWyHGEM-9pV=G&*rgDKyzJs)TzFGvyg}snUW-@wiUW&YZXO5eR^_} zrV~=}y;0OZW0jH_lD-GfOqkzcL!Z@W6l5`?n zN*J?N)jfWR{s_4xRLVH_Zk|L;A1gNuLm~COMXr~3b{fBR^|lft)n VdsMw0AI=C$?uw#xj?^8W{{hA{J*xl! diff --git a/benchmark_scatter_en_aware.png b/benchmark_scatter_en_aware.png new file mode 100644 index 0000000000000000000000000000000000000000..43a500fca529f8aa61690fa648b79914438c765d GIT binary patch literal 91066 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

}Caq z%^kgc@7@an-nGVWwlH3XuKm5H1btkb)eYLs<%C+b0vAV2G-%n&3kKDZ)QU2V?}cPy zKP!h}x2fyKh9cK1vxhjFu&MGu+*7bdY4U!{@Kqh-@ci5@?vL90xsAG-l~L;(8~R&( z;oJ|0FPA1vahY^&m9UgauJt}jW^iA4O?Z=gtM-lEmgbsoL$h?l#J7ZqjJMlMcveoA z5tLm-7#+KypceL(s~j*_@iWdhcd0pO_;-R;W;Ywx7#^nBn01P#L?-?L)x&=1--2L*QRiNB5Nn9Gac|cfYk!Hke`+j{~ z6pPlfGbTp7b!^-j+Fl2vpi!JiTM1oUM@%yL;l}NoVC$5pt*rcB@h){IdO_gyxpO9+ zc(Z7O*dz+9nn;+)ftT-D%@;UOlb&tPY-*}-ZI{$GXl|oBQXh2GLj@yk{$A*}w%jt4V zvshb-Yh#r5?YbuS)GozEY;0k@-FH}!bPkt-D9wc9A`((uyht$nE!OWC@0Pl%l~@I% zNe!A-x;ztB;7LMR?+^Q{Y1?Vw8qx{gW4S4$OV?J5FxQ)N?@D1C9*uOwSzo3$D_vc>FXb|g=4aK#zh$1WTPuFf zZ$FbeTU)w2re5@L^y|>YZl^|%Cv~|UT)J+`O1xjgHXa!6tfm{{zUo%ySE>{^k z-rydQnVWLM4@Wa)74+nkh$P%z73bi`pj7~%j%nxP$sCB45nN|$U0rx~WTiMagn%!E zX5p%jm?}H%!G_2ZjwC_~0(8_(_x9$OO>w7W_1I2#(H*Dlbr(jOj)XYhB3dVDM8E#a z|K$Vi{swJA=6GLjJFf3@i80j|(lyZ$F*p>`mGku9QB@if;_@x_peB zJfFF?LH?u7RoqFNRcu+xyvM5yfn6qrs}5M&%HYs|*!0Yj+e+z5O0t&OQHB$ZD%vU< zh-%csg9yd5dI`sfp8Q_5sW)m;!m%Ue%C_i=+G$W&J=WFcJ{CFElTdWSem;DZt5L&? zs7VVUV*n-!?+7)c!+*=c;^_VkReq7gcy@uyfTa(x2;=cpT1=GvX4;0D?G)4yT+rWl zwu9zW2g_v+cl#?qkDg^~CU7zfN$I-+L@?`Y{R4&2Q_d`2HDT8JbVu8LQD|%2w&g+9 z%m9C8(T6NUzweQQ<5rWk<1y`Ek<$#RUT|n=?72LXNidngtRbCL51yaCmY2t_Tp!QS zO!gxsCI@16H2_0i)k9`8rZZios8-CZyG4%aTF48g5axXC2YxO(ib(}8{lsZQ%G}4w zqB}FRu`Jb@wEVWX*oc)D=RnF0H41fl1N)Q|x{9>OI?}D_1XVyl+CM^|q=6M$eSU z2-aC`L7yZ#q4QCF6ZjIl$7o8ABdxU2GOc+9wWX^Fp4 zrhg1~*cM+c6}HM_eQIn(;4YCgO!6D=@~~{HOhDrvtO*!-@Elq%pgjH8JDuGNiAjgA zu(W8`eBZXYQl0AALI&oljdpkk2g{TfPoMS-!x0biujA<8Z<2NzF@Vl^0M=JNPYU`%{IR2hcD0F;xcW~K%C)P;;U@79fC4+G(Ombk)Cjl zOj1&HYEO$v-kK{`57By5@b`;bMop|a;FCeUIgs)u@f#yuW8{k@sc!zPvN(eCTB<|s z$(~QLHMUDOHruvQ0y8d>QNg6bSxlg)7s}m<{PG+s+GP=k9o#4_84Sz@+*X2tYmyig^boj68Y}0x+pQ|z?3a8v70nOQA!JzfiCtk6;Mcq1Qq7iOJY6NTZT=WlcQz~MKZ;6C=}AmkrD}c7JJdm89`qp7KKyuKdtQPTtoi^; ztqaN0!M2X~m{QW5e3LO9&Q?yd)_pk;&88Cn@NS>e7JBvA+OqXILHswo)3|T`@+g(U zEC#wm(_WACRv@0j7T#|&Zkl|Pn0&G`#=WKGqBwL&-`xvlnk;Q0@8P5DlayVkernG( zn&6)Y=6C8D569R!@oZp@Ddii%Ro}7xxR?{1-^_w%l{&RDC@xD+K*xNl;`N&GAT!T2 z!T$2ZoBoiVwRp!EgkglkH0QRXf)VVO{s8f0_vPvd-?e@vpd}Jq&I*}FPH`Ejq`rp9lQpL@s@mh8F}wg12YuBD1CR85xF z2YJ)o`+7n-l3YvAhig_^UxhhMy{@_LS{kdv78hGT`EAj`XEi3^w3$TvM@@MR`HroK zSj%Z$YbGTTw^S3gia3lCEhFt%@9q#XQAKIWBe z=uiHzEngqs>>?Twf+n|JBM1bX5f&s<*1+yuT?ItFiC`YBkQk=fwe$hEjbJT0erZTC z!`BymR*4T*BlV}c1x<>n`6p>l@8cNU>RfjMbyle~q*qurm|0UXS7iG1hRxhN=ksS0 zhi;m8M)v`8!kJ=5!@%%chAT03EE0}5=J<_2-*RQ&P>|X%N&EW+<%i%>9*ve7jHKIO zix1Xedzc($#uRbcWxK+7jU(6-q44R+2qkjQ;vCh^td&figHrXridL&Quz%Web_2+CQlk-c1JNap3`srfJ#IWk zOT=`>^U)=n)3J-~Jfb_YsFi@mlhnhF2;bES+knL;;0 zgv?Ma>A@%n(zdF#)4~U@d_1Z`)fADX6{7uCR~vsLyx=dXQ}M>GX79)kOIKQDMRe8 zHrOBEM-N~$J6DP-Fs+%9jT_F`x2f5?E=!cm>czJ}vl&=Fn*5;ZWx8}^qN#nIyT#oqB=g%3{a-XFsWtpqL*8YWNLGR?&Pr&l4!VkLD07_hI@}vIs zS?bfL{|{Sl0T$KzMU4Xr>JSzqD2Q03fQq!FP1k_Ziqw$O4H5<_s7QCikkXBS2+|!h zq)4Yy!Vup+Ua$A}{r}%QkJtMsbDTNnec!$J+H0?sJg%fPAZ!WBt_y?S$$TG8LQHT6 zZNg1XV<#7Rxs)6h24@B=Ch2!ZjA97ApMVQO%%3XG($y6?F#3Y9qzY6?GZ%y7{NX|* z3cGw8U$cXVd{?AH*aIilSF_atI)Hs!2{rBHWzh$#FOP#VOkz-K8iJ#LzG$+7n%sZ< za`*~0HoDiaTWiWp^EJ!odQ(7P5%lS#hUwHb6~629!Dszmy;4cB(C#UlL`zG{cP^e5 zfdX3D*XNmIP4)N03rMe8gf1tnspwzqDK2bj^$+w!5+n8RmzNhe>Lo-yuxwkLr%$eF zZ{{;L8!2ol9K9A~FJuC6!aP1-@tRC>eTtm8zM%2sp=(^XTDDVI%(My~`5Nx6<{^E0 z9rtlQ(3F{fo&B=x(G||Lt&KJ3$seo*j$`LUk}2Mt!j~wv%!%vc1Hwh;STzs5+-{k$ z#S2j!u205LO{!j=HUya5l&t1kHFrtmJ!#=rd)zRBgdItEIA$_tYY_$zDhSYoGI^|< zXl^=O?ZWn%|3#5Zmrw5%4%>;iPBS)g1E!B+{--k`NSWLd-4tebFp%(Gxz(KMvTnqk z354L)Be`R7D)o?MWfC;9x?75pS}>u0U z)TYx8BC=DI3D5onc<5vO_GL$fTa zwi^0MiTVz^qsxejUo~Yo^xte`f+|OP&m9G&-qBmmzxu9GzoSfL_(By)itV z7HYp2IyT3%YsBd%XJ9Rj#o?mVThtzv>as$k#O9BZzftvm?*qpYR=(qtwoNudwU3WD zYijNd#^3pJJ)=f*`%!eCRH|v`4KL zx(l7hoy~`f?_KHW@RJqL)l+K>=CSPSs@ju;^HmyA=OG3YjYeXOT9pG=B4F}Z(WuEM z8sS1yFPCkU_p8l@Z(gV4x*yvg8cMa|#B|+C;;=su)$WM!4ha-iytiHJ*lokXI z!H(^EQxRPuiXtNAU_xbQRTMO*%QlP~&8f1#50Hs!osUvehnFHxNk=ug?Q%tT8o4cIn zc3%3iDSv-GHBg|RBDM)E140x{3Q{Z?%Ex52=O{ApKTguxwB~2K^7M0Tby4FIEtlLG z`X||NocA#2#sR&+{KoO)j-ktOH$qw)+0ULmYoB3w{i)|{u-%F57s8Z+verTg+clO0e0m2*V%MweJCTS8@d3W^DkH zoqiG$S$j<0aDq3C2;=LSlHL?)AoI4au4njj9eTlt4Ylx-Z=cx%{+*^}eJPO1#$EaA z5!d~kPwBs9{Fg^U5spC}=c^*AhMG^!yzAe(+HgRvJ#}@Srp4(PfWX+$f@(|^Mg)^2?l^}zd4(b5N z92giAM~xMOA}r#fnddPE@)QxE6uAncwuCA+_#sS)cJL3LS9`ZWYGGj$W0EvJI55!XPAX^#Yp8374|2naognMN7zp45)RX#kDe)zyWh?)cKp4nJoS zOrOg27!eb>GXlJf0o={wVBq&-=u)lAid)McJgiVVWuRV_Ho`t8CH;c?Xtc}13a<@q zII0fG+U!#eTNMR(r()Ac+?}>fAGFpB?)1g*s&a%E*7At0MC!P%q4~CqKg5Mwa&z-AHgcz_V!gvT$do zXlvx^-MEJj;VcWLUX>j+z)`kc8_`p1{s;nxNGG~2XG|jxTfm>8X-Rk!ed+r3!Pev0 z6Dkt|o8AG}h*P=eE>*f05K_*{Awr00n|L_Kz5<^ z2-PV>jRrA|U4X&#&cM$M|BkuiA!`R|ieAt!L8R>DA_akO2eAVB?csz=mzeKXlafl? z3Dbrk-k(2&Bk9wgfiJ`eg|MwM(C533aq7!^J z9^9L5A9vy;6TZBQUf>MjDSGvg1GUF#GYk~7e!>IHP*iiXiZNsBm&)YQc%U7^NoHTM zIlNzVdAhdHZ3aq$%t&j1lVLO|)~5eO*?i>dsUowuWYFnRl>%Jq?Tv#6Y)Za&4V~F- z7q3{+2bBnL!tN)iYujOx^#=){IwF$ok4C-=mC8kWrX!EjHRUg`Vm(~*Pn;P_v)nLm z_gRox>+E%Me%Pe-4~SGez#}Zw!GzF7NZ;DXP6tJDoPN2sXm_~2QD?(8^G;rq>i+OE z3Ld*(X`|E=O3$4;w>vO=zszB=6Z{vHfl?{T#S01D;>FMPMtF-tF5TSjVSXEjQ~x(s zhBF~XH-1dG1GGh*yl2{H#Di^KX0F6E)&v@n;y=2TMRC#s9Lu^K*s7IpH>ajB*8yri z1Of=w7iBVKDy$IBA!aGf z-zT#(wKdhCdhirteGt?KiUY&3O6N3Vw4y?EbuO@LLIZwfoC3(C)!Hhh?^tLnyK=n#%yIO_-5s<#YVra8yLHaE8-^ z<$om*3aGf`6zUOOUH+3-NJjoDAUw?rJoR=qZC0=(_k3U0W}BAkq%&X*B|moq4$>&$ zZWL-y$Db$gt$Z@P7+uHc_3`UV4Xeiy!AwJGSxMMbyN`{i6-vdNn5y_kz!Pis%$7cM zdFhV$rckqyLN77YgtX0XygB9}Y4Y2aF-2*tbfK8X`(s`1vTxr+NQi1SgrtYuo$*INkEIN@X3`c+X!2eEP`BCoF$9Ee6(ETh=-?W)B>0Lbu z&%kf7+{kBlcaDdFCcLk|!cuKYj<~|UQsBAzO8_(_-dZn;fAd^wurTy2H`tYJd$~yc z;7OwMoNk_&A$TE_et$1Bugf2D>A^RXE5cwBKV(%)jSPxUwltNV_BliYw&?~Tpr8f-)WM|YkkS@V&u{i>7MfrWm% zjq8rWO5TqTsxz^y8%?FxKB^kGdhnAj(+rpS-XR%d-rZMIz0FmGqW}R~Mnl|=EQ38b$nJ|TT?SH%reIwo~Y?yui=NZWcn;e($y2DImD3 z?kVG(bKZO&E{F=xTeuz2CFuGq2b9^8Vb<4V^wU%4A9ZxR3%|wQhD&Uw*u4=t7ViGX zN57d54NqJ)=9QpJwE7R>3Kaz^>LxHVB`v+Rp}7fM_W|=w%zeciIP{IjI!+69N?+rg zEPv&{h}a*Jue`D!73ZxkJv2W1A=pcPMaA+s70ZRG=0_YyFKp*|t#kP0iT+K$E(2U*yCbI2O-0_i0kAqPKaU2hQI39yvK(L7&`R7A2BawcM!j zYq!qsx?|NO!>hP9vQJK5UC3zdcY=6ALQWOrEyN5RZbW<*0!mMXi-TO))m!fFg;Td# zKnEX@&#l<0qtkut>N!*dY#v-J| z>A$ev$QN>kklA_>$Jsq$nH{4>PCjZ@TfIyYBK>?bO_OVexK`qj*-rAc%~e%URxs41 z57H;kjiWTsbJO+E)^%G8s?dfZH_$%6*0cjUNRv+zV3r>CS20Y)r@*gtn5vNmQ%+Do zn$P|*?6K#@@LTa=rX`YpNNrG5Wc^m=gPrGw+n2SK>iyHyqJ&|-#>WG9<~GPF*M9y|2g;yZo4w6$NVJ=L-^Nl3sX)wDy(yHm zxpNK40Q{5#lPQ{z{3dm%=xf-9Xq4{?-Sn%kD)|db=F%?$)H@#C!ldYkQdjDyN(XZo zY@8G_D>i?!wOy=^j1-!z`33#7Dd|o#r7P2ww$5d#-1*I2h+>I_8M-06kqY3<=T8Yg zr(x>uRuJ#=OKQru9MKW_-VXVC(xZnQ4O;Rk$CLvLu587AQ+}TtdF*UT*qoW4SZe&P zmK?H}c<`q-@s@lKiJ)iAGpl9B(?ZstZ3w52 z8BTnxXIk;`{(?A>dP^SX4p(efWe9Iy20=45kf^YB8-$g>Rty7<{^t4~Jq79n#kv1S z(}hFu!cC-8^alDa6&qjgaCmfT_07B~-V>ufDR{R{?8FY)draFU zb|`2B7aTz|-?EQ4WhXV_`5<;*vC5*RnE6Oa-c+hhQ5Go?Q&FM)z8d(x!r3IY{Vv!7DoejVN2XmG_wmN@kVNd>%Se%`CI!^t ztLQH#$ElA|!>LaTGUHPXKJJE_JRsbphX@ypnh8e9zd5}Z&g#RdocIFiwv6jKVUEM- z&PC~D%m|-JuWHe-pkh}QQ3v`hViTK?G28ALeQ_wKp8 zP)wm_fR5J`Q@xRrS$iE;AzaxGGUShbXAK46j|g)ZNv%Vtb0uB*TeXaG;S9sOFnjKvtPm|D4NeQ?wV^(hT#$U|%P!?{+QKEP zI3|}Zc9HDSceQu&9joInZSdKg4_^np%EMi!&oAcci>j>Y`IsbZEfSpF2k&d!e!VE{ z{QU(&-=;3Dj49l!;OZK5PO--I$;{|vBj`H_U_920L1t^5=fhIwBcDa>k>UG%>XqF%t*~Id~6N z^d2kywU}y?qhjzpQM~{3Kne{eA>_w-ev%k+B^)uw=O_V<%&`?XF-2M0XTY%VHL>@} zlFM>4G2H10gMfLwtuIU3rP`dZ71Ezo?!uc#MrbI4H z%aZ8fUi)nxa9Jy@+xDKfqr}!-e5-pgDbW#<)CMCd36-PtOl)ZCU_Wx1y1fSxM8h(t z!Dr9*_ODMm4u`>qto+Be*7N^2$j&MJdyswLCofZ(MT^F*7{PZYWnqDB`Rsf^j(XHr zWL3V!r_kE>d_&LzV#alI1^)PNOrcu(tH_mC$RX$?ld>k{J3ziRmb89};bLp(^ ztuO8?Pb=No`=xE%#MTg;c9m9+b4PC ziD%$hHZl~))&1|zx)e(6^-U37|Lv| z=*_j`bO_UM#jcMw)H4;)>ALh3{FH5@vzaPYi!}mP3I{ppVw->-U%us}he5iB_5{aL zIG=bER~ayC=YPc2W;`6f-5dMlJg07@*J;6=5%*n_un3X+g=P=RzWX&@9UM;C6=~cZ z+Rf$@N=O5p>aSomG|jOM-L_e&7CqrIJJSeJ{bbSg<@3F%CdcVyb^0eNnHFldaIEo`zxV*Kzxrm#p~A z9b%G}4oLI5ERUVFH;QrRpZxmH!d=g~RLAk@#Sd%`n}T;iO!9Sr8T0y0D!-G?5 zWjVyUES$ou0M=Mw$o>_V_O^FR^pB4VgC(`7I@;WEPE0-}Pf0)bQb#Sq?jGakB#GoT zEd-&PmkYxM1V7db_uqu`Ep+UOy*nmF(F7l&ls{g#Eyi-hZRHInTcXPeogOUOAHt;> zJR!tO^uM5?<*F5J$>6yh_#yOrtJ7hU_`~($Z$*>*Xp7A65f?f}s`3+Eu>mLPR2nFv zto<=BWO9a{AKq^eb@AIPd}YE*ez&IVLcKoS;69BHLLJ8+ z^ToeBYn3ZZyj02Obmmaqwr)&^*(=V+{Hx{k>2KdM=5Mf&YTbRe=cr#KP_`3 z*#$8%vF->js%vKb?K>i1`WJM_MhLse{w6(&;-fpc1cd9jAA|>H?K^5QOoZ2ob%HgO6iUd)cNk8 z;~%DBIZd;*_4{8O_#>PU7wrwdT^xKSHlwt zLg*`3xG!|GS1La2LchEd&|jSprhW>!3W*dVhXSv+&!ohnP@LPGsttZ8ILv%0>mC4c zVMhFx59ln~U)u~lEo$G4IX(NkZj*5QJtIRxlGxrGv8{0}jO)4AIDKC9JL=(&ZSH}4TCBm5yW^ZMei{8E z_axy%?Wdm$Hx974(%&iy-oflE*;y}LWRP&&?@hE{yehI@r7u#ObcmdknRaz4 z8>DFn;PV8c;$n|U&yF!8?}oP*iO*OSTK?YUFhl=S?-fkRW2iXjFF{I8`~;fit5ugJ zhL}lwzJQvA_GL$yBqEg9q`>id5?`=WoYJ`3@3S zK|yvN6wnuUL}+;rQce&>e?JI#hgT!z_Ej8MO#4J{h-K=vo32EU{8>8iwJ>rok|Kf>a-N+C=4d1MbxA}hiK`^b zegr=PLj0{)^8wUU$m<4@?hTp_`1USQJzB_koa90HsO<%pa z*ekjC!{T4_1|@kIT4A8tqVU1q@Y_>ZIaLK+2?kN;e2_=49(G-6i5;njHjQ_syiYV) zHTdwANT}BLf(pq{iF@BfDN_U2KdBZxju$_1)q~GmP;>>+id!J&mkB6>1=Ayt+ROy; z=R&<|uWL=f&uUsMUy%o^nr9&W-z_gVw!aJn@67=%S=@rBBydM@g%;ju4vM`wAX!|- zk9&}G85!E{1p)msfMm7M51BziG#m7p?JOb+wy6aM^*|HU1`~=+nl1V9g<(ivBhT=S z<`g(U81-q{yeX4!Bf=Qgg81HM0FZQ=L5ue>qB#xGl(%K4C0djqdP0;Xa~#C6i$KOb zS>sDtHc01#{_D_S8%$v5fzITxc9rX+mg!)bVjY&MYe;&hYRsd}w=cG5Ij3>$1RCq^k;68WsK^xNGw;S-gN^5fCuS7Q~|! zOsVt1h9_BrMTB_G`q`EWvLWF0;wMK@vmuq??V>(s5dAiYi}jR=3n9w}Q>Q*?4Qq|s zwhB%4Bl3~Wylu8k3xuLJt__g1E^SW(^<3`N&@1}S%m<4*e3_tm`4P+;da}xYN|((f zN0@=2DgVQo{dC5cw2IqL0hfJdo$YcN=-6{X9~*HNb^$n4d(`gBNuxxRM7KZ2{0{i7 zsr6k|<~@TxlH7+?CbT22Q9{;JaD+!*}qoqZkejTynt&^8BIPSMH8gyWg-f9$gQ>-tVG&<4H4z!^qOPjVqipb zuvn)hx@@&m#vCwn_7HZqj`ecbBiuPFY_zZe@(^>0MQh*q(g4tHE@|&h&{Jr8M|NhU z33JpQq~{6X2088CCk$%OvliL0ijwal!K-!AN$Kr)%RWY4!`GDSw1T)t?UXKHjWv(k z50)nu>X|c2zVUd&S*H+T=%j+{*khZ?<|jdKP)r3(zTP?ok1uqJ1?tqrigSVbJ(ljv z1f6dc-sslD7!GO7$<)3)AfPPLs|3ZQfWW)OneN>MUvF$d`mA_GA+CAt`qp&9z;Mbt zk#`SV{`DhhIELBt>2l7M!C1t&Z>3RwDA!Y@y`6?tc<7BIoq&V02s}}eQ52#$jX)5% zP1)~_bH;zvf1W<892(b~6sB}Awbu{DTfU|P)?@s3v#Ldz(TK1uMuOdOHC5XX{9!t^ zi)wD@qNKYgmCi6IHsn zc!g_}O0M3Lm}7H%>OomLce1ZOAo``^6d$@XKNy0q{;xz0i3Dxe>k2Ck1$$^nv=roK zXqVZC&#Cq#doF=vlQl*SXROlH*qnMy9&Lr2{7HSKyfBPviS`QEUGJl;N|@*1yv<{3BkoQ@rr zv$&;+%DhoqUC=|$JMFRkgLFwI^P*eYLMjgr+v~zjYaCTe(}Yb^I@wyP^!%`mTM@rFX};<$}Lbh@9;OsGy828woyG_ z^9jeF#4^Qk99=4zVxqH7tC6?aqUARH4vPL(HfzJ~M01CqDZ!C51=KCCYmWO~sibwq z67yT0I+Df&A8(mYhaet4v2D~h^Mm63@IeS&B+QPk%p*f7Js> zj?{I}wpE35rpz58_a(s_CtHeD3IYvj3~#O+?1@&Lsw90Opu%$=wMT1q z9bAD-vWTPJhX?Q3;Jdw)&^Fk2sT`amv(@wYA>H=w>jOsi@GAv7H{BLNo@TD{A~3{O zH~a~GGx0~Z+UuJ*dg}bcMg{MAveV9W7g?(j)4a+dDJY9o2zm_;fC`vH;X0JZfx z&1!EzX+6v(3sJ706gCei}lvyTQdovcPv}Abt)HjX-jyU6)*Vugz%l=R{tCeCCbC;&B?f{hY5$e>QS* zy*G}*v?q@WCj{g0Jo%9xoc-m=eR3Ua1?Sw{~=Aos!@_P7l=Sq$|*l(JQLVmS^ilAdy#(m zCxb-G9Cxf6>EG1g?sRKC8;h~o@RC0&6B|oy}GZLd(MpZn)iAp3LGStS>-OZ^p zblkWtxwzQg1ieRK9yDVSAtmm60mVz!v63+QqeWmOAG}f!w_hV(qt<-VeH6tD?Q38< z@R9oD)z26ato8#p`PFSxmov`OXX#F*^^AjM!GZ>_GwpZS`E|ZY;G1JzZ34-hb}TOT z+Wqcxn6@q?mPhl7I-oqRnJQ*JKwmHl@xr_BYz=g$sc5q$Enn)ak<2bgU4J@|XH+KL zErIq%Q50yos}K}U3mg{v6-%gBJtP8>TnDnKMZ}RwiFqi&dBDqQ9Mp5k2WUmqxHtA+?qSNWjL1J$byR6EDroCab z6YW-NJlmf1 z5x0#f(e-})G^raT2U-4B4-(SkV~_(b;(B|tv`w3Ujs?N2@Z`x&52m;PVNMJ2C4Iy=bwUL5-vH~i-cBof9KSXnip1EJUpY!)L>?UH;z zcO(;B*3GK6f4oL(=DvdCUz zw&68w&Vd||0GUf*(uAEXm|AyK^vOo>bM@H4c$;kqF*<)9Sz+L0Uuad|3_X(HFNuC< zxO3VQQIj8oxV43Q>>$&Z+bp^J?%WCP6FfR*$hmaqj9WJa4Pz)v`&W}Aj^J*m{_cLh zu@a>~b40V)LKlvtnR-Zvs0p>MccJ#XS;T1-un!F|aL>)(28JV2?40CY0WYcI**Xx| zA>Xi?*=)N)G?x#p<&GQN$+1bmydbUZmUlfJv6hgmQ`X#9$ka zrF%yj)|U#$TiY}7F~qewBg@Lo@1DF5i++0ZUu>@JfiaCj9`3N z>ar^ha5iu?3n6@79o0uFM3DGhQA=0jlDT^~$N#hlUe{x1B02;*D}+O=k$Nz)Q3RBg z2K)K`cVo?xOPelJQ4aIa9k(gM$lUk64|(OC@Ts~o-ON2GR`VgH6^@^xN4!qe;JEr= z2eyjmx*qsmR`2Ko*yfUW3J*}y8-IjFgI@~)TqgDVbX+piX?JJSvoCRTw-&fk8~shz zJag;+=?3p zzoJgWcb0l6$U|xcVoeLb#LGVtTo8-nxrGZQLIh))4IV6|VpA5#3&{g^HDb4$6CkA#74;1U7j5U=K%kcUEi) zaC>#FC%%Y1WdRjN(HgvZ%hq3`q;kJ~WsS*4;wg91CGhEj5q#Q;|q?;!jxbeR(Y7WFwy0-^xEYiFz zFlz?BOhxOG1!S!>zRRd;ef`?9Cq|Bz|3YHSICfR#0tH~J!_qb67Q_OeLU~a&F7PDz zDJ&~J6y#C|$$e2|aEBM9*gM)#5;_2b0Kt9Ex}pVjgSO!fg}lFS`Y z71}GXtlH@{cY(#C9E@P2a4%cPzlIm2`HA=r<2?{atVn#;;j{yi{F?XYR7(e6nz2aV znFSodp{U0+Q&F*~??+~%H2JgY%ci}T)I~Em@Xh5=yjz?|jqYlel5TP7{t-K?Q6SX& zqyQpM+16}2SLD9}Vk9Irz2M$BC6=mwH))oS{1AAF+4k7s$W+PoZg)GYRL9;SP3Y}_ zR6#XU41Fq9>I%KB2X-&*^35J^)Sj*Kt!P|4t^0m#;Hei8uZF{6e%l| zFU#;QZ}X^=tLCs>aGZ{NKDf?)Qza>i1I6d9z;!LJu_|2AToV10ogQ=X!_qy;)Kssp zD-ie*+f(g}aT@$sAzv|^V`GcW#RpE6+kI(`k|P9MW@0KAj)&a$DF^%cTSx-Y7edE- z0IkQPk>B9!akAr56BJ8VCpG{&DJF1Gt$IoRa96uL-{C$(jAUc$t&AlQ3wc_oPxEX^ zNvKUyi@_eS5J7@YlASn&#dXM`N(1r7(!VM7l%SSt|LxTP@I)qwHb$ZBaN1>sl(pSt zig~M@132V$Zr_S`t%ITly5l=Bn1@4mX$JDt}JQcZQ^R9+83tT^n*?l>=p43N% z;S!p7BQR{0Db$mz%1ef(ntj4a0y|kQE1Gj}ic_?t#QZ{&w9MfAa%L;li53r4-x#uC z2yvy2A`3RVJ@MEBvmWJa60Opy8PXL{@%4Xxd0hL&VwvuKRE~`lx?ab?{5F8TQ#d#D zFZShT6sBXVkOQ-psF5{GNrF8eNtZ2i`M(4W#kjO@6EMB0uUi!;0nF*mpBzKhrw+0g zBUrh%NV{|phXH=FJqDkK)rpX51aBdu;tU)Y`up_YhWj&`)7Y_ZiGlLgQ{m)kILjlNhi#(Pt*Bx5W}aID3LyLqrIIakD=Yf*vs^Bxl-52y%Aqo za9J88e}Pv==aO?uKx`~D&6^`!6*%JdH5LHaUO3l3*vCU0RFJOA;#N`ANLAdD6S9l4 zKw?_)csUdSC;W~7x@{iR)OFu9`1DqS_jCD)XHIAh_Q78ezm&Dbz<5vAGF?#*R@Y3S zfa-GU+ctsjuUN%Ib7k^)vT#7Q6H9c?K3mHDM%+&0N-sPcDK%_8(KrB8723?x9aLp{ zg-+B0*pid7l{W0&_b}ORTdPk<|m?2c3|qLm71jj8*#fooVKVI*LK>3{T5bK5mabQ=UeYXV246U=x^_}*0%R#! z2Hz6z1rBZ(!r{zuu~?<-_Q`9;Z?&J)p|eVJAniJ-=9NaBAf?iBxg2n5t;>l{uf=zN zB|sKqWML6uyMXU$5t|#XD5JcCloCj3t|_MFMOmP&S{JM{1*2^xQ(9<^@SxPG>t#Vf zP-4lKBnVd%hAI!_2Y!q5QB)S)Zs z`e%9JuN=@7m9(D@Lk+qJ=ZyM5=mX#6Ni?oeIs0DDzEQnD4M{j^d@^Bqm6mv6sed(c zW*1++mAM13GCy4^l1sKNYG#tIJ**-t0D1D_QE7AZTwiv~*aBjN2~XPwErTM%w4|uT zzF`osU)fdNoa)%V$(2rQ{~6AnipqQ~^}-L$S&EVvl1FRf3{`K1XwYMKm|9+`Xnsag z<`!)g&uc(mhg3ftc1v5$tt$5&E#E$X`n3*r=)mJz1F{{q(?JZm_ zAF0;O$^bqu4SR~4R54XAklca%Q@cNTJ-#}=#1+pPAhIY}72ovG@5V7(CqV)@K16*) z`73Hi!EWT;%~!7uFEXo=kl#>#^j>62l;njNt6B-&b7K*N^fA_~9z3?|%L z!u~a(89Rc>@fT}mNP;|Q}r^rVQ&R0T`*}|1_nFv;61(1N&XmjIE^-kbk$SLF* zwrJ&Sz+Ib~b_(67BDz6(tED*G5&8Ld=SEGk5Erq=IAq<#HKSHBTe6C$Nk7J0v0>)> zU85eL4zB)#2hP)vF?-IBdXq9cKiS^b@oN0c3ybmtB=4X}O&%q67Sp-;j9uqfJnm|N z@f%gF0CAmQIhFb*S;HFA*dVn6Y|r(9LN5y_sJLBKB*KEiyf-g0)=1)iljM;I==oNO z^ByK3?W)Yeg%ECSEQ}ml1sP!{PJN}FXCLh{YnWF(f_tQxci|8PZ&ouSw$MIh-Le5rq;WWfR+CB zGfyi(zSL3`&pP;*gC!?*8T4sxRGgGh{d1m(=t2M`ul2>) zve z!~L}oXm{di7zIaLYp*ae@|%UCZ2_Ijg#!e-%A_|h{sl>1NL3%CSm9+h>rQ=#q~l0# z)?|uPy#!2l5uOHrMxjS9U%ouy??=o22r$jKVJc=0^t=P2B#OKw?s`{mqYgq$l@xJa zH4erdKsudBXBGGY9loweuM^|7%ew?Mp2^Boo5R^yd92bY<4HaEf*Fs$zRwD8*M%UI z0kO@3a2=|2d(3mBSv>A9(%LG%=jxyvb`KiwcbJ?$LwT`)PX!LZFfT>daw8qVA#k7N_B;i!Y??HS|htR@JUE zr&e)Jnc2_pU+p1HzhCcvTKjF9LB1$zGZ;<>#D&55P<=tg(_l#7T3}9uBr> z1j@$9b6f)NO65;>Y>!23r{4|%fgnpb8#X<6DEudhvTLzw&z&w6={nj&x0nE+`e4a6 zRLJ~pTee7>a%iQ(py@>4RvvV;EKcvXl@wwm6M8q{j`iELiB922(LbSW*~R4k>!D_` zRUCmubP?DX_YGIWKL8ZPmHuf365v8mqbbteq^Lv6oNNSq)N&k1Q(@gGCVlMx7t)Kr zsYBttdGv_bYWodtR~J|T+QuK4Foo>-KU05Z!)oC^vRYG(02CC5ndWgTStXOVVD+M(F0%^^CvrWTGnJb*FLW09gQ$5oSboSUvef+#OE zK}$!ITm)*r7WohZhd5MI-&%)x)gcT50QSF=-I(c0381`$&UYTu1B!|{?1MCX8pm5v z7#mptG~2E%#DkzL3elz=&cCug9m%L@h9!4eMqD^A=U6NU!&GyaKH!jx4&PM3aH z^QlS%&}~gmNdF(xy!cZ&VPiMp{b> z$M~v?J$tG$UsR0NKn*hVBL1hX{iMSd-<#?0iOq^i|eSu?@c5&hZ z-fD}&8;jn8=v%C41Bf6yVHIqQOK~DYeNY4p=AvjS^c2mN3tn?@0@R@oNt=E+QQ2x* zL_o2}A81u38ZNUx!GyWV_hpz;T>>4IADOIq6GApw0#u?zv(3C{D0tQ$(2ce)dHZh) z{C6fD!+lq|r3*5~EAwKsRui{+VvT?qz|GibydFE*o2DUO9ju{>b&tZ)Tx1=KO%;Ze zz?&Ufh{rfCsTxoFKF~=`ae7{=FwzA`78X*>mSr*3&15U3hmn)JL%^L_hmm?CQ;{B; z?hxEMZGRfJ%_E}wi)#6Ta!@qx=d~5Z6%_g^R>=HD?37&3i%Qi2R@O)>sqm(P#f%MR5GLOwAP%PO#)QJRR;4dK4qT z(cCpCjya19N-1;#_hb7mIROI`5w~;}x1t#^`?j|^vhRl%e}O3GMQUT!!`f#hpX7pk zptEoEX{se6FSMr#t!&65P(=Qg?{DBbl0-U2kfb`ea-M!Q6}60%fq4gZ*z-kTCXTY- zHN737IbCboD$H(16@UVJn9<<;?E+fN{nYk$6~F);vallLAB5s0IlcZ0*N&oCF$eWe=GMR zb)<1p6<)Md&SxVbh(Ogu1fmX^TJ)w`cv{p1RF+*Ctf1wgIhKmskG>8Kk-2rq_KI`b zLpWAe8DG<1sd@kYednM%oWUovbV);a3T|OAF^gRe5f{@5nX$QW0xg!HuBCK1M63>O zs!yjWcShW!r|HhcphFR)5!V#svRLxg{J0`mu>k@2_e+U`9__Pvn#vhUa^pZ&g+e$p zHQ}^W=3WB(G}H6W;Gc_t<=SgQNMUw&@{B)%r2EPOQ7n~mEWa6`=ZHl&tP@vC$#c}a ztEQh{v^PQ#Lz;om9ZW0Ju_5xC^^fAi3ynL@)gF-vxFH$6cn9r+;3zP1-Lkd55Rv=3 zmlLT?T{2LstJ_95HwJJRPJwzw^a~uzAb`q5qt5#Hk!KwAw7#}D zCRKDyHiBPZi>kd35a6lK8SV`^&t-Ba&cW@#8Sv>UR1X2;&m3+J9p`7Gr>Ld&_D!Ow3@AvrHVA0|4pwn4an2HcQ%Az!kIWoGμ7Zhv0ZH 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 S2X!6L$JW;|)Xvee3;qw~1R7od literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 3a36468..dfba364 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "whisperlivekit" version = "0.2.20" -description = "Real-time speech-to-text with speaker diarization using Whisper" +description = "Real-time speech-to-text models" readme = "README.md" authors = [{ name = "Quentin Fuxa" }] license = { file = "LICENSE" } @@ -144,6 +144,7 @@ packages = [ "whisperlivekit.local_agreement", "whisperlivekit.voxtral_mlx", "whisperlivekit.silero_vad_models", + "whisperlivekit.benchmark", ] [tool.setuptools.package-data] diff --git a/run_benchmark.py b/run_benchmark.py deleted file mode 100644 index 8c737fb..0000000 --- a/run_benchmark.py +++ /dev/null @@ -1,290 +0,0 @@ -#!/usr/bin/env python3 -""" -Comprehensive benchmark runner for WhisperLiveKit. - -Tests all available backend+policy combinations across multiple audio files, -model sizes, and VAC on/off configurations. Outputs structured JSON that -is consumed by the report generator. - -Usage: - python run_benchmark.py # full benchmark - python run_benchmark.py --quick # subset (tiny models, fewer combos) - python run_benchmark.py --json results.json # custom output path -""" - -import argparse -import asyncio -import gc -import json -import logging -import platform -import subprocess -import sys -import time -from dataclasses import asdict -from pathlib import Path - -logging.basicConfig(level=logging.WARNING, format="%(asctime)s %(levelname)s %(name)s: %(message)s") -logger = logging.getLogger("benchmark") -logger.setLevel(logging.INFO) - -# Re-use harness functions -sys.path.insert(0, str(Path(__file__).parent)) -from test_backend_offline import ( - AUDIO_TESTS_DIR, - SAMPLE_RATE, - create_engine, - discover_audio_files, - download_sample_audio, - load_audio, - run_test, -) - -CACHE_DIR = Path(__file__).parent / ".test_cache" - - -def get_system_info() -> dict: - """Collect system metadata for the report.""" - info = { - "platform": platform.platform(), - "machine": platform.machine(), - "processor": platform.processor(), - "python_version": platform.python_version(), - } - - # macOS: get chip info - try: - chip = subprocess.check_output( - ["sysctl", "-n", "machdep.cpu.brand_string"], text=True - ).strip() - info["cpu"] = chip - except Exception: - info["cpu"] = platform.processor() - - # RAM - try: - mem_bytes = int( - subprocess.check_output(["sysctl", "-n", "hw.memsize"], text=True).strip() - ) - info["ram_gb"] = round(mem_bytes / (1024**3)) - except Exception: - info["ram_gb"] = None - - # Backend versions - versions = {} - try: - import faster_whisper - versions["faster-whisper"] = faster_whisper.__version__ - except ImportError: - pass - try: - import mlx_whisper # noqa: F401 - versions["mlx-whisper"] = "installed" - except ImportError: - pass - try: - import mlx.core as mx - versions["mlx"] = mx.__version__ - except ImportError: - pass - try: - import transformers - versions["transformers"] = transformers.__version__ - except ImportError: - pass - try: - import torch - versions["torch"] = torch.__version__ - except ImportError: - pass - - info["backend_versions"] = versions - return info - - -def detect_combos(quick: bool = False) -> list: - """Build list of (backend, policy, model_size) combos to test.""" - combos = [] - - # Model sizes to test - model_sizes = ["tiny", "base", "small"] if not quick else ["tiny", "base"] - - # faster-whisper - try: - import faster_whisper # noqa: F401 - for model in model_sizes: - combos.append({"backend": "faster-whisper", "policy": "localagreement", "model": model}) - combos.append({"backend": "faster-whisper", "policy": "simulstreaming", "model": model}) - except ImportError: - pass - - # mlx-whisper - try: - import mlx_whisper # noqa: F401 - for model in model_sizes: - combos.append({"backend": "mlx-whisper", "policy": "localagreement", "model": model}) - combos.append({"backend": "mlx-whisper", "policy": "simulstreaming", "model": model}) - except ImportError: - pass - - # voxtral-mlx (single model, single policy) - try: - from whisperlivekit.voxtral_mlx import VoxtralMLXModel # noqa: F401 - combos.append({"backend": "voxtral-mlx", "policy": "voxtral", "model": ""}) - except ImportError: - pass - - # voxtral HF (single model, single policy) - try: - from transformers import AutoModelForSpeechSeq2Seq # noqa: F401 - combos.append({"backend": "voxtral", "policy": "voxtral", "model": ""}) - except ImportError: - pass - - return combos - - -def collect_audio_files() -> list: - """Collect all benchmark audio files.""" - files = [] - - # audio_tests/ directory - if AUDIO_TESTS_DIR.is_dir(): - files.extend(discover_audio_files(str(AUDIO_TESTS_DIR))) - - # JFK sample - jfk = CACHE_DIR / "jfk.wav" - if not jfk.exists(): - jfk = download_sample_audio() - if jfk.exists(): - files.append(jfk) - - return files - - -async def run_single_combo( - combo: dict, audio_files: list, vac: bool, lan: str, max_duration: float, -) -> list: - """Run one backend+policy+model combo across all audio files.""" - backend = combo["backend"] - policy = combo["policy"] - model = combo["model"] - - results = [] - try: - engine = create_engine( - backend=backend, - model_size=model, - lan=lan, - vac=vac, - policy=policy, - ) - - # Quiet noisy loggers - for mod in ( - "whisperlivekit.audio_processor", - "whisperlivekit.simul_whisper", - "whisperlivekit.tokens_alignment", - "whisperlivekit.simul_whisper.align_att_base", - "whisperlivekit.simul_whisper.simul_whisper", - ): - logging.getLogger(mod).setLevel(logging.WARNING) - - for audio_path in audio_files: - duration = len(load_audio(str(audio_path))) / SAMPLE_RATE - if duration > max_duration: - logger.info(f" Skipping {audio_path.name} ({duration:.0f}s > {max_duration:.0f}s)") - continue - - file_lan = lan - if "french" in audio_path.name.lower() and lan == "en": - file_lan = "fr" - - audio = load_audio(str(audio_path)) - result = await run_test( - engine, audio, chunk_ms=100, realtime=False, - audio_file=audio_path.name, backend=backend, - policy=policy, lan=file_lan, - ) - # Tag with extra metadata - result_dict = asdict(result) - result_dict["model_size"] = model - result_dict["vac"] = vac - results.append(result_dict) - - except Exception as e: - logger.error(f" FAILED: {e}") - import traceback - traceback.print_exc() - - return results - - -async def run_full_benchmark(combos, audio_files, max_duration=60.0): - """Run all combos with VAC on and off.""" - all_results = [] - total = len(combos) * 2 # x2 for VAC on/off - idx = 0 - - for combo in combos: - for vac in [True, False]: - idx += 1 - vac_str = "VAC=on" if vac else "VAC=off" - desc = f"{combo['backend']} / {combo['policy']}" - if combo["model"]: - desc += f" / {combo['model']}" - desc += f" / {vac_str}" - - print(f"\n{'='*70}") - print(f"[{idx}/{total}] {desc}") - print(f"{'='*70}") - - results = await run_single_combo( - combo, audio_files, vac=vac, lan="en", max_duration=max_duration, - ) - all_results.extend(results) - - # Free memory between combos - gc.collect() - - return all_results - - -def main(): - parser = argparse.ArgumentParser(description="Run comprehensive WhisperLiveKit benchmark") - parser.add_argument("--quick", action="store_true", help="Quick mode: fewer models and combos") - parser.add_argument("--json", default="benchmark_results.json", dest="json_output", help="Output JSON path") - parser.add_argument("--max-duration", type=float, default=60.0, help="Max audio duration in seconds") - args = parser.parse_args() - - system_info = get_system_info() - combos = detect_combos(quick=args.quick) - audio_files = collect_audio_files() - - print(f"System: {system_info.get('cpu', 'unknown')}, {system_info.get('ram_gb', '?')}GB RAM") - print(f"Backends: {list(system_info['backend_versions'].keys())}") - print(f"Combos to test: {len(combos)} x 2 (VAC on/off) = {len(combos)*2}") - print(f"Audio files: {[f.name for f in audio_files]}") - print() - - t0 = time.time() - all_results = asyncio.run( - run_full_benchmark(combos, audio_files, max_duration=args.max_duration) - ) - total_time = time.time() - t0 - - output = { - "system_info": system_info, - "benchmark_date": time.strftime("%Y-%m-%d %H:%M"), - "total_benchmark_time_s": round(total_time, 1), - "n_combos": len(combos) * 2, - "n_audio_files": len(audio_files), - "results": all_results, - } - - Path(args.json_output).write_text(json.dumps(output, indent=2, ensure_ascii=False)) - print(f"\nBenchmark complete in {total_time:.0f}s. Results: {args.json_output}") - - -if __name__ == "__main__": - main() diff --git a/scripts/create_long_samples.py b/scripts/create_long_samples.py new file mode 100644 index 0000000..c925b72 --- /dev/null +++ b/scripts/create_long_samples.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python3 +"""Create long benchmark samples (5min+) by concatenating utterances from public datasets.""" + +import io +import json +import logging +import wave +from pathlib import Path + +import numpy as np + +logging.basicConfig(level=logging.INFO, format="%(message)s") +logger = logging.getLogger(__name__) + +CACHE = Path.home() / ".cache/whisperlivekit/benchmark_data" +CACHE.mkdir(parents=True, exist_ok=True) +SR = 16000 + + +def save_wav(path, audio, sr=SR): + audio = np.clip(audio, -1, 1) + audio_int = (audio * 32767).astype(np.int16) + with wave.open(str(path), "w") as wf: + wf.setnchannels(1) + wf.setsampwidth(2) + wf.setframerate(sr) + wf.writeframes(audio_int.tobytes()) + + +def decode_audio(audio_bytes): + import soundfile as sf + arr, sr = sf.read(io.BytesIO(audio_bytes), dtype="float32") + return np.array(arr, dtype=np.float32), sr + + +def download_long_librispeech(config, lang_code, target_dur=300): + """Concatenate LibriSpeech utterances into a ~5min sample.""" + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info(f"Downloading LibriSpeech {config} for {lang_code} (~{target_dur}s)...") + ds = load_dataset("openslr/librispeech_asr", config, split="test", streaming=True) + ds = ds.cast_column("audio", Audio(decode=False)) + + chunks, texts = [], [] + total = 0 + for item in ds: + arr, sr = decode_audio(item["audio"]["bytes"]) + chunks.append(arr) + texts.append(item["text"]) + total += len(arr) / sr + if total >= target_dur: + break + if len(chunks) % 20 == 0: + logger.info(f" {total:.0f}s / {target_dur}s ({len(chunks)} utterances)") + + # Insert small silences between utterances for natural transitions + silence = np.zeros(int(0.5 * sr), dtype=np.float32) + interleaved = [] + for i, chunk in enumerate(chunks): + if i > 0: + interleaved.append(silence) + interleaved.append(chunk) + full = np.concatenate(interleaved) + total = len(full) / sr + ref = " ".join(texts) + name = f"{lang_code}_long_{config}" + path = CACHE / f"{name}.wav" + save_wav(path, full) + logger.info(f" -> {name}: {total:.1f}s ({len(texts)} utterances)") + return {"name": name, "path": str(path), "reference": ref, + "duration": round(total, 2), "language": lang_code.split("_")[0]} + + +def download_long_mls(config, lang_code, target_dur=300): + """Concatenate MLS utterances into a ~5min sample.""" + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info(f"Downloading MLS {config} for {lang_code} (~{target_dur}s)...") + ds = load_dataset("facebook/multilingual_librispeech", config, split="test", streaming=True) + ds = ds.cast_column("audio", Audio(decode=False)) + + chunks, texts = [], [] + total = 0 + for item in ds: + arr, sr = decode_audio(item["audio"]["bytes"]) + chunks.append(arr) + texts.append(item.get("text", item.get("transcript", ""))) + total += len(arr) / sr + if total >= target_dur: + break + if len(chunks) % 20 == 0: + logger.info(f" {total:.0f}s / {target_dur}s ({len(chunks)} utterances)") + + silence = np.zeros(int(0.5 * sr), dtype=np.float32) + interleaved = [] + for i, chunk in enumerate(chunks): + if i > 0: + interleaved.append(silence) + interleaved.append(chunk) + full = np.concatenate(interleaved) + total = len(full) / sr + ref = " ".join(texts) + name = f"{lang_code}_long" + path = CACHE / f"{name}.wav" + save_wav(path, full) + logger.info(f" -> {name}: {total:.1f}s ({len(texts)} utterances)") + return {"name": name, "path": str(path), "reference": ref, + "duration": round(total, 2), "language": lang_code} + + +def main(): + samples = [] + + # English clean ~90s + samples.append(download_long_librispeech("clean", "en", target_dur=90)) + + # English noisy ~90s + samples.append(download_long_librispeech("other", "en_noisy", target_dur=90)) + + # French ~90s + samples.append(download_long_mls("french", "fr", target_dur=90)) + + # Save metadata + meta_path = CACHE / "long_samples.json" + meta_path.write_text(json.dumps(samples, indent=2)) + logger.info(f"\nSaved metadata to {meta_path}") + + total = sum(s["duration"] for s in samples) + logger.info(f"Total: {len(samples)} long samples, {total:.0f}s ({total/60:.1f}min)") + + +if __name__ == "__main__": + main() diff --git a/scripts/generate_architecture.py b/scripts/generate_architecture.py index 7f42d45..9ef45c3 100644 --- a/scripts/generate_architecture.py +++ b/scripts/generate_architecture.py @@ -144,13 +144,14 @@ ax.text(10.4, 4.2, "4B params • 15 languages • 6-bit quant (MLX)", fontsize= # ── Qwen3 backend ── section_box(15.0, 3.8, 4.6, 3.2, "Qwen3 ASR (batch + aligner)", border=C_GREEN, bg=C_BOX_BG3) -box(15.2, 5.9, 2.0, 0.6, "Qwen3 ASR\n1.7B / 0.6B", color=C_GREEN, bg="#1a3a2a", fontsize=7, bold=True) -box(17.4, 5.9, 2.0, 0.6, "Forced\nAligner", color=C_GREEN, bg="#1a3a2a", fontsize=7) +box(15.2, 5.9, 1.5, 0.6, "Qwen3 ASR\n1.7B / 0.6B", color=C_GREEN, bg="#1a3a2a", fontsize=7, bold=True) +box(16.9, 5.9, 1.5, 0.6, "Qwen3\nSimul", color=C_GREEN, bg="#1a3a2a", fontsize=7, bold=True) +box(18.6, 5.9, 1.0, 0.6, "Forced\nAligner", color=C_GREEN, bg="#1a3a2a", fontsize=6.5) -ax.text(15.2, 5.4, "Full-audio batch inference", fontsize=6.5, color=C_TEXTDIM, family="monospace") +ax.text(15.2, 5.4, "Batch + SimulStreaming (AlignAtt)", fontsize=6.5, color=C_TEXTDIM, family="monospace") ax.text(15.2, 5.0, "ForcedAligner provides word timestamps", fontsize=6, color=C_GREEN, family="monospace") -ax.text(15.2, 4.6, "Uses LocalAgreement for streaming output", fontsize=6, color=C_TEXTDIM, family="monospace") -ax.text(15.2, 4.2, "12 languages • CUDA/MPS/CPU", fontsize=6, color=C_TEXTDIM, family="monospace") +ax.text(15.2, 4.6, "LocalAgreement or border-distance policy", fontsize=6, color=C_TEXTDIM, family="monospace") +ax.text(15.2, 4.2, "29 languages • CUDA/MPS/CPU", fontsize=6, color=C_TEXTDIM, family="monospace") # ── OpenAI API ── box(15.2, 7.7, 4.2, 0.6, "OpenAI API (cloud)", color="#5a6a7a", fontsize=7) @@ -168,8 +169,10 @@ box(16.0, 2.2, 3.4, 0.8, "Translation\nNLLB • CTranslate2", box(10.4, 0.8, 4.0, 0.8, "WhisperLiveKitConfig\n(single source of truth)", color=C_ACCENT, fontsize=7, bold=True) -box(14.8, 0.8, 4.6, 0.8, "TestHarness\nfull pipeline testing without server", +box(14.8, 0.8, 2.3, 0.8, "TestHarness\npipeline testing", color="#5a6a7a", fontsize=7) +box(17.3, 0.8, 2.3, 0.8, "Benchmark\n8 langs • 13 samples", + color=C_ORANGE, fontsize=7, bold=True) # ═══════════════════════════════════════════════════════════════════ # Arrows: main data flow diff --git a/scripts/run_scatter_benchmark.py b/scripts/run_scatter_benchmark.py new file mode 100644 index 0000000..0176c25 --- /dev/null +++ b/scripts/run_scatter_benchmark.py @@ -0,0 +1,430 @@ +#!/usr/bin/env python3 +"""Run benchmark across all backend x model x policy combos for scatter plot. + +Tests each configuration on long audio samples in two modes: + - Compute-unaware (speed=0): all audio dumped instantly, measures pure model accuracy + - Compute-aware (speed=1.0): real-time simulation, slow models lose audio + +Usage: + python scripts/run_scatter_benchmark.py + python scripts/run_scatter_benchmark.py --aware # only compute-aware + python scripts/run_scatter_benchmark.py --unaware # only compute-unaware + python scripts/run_scatter_benchmark.py --plot-only results.json +""" + +import argparse +import asyncio +import gc +import json +import logging +import platform +import subprocess +import sys +import time +import warnings + +warnings.filterwarnings("ignore") +logging.basicConfig(level=logging.WARNING) +for name in [ + "whisperlivekit", "transformers", "torch", "httpx", "datasets", + "numexpr", "faster_whisper", +]: + logging.getLogger(name).setLevel(logging.ERROR) + + +LONG_SAMPLES_PATH = "~/.cache/whisperlivekit/benchmark_data/long_samples.json" + +# ── All configurations to benchmark ── + +COMBOS = [ + # faster-whisper x LocalAgreement + {"backend": "faster-whisper", "model_size": "base", "policy": "localagreement", + "label": "fw LA base", "color": "#4a9eff", "marker": "o", "size": 100}, + {"backend": "faster-whisper", "model_size": "small", "policy": "localagreement", + "label": "fw LA small", "color": "#4a9eff", "marker": "o", "size": 220}, + # faster-whisper x SimulStreaming + {"backend": "faster-whisper", "model_size": "base", "policy": "simulstreaming", + "label": "fw SS base", "color": "#4a9eff", "marker": "s", "size": 100}, + {"backend": "faster-whisper", "model_size": "small", "policy": "simulstreaming", + "label": "fw SS small", "color": "#4a9eff", "marker": "s", "size": 220}, + # mlx-whisper x LocalAgreement + {"backend": "mlx-whisper", "model_size": "base", "policy": "localagreement", + "label": "mlx LA base", "color": "#4ecca3", "marker": "o", "size": 100}, + {"backend": "mlx-whisper", "model_size": "small", "policy": "localagreement", + "label": "mlx LA small", "color": "#4ecca3", "marker": "o", "size": 220}, + # mlx-whisper x SimulStreaming + {"backend": "mlx-whisper", "model_size": "base", "policy": "simulstreaming", + "label": "mlx SS base", "color": "#4ecca3", "marker": "s", "size": 100}, + {"backend": "mlx-whisper", "model_size": "small", "policy": "simulstreaming", + "label": "mlx SS small", "color": "#4ecca3", "marker": "s", "size": 220}, + # voxtral-mlx (4B, native streaming) + {"backend": "voxtral-mlx", "model_size": "", "policy": "", + "label": "voxtral mlx", "color": "#f5a623", "marker": "D", "size": 250}, +] + + +def is_backend_available(backend): + try: + if backend == "faster-whisper": + import faster_whisper; return True # noqa + elif backend == "mlx-whisper": + import mlx_whisper; return True # noqa + elif backend == "whisper": + import whisper; return True # noqa + elif backend == "voxtral-mlx": + import mlx.core # noqa + from whisperlivekit.voxtral_mlx.loader import load_voxtral_model; return True # noqa + elif backend == "voxtral": + from transformers import VoxtralRealtimeForConditionalGeneration; return True # noqa + elif backend in ("qwen3", "qwen3-simul"): + from whisperlivekit.qwen3_asr import _patch_transformers_compat + _patch_transformers_compat() + from qwen_asr import Qwen3ASRModel; return True # noqa + except (ImportError, Exception): + pass + return False + + +def get_system_info(): + info = {"platform": platform.platform(), "machine": platform.machine()} + try: + info["cpu"] = subprocess.check_output( + ["sysctl", "-n", "machdep.cpu.brand_string"], text=True).strip() + except Exception: + info["cpu"] = platform.processor() + try: + mem = int(subprocess.check_output(["sysctl", "-n", "hw.memsize"], text=True).strip()) + info["ram_gb"] = round(mem / (1024**3)) + except Exception: + info["ram_gb"] = None + return info + + +async def run_combo_on_samples(combo, samples, lang="en", speed=0): + """Run one config on all samples, return averaged result. + + Args: + speed: 0 = compute-unaware (instant dump), 1.0 = compute-aware (real-time) + """ + from whisperlivekit.core import TranscriptionEngine + from whisperlivekit.metrics import compute_wer + from whisperlivekit.test_harness import TestHarness, _engine_cache + + kwargs = {"lan": lang, "pcm_input": True} + if combo["backend"]: + kwargs["backend"] = combo["backend"] + if combo["model_size"]: + kwargs["model_size"] = combo["model_size"] + if combo.get("policy"): + kwargs["backend_policy"] = combo["policy"] + + TranscriptionEngine.reset() + _engine_cache.clear() + gc.collect() + + total_ref_words, total_errors = 0, 0 + total_infer_time, total_audio_time = 0.0, 0.0 + n_ok = 0 + + for sample in samples: + try: + async with TestHarness(**kwargs) as h: + await h.feed(sample["path"], speed=speed) + await h.drain(max(5.0, sample["duration"] * 0.5)) + state = await h.finish(timeout=120) + metrics = h.metrics + + hypothesis = state.committed_text or state.text + wer_result = compute_wer(sample["reference"], hypothesis) + + total_ref_words += wer_result["ref_words"] + total_errors += (wer_result["substitutions"] + + wer_result["insertions"] + + wer_result["deletions"]) + + # Use actual inference time from metrics, not wall clock + if metrics and metrics.transcription_durations: + total_infer_time += sum(metrics.transcription_durations) + total_audio_time += sample["duration"] + n_ok += 1 + except Exception as e: + print(f" [WARN: {sample['name']} failed: {e}]", end="") + + if n_ok == 0: + return None + + weighted_wer = total_errors / max(total_ref_words, 1) + # Real RTF = actual inference time / audio duration + real_rtf = total_infer_time / total_audio_time if total_audio_time > 0 else 0 + + return { + "label": combo["label"], + "backend": combo["backend"], + "model_size": combo.get("model_size", ""), + "policy": combo.get("policy", ""), + "color": combo["color"], + "marker": combo["marker"], + "size": combo["size"], + "rtf": round(real_rtf, 4), + "wer_pct": round(weighted_wer * 100, 1), + "n_samples": n_ok, + } + + +async def run_all(combos, samples, lang="en", speed=0): + mode_label = "compute-aware" if speed > 0 else "compute-unaware" + results = [] + for i, combo in enumerate(combos): + if not is_backend_available(combo["backend"]): + print(f" [{i+1}/{len(combos)}] SKIP {combo['label']} (not installed)") + continue + print(f" [{i+1}/{len(combos)}] {combo['label']} ({mode_label})...", end="", flush=True) + result = await run_combo_on_samples(combo, samples, lang, speed=speed) + if result: + results.append(result) + print(f" RTF={result['rtf']:.2f}x WER={result['wer_pct']:.1f}% ({result['n_samples']} samples)") + else: + print(" FAILED (no results)") + return results + + +def get_long_samples_for_lang(lang="en"): + """Load long benchmark samples from long_samples.json, filtered by language.""" + import os + path = os.path.expanduser(LONG_SAMPLES_PATH) + if not os.path.exists(path): + print(f"ERROR: Long samples file not found: {path}") + print("Please generate it first (see benchmark_data/README).") + sys.exit(1) + with open(path) as f: + all_samples = json.load(f) + samples = [s for s in all_samples if s["language"] == lang] + return [{"name": s["name"], "path": s["path"], "reference": s["reference"], + "duration": s["duration"]} for s in samples] + + +LANG_NAMES = { + "en": "English", "fr": "French", "es": "Spanish", "de": "German", + "pt": "Portuguese", "it": "Italian", "nl": "Dutch", "pl": "Polish", + "zh": "Chinese", "ja": "Japanese", "ko": "Korean", "ru": "Russian", +} + + +def generate_scatter(results, system_info, output_path, n_samples, lang="en", + mode="unaware", sample_duration=0.0): + """Generate scatter plot. + + Args: + mode: "unaware" or "aware" -- shown in title + sample_duration: total audio duration in seconds -- shown in title + """ + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + import matplotlib.patches as mpatches + from matplotlib.lines import Line2D + + fig, ax = plt.subplots(figsize=(12, 7), facecolor="white") + ax.set_facecolor("#fafafa") + + # Separate main cluster from outliers (RTF > 1.0) + main = [r for r in results if r["rtf"] <= 1.0] + slow = [r for r in results if r["rtf"] > 1.0] + + # Axis limits: tight around main data + if main: + xmax = max(r["rtf"] for r in main) * 1.6 + ymax = max(r["wer_pct"] for r in main) * 1.5 + 1 + else: + xmax, ymax = 0.5, 10 + xmax = max(xmax, 0.45) + ymax = max(ymax, 8) + + # Sweet spot zone + sweet_x = xmax * 0.85 + sweet_y = ymax * 0.55 + rect = plt.Rectangle((0, 0), sweet_x, sweet_y, alpha=0.07, color="#4ecca3", + zorder=0, linewidth=0) + ax.add_patch(rect) + ax.text(sweet_x - 0.005, sweet_y - 0.15, "sweet spot", ha="right", va="top", + fontsize=10, color="#2ecc71", fontstyle="italic", fontweight="bold", alpha=0.5) + + # Manual label offsets keyed by label name — hand-tuned + OFFSETS = { + "fw LA base": (8, 8), + "fw LA small": (8, 8), + "fw SS base": (-55, -14), + "fw SS small": (8, 8), + "mlx LA base": (8, 10), + "mlx LA small": (8, 8), + "mlx SS base": (-55, 8), + "mlx SS small": (-55, -5), + "voxtral mlx": (10, -14), + "qwen3 0.6B": (10, 8), + "fw LA large-v3": (8, -5), + "fw SS large-v3": (8, 5), + } + + # Plot main points + for r in main: + ax.scatter(r["rtf"], r["wer_pct"], c=r["color"], marker=r["marker"], + s=r["size"], edgecolors="white", linewidths=1.0, zorder=5, alpha=0.85) + ox, oy = OFFSETS.get(r["label"], (8, -4)) + ax.annotate(r["label"], (r["rtf"], r["wer_pct"]), + textcoords="offset points", xytext=(ox, oy), + fontsize=8.5, color="#333333", fontweight="medium") + + # Note slow backends outside main view + if slow: + lines = [] + for r in slow: + lines.append(f"{r['label']}: RTF={r['rtf']:.1f}x, WER={r['wer_pct']:.1f}%") + note = "Beyond real-time:\n" + "\n".join(lines) + ax.text(xmax * 0.97, ymax * 0.97, note, ha="right", va="top", + fontsize=7.5, color="#777777", fontstyle="italic", + bbox=dict(boxstyle="round,pad=0.4", facecolor="#f8f8f8", + edgecolor="#dddddd", alpha=0.9)) + + # Axes + ax.set_xlim(left=-0.01, right=xmax) + ax.set_ylim(bottom=0, top=ymax) + ax.set_xlabel("RTF (lower = faster)", fontsize=13, fontweight="bold", labelpad=8) + ax.set_ylabel("WER % (lower = more accurate)", fontsize=13, fontweight="bold", labelpad=8) + ax.grid(True, alpha=0.15, linestyle="-", color="#cccccc") + ax.tick_params(labelsize=10) + + # Title + cpu = system_info.get("cpu", "unknown").replace("Apple ", "") + lang_name = LANG_NAMES.get(lang, lang.upper()) + mode_label = "compute-unaware" if mode == "unaware" else "compute-aware" + dur_str = f"{sample_duration / 60:.0f}min" if sample_duration >= 60 else f"{sample_duration:.0f}s" + ax.set_title( + f"Speed vs Accuracy ({mode_label}) — {n_samples} {lang_name} samples, {dur_str} ({cpu})", + fontsize=14, fontweight="bold", pad=12) + + # Legend — backends + backend_handles = [] + seen = set() + for r in results: + if r["backend"] not in seen: + seen.add(r["backend"]) + backend_handles.append(mpatches.Patch(color=r["color"], label=r["backend"])) + + # Legend — shapes + marker_map = {"o": "LocalAgreement", "s": "SimulStreaming", "D": "Native streaming", + "h": "Batch + aligner"} + active = set(r["marker"] for r in results) + shape_handles = [ + Line2D([0], [0], marker=m, color="#888", label=lbl, + markerfacecolor="#888", markersize=8, linestyle="None") + for m, lbl in marker_map.items() if m in active + ] + # sizes + shape_handles += [ + Line2D([0], [0], marker="o", color="#888", label="base", + markerfacecolor="#888", markersize=5, linestyle="None"), + Line2D([0], [0], marker="o", color="#888", label="small / 4B", + markerfacecolor="#888", markersize=9, linestyle="None"), + ] + + leg1 = ax.legend(handles=backend_handles, loc="upper left", fontsize=9, + framealpha=0.95, edgecolor="#ddd", title="Backend", title_fontsize=9) + ax.add_artist(leg1) + ax.legend(handles=shape_handles, loc="lower right", fontsize=8, + framealpha=0.95, edgecolor="#ddd", ncol=2) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight", pad_inches=0.15) + print(f"Saved {output_path}") + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--plot-only", default=None) + parser.add_argument("--lang", default="en", help="Language code (en, fr, es, de, ...)") + parser.add_argument("--output", "-o", default=None, + help="Output path prefix (mode suffix added automatically)") + parser.add_argument("--json-output", default=None, + help="JSON output path prefix (mode suffix added automatically)") + parser.add_argument("--aware", action="store_true", + help="Run only compute-aware mode (speed=1.0)") + parser.add_argument("--unaware", action="store_true", + help="Run only compute-unaware mode (speed=0)") + args = parser.parse_args() + + lang = args.lang + + # Determine which modes to run + if args.aware and args.unaware: + modes = ["unaware", "aware"] + elif args.aware: + modes = ["aware"] + elif args.unaware: + modes = ["unaware"] + else: + # Default: run both + modes = ["unaware", "aware"] + + if args.plot_only: + data = json.load(open(args.plot_only)) + mode = data.get("mode", "unaware") + output_path = args.output or f"benchmark_scatter_{lang}_{mode}.png" + generate_scatter(data["results"], data["system_info"], output_path, + data["n_samples"], data.get("lang", "en"), + mode=mode, + sample_duration=data.get("total_audio_s", 0)) + return + + print(f"Loading long {lang} samples from {LONG_SAMPLES_PATH}...") + samples = get_long_samples_for_lang(lang) + if not samples: + print(f"ERROR: No long samples for language '{lang}'") + sys.exit(1) + print(f"Using {len(samples)} samples: {[s['name'] for s in samples]}") + total_dur = sum(s["duration"] for s in samples) + print(f"Total audio: {total_dur:.0f}s ({total_dur / 60:.1f}min)\n") + + # Filter combos to backends that support this language + from whisperlivekit.benchmark.compat import backend_supports_language + combos = [c for c in COMBOS if backend_supports_language(c["backend"], lang)] + + system_info = get_system_info() + + for mode in modes: + speed = 1.0 if mode == "aware" else 0 + mode_label = "compute-aware" if mode == "aware" else "compute-unaware" + print(f"\n{'='*60}") + print(f" Running {mode_label} (speed={speed})") + print(f"{'='*60}\n") + + t0 = time.time() + results = asyncio.run(run_all(combos, samples, lang, speed=speed)) + total = time.time() - t0 + + # Save JSON + json_path = args.json_output or f"/tmp/bench_scatter_{lang}" + json_file = f"{json_path}_{mode}.json" + output_data = { + "system_info": system_info, + "lang": lang, + "mode": mode, + "speed": speed, + "n_samples": len(samples), + "sample_names": [s["name"] for s in samples], + "total_audio_s": round(total_dur, 1), + "total_benchmark_time_s": round(total, 1), + "results": results, + } + with open(json_file, "w") as f: + json.dump(output_data, f, indent=2) + print(f"\nJSON: {json_file} ({total:.0f}s total)") + + # Generate scatter plot + output_base = args.output or f"benchmark_scatter_{lang}" + output_path = f"{output_base}_{mode}.png" + generate_scatter(results, system_info, output_path, len(samples), lang, + mode=mode, sample_duration=total_dur) + + +if __name__ == "__main__": + main() diff --git a/test_backend_offline.py b/test_backend_offline.py deleted file mode 100644 index 75af927..0000000 --- a/test_backend_offline.py +++ /dev/null @@ -1,804 +0,0 @@ -#!/usr/bin/env python3 -""" -Offline test harness and benchmark suite for WhisperLiveKit backends. - -Simulates a client-server session by feeding audio files as PCM bytes through -the full AudioProcessor pipeline (the same path used by the WebSocket server), -without needing a browser or microphone. - -Computes WER (Word Error Rate) and timestamp accuracy when ground truth -transcript files (.transcript.json) are available alongside audio files. - -Usage: - # Test with a single audio file: - python test_backend_offline.py --backend faster-whisper --audio audio_tests/00_00_07_english_1_speaker.wav - - # Test all files in audio_tests/: - python test_backend_offline.py --backend faster-whisper --no-realtime - - # Override streaming policy: - python test_backend_offline.py --backend faster-whisper --policy simulstreaming --no-realtime - - # Multi-backend benchmark (auto-detects all installed backends): - python test_backend_offline.py --benchmark --no-realtime - - # Export results as JSON: - python test_backend_offline.py --benchmark --no-realtime --json results.json - - # Insert silence for testing silence handling: - python test_backend_offline.py --backend faster-whisper --insert-silence 3.0 2.0 -""" - -import argparse -import asyncio -import json -import logging -import sys -import time -import urllib.request -from dataclasses import asdict, dataclass, field -from pathlib import Path -from typing import List, Optional - -import numpy as np - -logging.basicConfig( - level=logging.WARNING, - format="%(asctime)s %(levelname)s %(name)s: %(message)s", -) -logger = logging.getLogger("test_offline") -logger.setLevel(logging.INFO) - -SAMPLE_RATE = 16000 -JFK_WAV_URL = "https://github.com/ggerganov/whisper.cpp/raw/master/samples/jfk.wav" -CACHE_DIR = Path(__file__).parent / ".test_cache" -AUDIO_TESTS_DIR = Path(__file__).parent / "audio_tests" -AUDIO_EXTENSIONS = {".wav", ".mp3", ".flac", ".ogg", ".m4a"} - - -@dataclass -class WordTimestamp: - """Word with its start/end time.""" - word: str - start: float - end: float - - -@dataclass -class TestResult: - """Structured result from a single test run.""" - audio_file: str - audio_duration_s: float - backend: str - policy: str - language: str - chunk_ms: int - realtime_pacing: bool - # Timing - processing_time_s: float - rtf: float # real-time factor - # Transcription output - transcription: str - n_lines: int - n_responses: int - # WER metrics (None if no ground truth) - wer: Optional[float] = None - wer_details: Optional[dict] = None - # Timestamp accuracy (None if no ground truth) - timestamp_mae: Optional[float] = None - timestamp_max_delta: Optional[float] = None - timestamp_median_delta: Optional[float] = None - # Word-level timestamps - word_timestamps: List[WordTimestamp] = field(default_factory=list) - # Raw last response - last_response: Optional[dict] = None - - -def download_sample_audio() -> Path: - """Download the jfk.wav sample if not cached.""" - CACHE_DIR.mkdir(exist_ok=True) - path = CACHE_DIR / "jfk.wav" - if not path.exists(): - logger.info(f"Downloading sample audio to {path} ...") - urllib.request.urlretrieve(JFK_WAV_URL, path) - logger.info("Done.") - return path - - -def load_audio(path: str) -> np.ndarray: - """Load audio file as float32 mono 16kHz numpy array. - - Supports WAV, FLAC (via soundfile) and MP3, OGG, M4A (via librosa). - """ - ext = Path(path).suffix.lower() - if ext in (".mp3", ".ogg", ".m4a"): - import librosa - audio, _ = librosa.load(path, sr=SAMPLE_RATE, mono=True) - return audio.astype(np.float32) - - import soundfile as sf - audio, sr = sf.read(path, dtype="float32") - if audio.ndim > 1: - audio = audio.mean(axis=1) - if sr != SAMPLE_RATE: - import librosa - audio = librosa.resample(audio, orig_sr=sr, target_sr=SAMPLE_RATE) - return audio - - -def insert_silence(audio: np.ndarray, silence_sec: float, position_sec: float) -> np.ndarray: - """Insert silence into audio at a given position. - - Args: - audio: Float32 mono audio array at SAMPLE_RATE. - silence_sec: Duration of silence to insert in seconds. - position_sec: Position in seconds where silence starts. - Returns: - New audio array with silence inserted. - """ - pos_samples = int(position_sec * SAMPLE_RATE) - silence_samples = int(silence_sec * SAMPLE_RATE) - pos_samples = min(pos_samples, len(audio)) - silence = np.zeros(silence_samples, dtype=np.float32) - return np.concatenate([audio[:pos_samples], silence, audio[pos_samples:]]) - - -def float32_to_s16le_bytes(audio: np.ndarray) -> bytes: - """Convert float32 audio to s16le PCM bytes (what the browser sends).""" - return (audio * 32768).clip(-32768, 32767).astype(np.int16).tobytes() - - -def create_engine( - backend: str, model_size: str, lan: str, - diarization: bool = False, - diarization_backend: str = "", - vac: bool = True, - policy: str = "", -): - """Create a TranscriptionEngine with the given backend config.""" - import gc - - from whisperlivekit.core import TranscriptionEngine - - # Reset singleton so we get a fresh instance - TranscriptionEngine._instance = None - TranscriptionEngine._initialized = False - gc.collect() - - kwargs = dict( - backend=backend, - lan=lan, - pcm_input=True, - vac=vac, - transcription=True, - diarization=diarization, - ) - if diarization_backend: - kwargs["diarization_backend"] = diarization_backend - if model_size: - kwargs["model_size"] = model_size - if policy: - kwargs["backend_policy"] = policy - - return TranscriptionEngine(**kwargs) - - -def _extract_text_from_response(response_dict: dict) -> str: - """Extract full transcription text from a FrontData dict.""" - def _strip_or_empty(value: object) -> str: - return value.strip() if isinstance(value, str) else "" - - segments = response_dict.get("lines", []) - full_text = " ".join( - text - for seg in segments - if isinstance(seg, dict) - for text in [_strip_or_empty(seg.get("text"))] - if text - ) - buf = _strip_or_empty(response_dict.get("buffer_transcription")) - if buf: - full_text = f"{full_text} {buf}".strip() if full_text else buf - return full_text - - -async def run_test( - engine, audio: np.ndarray, chunk_ms: int, realtime: bool, - audio_file: str = "", backend: str = "", policy: str = "", lan: str = "", -) -> TestResult: - """ - Simulate a client session through the full AudioProcessor pipeline. - - 1. Create AudioProcessor (one per "client session") - 2. Start async pipeline (transcription_processor, results_formatter, etc.) - 3. Feed audio as PCM bytes in timed chunks - 4. Collect and display FrontData responses - 5. Signal EOF and cleanup - """ - from whisperlivekit.audio_processor import AudioProcessor - - chunk_samples = int(SAMPLE_RATE * chunk_ms / 1000) - total_samples = len(audio) - audio_duration = total_samples / SAMPLE_RATE - - logger.info( - f"Audio: {audio_duration:.2f}s | " - f"Chunk: {chunk_ms}ms ({chunk_samples} samples) | " - f"Steps: {total_samples // chunk_samples + 1} | " - f"Realtime: {realtime}" - ) - - # --- Server side: create processor and start pipeline --- - processor = AudioProcessor(transcription_engine=engine) - results_generator = await processor.create_tasks() - - # Collect results in background (like handle_websocket_results) - all_responses = [] - response_count = 0 - last_printed_text = "" - - async def collect_results(): - nonlocal response_count, last_printed_text - async for response in results_generator: - all_responses.append(response) - response_count += 1 - d = response.to_dict() - - # Only print when transcription text actually changes - current_text = _extract_text_from_response(d) - if current_text and current_text != last_printed_text: - buf = d.get("buffer_transcription") - buf = buf.strip() if isinstance(buf, str) else "" - committed = current_text - if buf and committed.endswith(buf): - committed = committed[:-len(buf)].strip() - - # Show committed text + buffer separately - display = committed - if buf: - display = f"{committed} \033[90m{buf}\033[0m" if committed else f"\033[90m{buf}\033[0m" - print(f" > {display}", flush=True) - last_printed_text = current_text - - result_task = asyncio.create_task(collect_results()) - - # --- Client side: feed audio as PCM bytes --- - t_start = time.time() - - for offset in range(0, total_samples, chunk_samples): - chunk = audio[offset : offset + chunk_samples] - pcm_bytes = float32_to_s16le_bytes(chunk) - await processor.process_audio(pcm_bytes) - if realtime: - await asyncio.sleep(chunk_ms / 1000) - - feed_elapsed = time.time() - t_start - - logger.info(f"Audio fed in {feed_elapsed:.2f}s. Signaling EOF...") - - # Signal end of audio (like client disconnect / empty message) - await processor.process_audio(None) - - # Wait for pipeline to drain completely - try: - await asyncio.wait_for(result_task, timeout=120.0) - except asyncio.TimeoutError: - logger.warning("Timed out waiting for results. Proceeding with cleanup.") - result_task.cancel() - try: - await result_task - except asyncio.CancelledError: - pass - - # --- Capture word-level timestamps before cleanup --- - word_timestamps = [] - try: - state = await processor.get_current_state() - for token in state.tokens: - if hasattr(token, 'start') and hasattr(token, 'text') and token.text: - word_timestamps.append(WordTimestamp( - word=token.text.strip(), - start=round(token.start, 3), - end=round(token.end, 3), - )) - except Exception as e: - logger.warning(f"Could not capture word timestamps: {e}") - - # Cleanup - await processor.cleanup() - - total_elapsed = time.time() - t_start - - # --- Build result --- - transcription = "" - n_lines = 0 - last_response_dict = None - - if all_responses: - last = all_responses[-1].to_dict() - last_response_dict = last - n_lines = len(last.get("lines", [])) - transcription = _extract_text_from_response(last) - - # --- Compute WER and timestamp accuracy against ground truth --- - from whisperlivekit.metrics import compute_timestamp_accuracy, compute_wer - - wer_val = None - wer_details = None - ts_mae = None - ts_max_delta = None - ts_median_delta = None - - gt_path = Path(audio_file).with_suffix(".transcript.json") - if not gt_path.exists(): - gt_path = AUDIO_TESTS_DIR / gt_path - gt = None - if gt_path.exists(): - with open(gt_path) as f: - gt = json.load(f) - - # WER - gt_text = " ".join(w["word"] for w in gt) - wer_result = compute_wer(gt_text, transcription) - wer_val = round(wer_result["wer"], 4) - wer_details = wer_result - - # Timestamp accuracy - if word_timestamps: - pred_dicts = [{"word": wt.word, "start": wt.start, "end": wt.end} for wt in word_timestamps] - ts_result = compute_timestamp_accuracy(pred_dicts, gt) - ts_mae = ts_result["mae_start"] - ts_max_delta = ts_result["max_delta_start"] - ts_median_delta = ts_result["median_delta_start"] - - result = TestResult( - audio_file=audio_file, - audio_duration_s=round(audio_duration, 2), - backend=backend, - policy=policy, - language=lan, - chunk_ms=chunk_ms, - realtime_pacing=realtime, - processing_time_s=round(total_elapsed, 2), - rtf=round(total_elapsed / audio_duration, 2), - transcription=transcription, - n_lines=n_lines, - n_responses=response_count, - wer=wer_val, - wer_details=wer_details, - timestamp_mae=round(ts_mae, 3) if ts_mae is not None else None, - timestamp_max_delta=round(ts_max_delta, 3) if ts_max_delta is not None else None, - timestamp_median_delta=round(ts_median_delta, 3) if ts_median_delta is not None else None, - word_timestamps=word_timestamps, - last_response=last_response_dict, - ) - - # --- Print summary --- - print(f"\n{'=' * 60}") - print(f"RESULT: {audio_file}") - print(f"{'=' * 60}") - print(f"Transcription: {transcription}") - print(f"Lines: {n_lines} | Responses: {response_count}") - print(f"Audio: {audio_duration:.2f}s | Time: {total_elapsed:.2f}s | RTF: {result.rtf:.2f}x") - - if wer_val is not None: - print(f"WER: {wer_val:.2%} (S={wer_details['substitutions']} I={wer_details['insertions']} D={wer_details['deletions']})") - - # Print word timestamps if available - if word_timestamps: - print(f"\nWord timestamps ({len(word_timestamps)} words):") - for wt in word_timestamps: - print(f" [{wt.start:6.2f} - {wt.end:6.2f}] {wt.word}") - - # Detailed comparison with ground truth - if gt: - print(f"\n vs Ground truth ({len(gt)} words):") - max_words = max(len(word_timestamps), len(gt)) - for i in range(max_words): - pred = word_timestamps[i] if i < len(word_timestamps) else None - ref = gt[i] if i < len(gt) else None - p_str = f"[{pred.start:5.2f}-{pred.end:5.2f}] {pred.word:<15}" if pred else " " * 30 - r_str = f"[{ref['start']:5.2f}-{ref['end']:5.2f}] {ref['word']:<15}" if ref else "" - delta = "" - if pred and ref: - d = pred.start - ref['start'] - delta = f" Δstart={d:+.2f}" - print(f" {p_str} | {r_str}{delta}") - - if ts_mae is not None: - print(f"\n Timestamp stats: MAE={ts_mae:.3f}s max|Δ|={ts_max_delta:.3f}s median|Δ|={ts_median_delta:.3f}s") - - print(f"{'=' * 60}") - - return result - - -def discover_audio_files(directory: str) -> List[Path]: - """Find all supported audio files in directory.""" - d = Path(directory) - files = sorted( - p for p in d.iterdir() - if p.is_file() and p.suffix.lower() in AUDIO_EXTENSIONS - ) - return files - - -async def run_all_tests( - engine, audio_files: List[Path], chunk_ms: int, realtime: bool, - backend: str, policy: str, lan: str, max_duration: float = 60.0, - silence_insertions: Optional[List[List[float]]] = None, -) -> List[TestResult]: - """Run tests on multiple audio files sequentially.""" - results = [] - for audio_path in audio_files: - # Detect language from filename if "french" in name - file_lan = lan - if "french" in audio_path.name.lower() and lan == "en": - file_lan = "fr" - logger.info("Auto-detected language 'fr' from filename") - - audio = load_audio(str(audio_path)) - - # Insert silence segments (applied in reverse position order to keep offsets valid) - if silence_insertions: - for secs, at_sec in sorted(silence_insertions, key=lambda x: x[1], reverse=True): - logger.info(f"Inserting {secs:.1f}s silence at {at_sec:.1f}s") - audio = insert_silence(audio, secs, at_sec) - - duration = len(audio) / SAMPLE_RATE - - if duration > max_duration: - logger.info(f"Skipping {audio_path.name} ({duration:.0f}s > {max_duration:.0f}s max)") - continue - - print(f"\n{'#' * 60}") - print(f"# Testing: {audio_path.name} ({duration:.1f}s)") - print(f"{'#' * 60}") - - result = await run_test( - engine, audio, chunk_ms, realtime, - audio_file=audio_path.name, backend=backend, policy=policy, lan=file_lan, - ) - results.append(result) - - return results - - -def print_benchmark_summary(results: List[TestResult]): - """Print a tabular summary of all test results.""" - print(f"\n{'=' * 110}") - print("BENCHMARK SUMMARY") - print(f"{'=' * 110}") - print( - f"{'File':<40} {'Duration':>8} {'Time':>8} {'RTF':>6} " - f"{'WER':>7} {'MAE(s)':>7} {'Lines':>5}" - ) - print(f"{'-' * 110}") - for r in results: - wer_str = f"{r.wer:.2%}" if r.wer is not None else " -" - mae_str = f"{r.timestamp_mae:.3f}" if r.timestamp_mae is not None else " -" - print( - f"{r.audio_file:<40} {r.audio_duration_s:>7.1f}s {r.processing_time_s:>7.1f}s " - f"{r.rtf:>5.2f}x {wer_str:>7} {mae_str:>7} {r.n_lines:>5}" - ) - print(f"{'-' * 110}") - total_audio = sum(r.audio_duration_s for r in results) - total_time = sum(r.processing_time_s for r in results) - avg_rtf = total_time / total_audio if total_audio > 0 else 0 - wer_vals = [r.wer for r in results if r.wer is not None] - avg_wer_str = f"{sum(wer_vals)/len(wer_vals):.2%}" if wer_vals else " -" - mae_vals = [r.timestamp_mae for r in results if r.timestamp_mae is not None] - avg_mae_str = f"{sum(mae_vals)/len(mae_vals):.3f}" if mae_vals else " -" - print( - f"{'TOTAL/AVG':<40} {total_audio:>7.1f}s {total_time:>7.1f}s " - f"{avg_rtf:>5.2f}x {avg_wer_str:>7} {avg_mae_str:>7}" - ) - print(f"{'=' * 110}") - - # Print transcription excerpts - print("\nTRANSCRIPTIONS:") - print(f"{'-' * 110}") - for r in results: - excerpt = r.transcription[:120] + "..." if len(r.transcription) > 120 else r.transcription - print(f" {r.audio_file}:") - print(f" {excerpt}") - print(f"{'=' * 110}") - - -def detect_available_backends() -> List[dict]: - """Probe which backends can be imported and return (backend, policy) combos. - - Returns list of dicts with keys: backend, policy, description. - """ - combos = [] - - # faster-whisper - try: - import faster_whisper # noqa: F401 - combos.append({"backend": "faster-whisper", "policy": "localagreement", "description": "faster-whisper + LocalAgreement"}) - combos.append({"backend": "faster-whisper", "policy": "simulstreaming", "description": "faster-whisper + SimulStreaming"}) - except ImportError: - pass - - # mlx-whisper (macOS only) - try: - import mlx_whisper # noqa: F401 - combos.append({"backend": "mlx-whisper", "policy": "localagreement", "description": "mlx-whisper + LocalAgreement"}) - combos.append({"backend": "mlx-whisper", "policy": "simulstreaming", "description": "mlx-whisper + SimulStreaming"}) - except ImportError: - pass - - # openai-whisper - try: - import whisper # noqa: F401 - combos.append({"backend": "whisper", "policy": "localagreement", "description": "openai-whisper + LocalAgreement"}) - combos.append({"backend": "whisper", "policy": "simulstreaming", "description": "openai-whisper + SimulStreaming"}) - except ImportError: - pass - - # voxtral-mlx - try: - from whisperlivekit.voxtral_mlx import VoxtralMLXModel # noqa: F401 - combos.append({"backend": "voxtral-mlx", "policy": "voxtral", "description": "voxtral-mlx (MLX)"}) - except ImportError: - pass - - # voxtral (HuggingFace) - try: - from transformers import AutoModelForSpeechSeq2Seq # noqa: F401 - combos.append({"backend": "voxtral", "policy": "voxtral", "description": "voxtral (HuggingFace)"}) - except ImportError: - pass - - return combos - - -def print_cross_backend_comparison(all_results: List[TestResult]): - """Print a comparison table across backends and policies.""" - print(f"\n{'=' * 110}") - print("CROSS-BACKEND BENCHMARK COMPARISON") - print(f"{'=' * 110}") - print( - f"{'Backend':<18} {'Policy':<16} {'File':<30} " - f"{'WER':>7} {'RTF':>6} {'MAE(s)':>7} {'MaxΔ(s)':>8}" - ) - print(f"{'-' * 110}") - - for r in all_results: - wer_str = f"{r.wer:.2%}" if r.wer is not None else " -" - rtf_str = f"{r.rtf:.2f}x" - mae_str = f"{r.timestamp_mae:.3f}" if r.timestamp_mae is not None else " -" - max_str = f"{r.timestamp_max_delta:.3f}" if r.timestamp_max_delta is not None else " -" - # Truncate filename for readability - fname = r.audio_file[:28] + ".." if len(r.audio_file) > 30 else r.audio_file - print( - f"{r.backend:<18} {r.policy:<16} {fname:<30} " - f"{wer_str:>7} {rtf_str:>6} {mae_str:>7} {max_str:>8}" - ) - - print(f"{'-' * 110}") - - # Per-backend averages - from collections import defaultdict - by_combo = defaultdict(list) - for r in all_results: - by_combo[(r.backend, r.policy)].append(r) - - print(f"\n{'Backend':<18} {'Policy':<16} {'Avg WER':>8} {'Avg RTF':>8} {'Avg MAE':>8} {'Files':>6}") - print(f"{'-' * 80}") - for (backend, policy), group in sorted(by_combo.items()): - wer_vals = [r.wer for r in group if r.wer is not None] - rtf_vals = [r.rtf for r in group] - mae_vals = [r.timestamp_mae for r in group if r.timestamp_mae is not None] - avg_wer = f"{sum(wer_vals)/len(wer_vals):.2%}" if wer_vals else " -" - avg_rtf = f"{sum(rtf_vals)/len(rtf_vals):.2f}x" - avg_mae = f"{sum(mae_vals)/len(mae_vals):.3f}" if mae_vals else " -" - print( - f"{backend:<18} {policy:<16} {avg_wer:>8} {avg_rtf:>8} {avg_mae:>8} {len(group):>6}" - ) - print(f"{'=' * 110}") - - -def _quiet_loggers(verbose: bool): - """Set internal module log levels to reduce noise.""" - if verbose: - logging.getLogger().setLevel(logging.DEBUG) - else: - for mod in ( - "whisperlivekit.audio_processor", "whisperlivekit.simul_whisper", - "whisperlivekit.tokens_alignment", "whisperlivekit.simul_whisper.align_att_base", - "whisperlivekit.simul_whisper.simul_whisper", - ): - logging.getLogger(mod).setLevel(logging.WARNING) - - -async def run_benchmark( - audio_files: List[Path], chunk_ms: int, realtime: bool, - model_size: str, lan: str, max_duration: float, vac: bool, - verbose: bool, -) -> List[TestResult]: - """Run benchmark across all available backend+policy combinations.""" - combos = detect_available_backends() - if not combos: - logger.error("No backends available. Install at least one ASR backend.") - return [] - - logger.info(f"Detected {len(combos)} backend+policy combinations:") - for c in combos: - logger.info(f" - {c['description']}") - - all_results = [] - for i, combo in enumerate(combos, 1): - backend = combo["backend"] - policy = combo["policy"] - desc = combo["description"] - - print(f"\n{'*' * 70}") - print(f"* BENCHMARK {i}/{len(combos)}: {desc}") - print(f"{'*' * 70}") - - try: - engine = create_engine( - backend, model_size, lan, vac=vac, policy=policy, - ) - _quiet_loggers(verbose) - - results = await run_all_tests( - engine, audio_files, chunk_ms, realtime, - backend=backend, policy=policy, lan=lan, - max_duration=max_duration, - ) - all_results.extend(results) - except Exception as e: - logger.error(f"Failed to run {desc}: {e}") - import traceback - traceback.print_exc() - - return all_results - - -def main(): - parser = argparse.ArgumentParser( - description="Offline backend test harness (AudioProcessor-level)" - ) - parser.add_argument( - "--backend", default="faster-whisper", - help="Backend: voxtral, voxtral-mlx, auto, faster-whisper, mlx-whisper, whisper.", - ) - parser.add_argument( - "--policy", default="", - help="Override backend policy: localagreement, simulstreaming, voxtral.", - ) - parser.add_argument( - "--audio", default=None, - help="Path to a single audio file (WAV, MP3, FLAC, etc.).", - ) - parser.add_argument( - "--audio-dir", default=None, - help="Directory of audio files to test. Defaults to audio_tests/ if neither --audio nor --audio-dir given.", - ) - parser.add_argument( - "--chunk-ms", type=int, default=100, - help="Chunk size in milliseconds (simulates real-time interval).", - ) - parser.add_argument( - "--model", default="", dest="model_size", - help="Model size or HF repo ID.", - ) - parser.add_argument("--lan", default="en", help="Language code.") - parser.add_argument( - "--no-realtime", action="store_true", - help="Skip real-time pacing between chunks (faster but less realistic).", - ) - parser.add_argument( - "--no-vac", action="store_true", - help="Disable Voice Activity Classification (send all audio without silence filtering).", - ) - parser.add_argument( - "--diarization", action="store_true", - help="Enable speaker diarization.", - ) - parser.add_argument( - "--diarization-backend", - default="", - choices=["diart", "sortformer"], - help="Diarization backend when --diarization is enabled.", - ) - parser.add_argument( - "--benchmark", action="store_true", - help="Run benchmark across all detected backend+policy combinations.", - ) - parser.add_argument( - "--json", default=None, dest="json_output", - help="Write structured JSON results to this file.", - ) - parser.add_argument( - "--max-duration", type=float, default=60.0, - help="Skip audio files longer than this many seconds (default: 60).", - ) - parser.add_argument( - "--insert-silence", nargs=2, type=float, metavar=("SECS", "AT_SEC"), - action="append", default=[], - help="Insert SECS of silence at AT_SEC position. Can be repeated. " - "E.g.: --insert-silence 3.0 2.0 --insert-silence 5.0 7.0", - ) - parser.add_argument( - "-v", "--verbose", action="store_true", - help="Show debug-level logs from all components.", - ) - args = parser.parse_args() - - realtime = not args.no_realtime - vac = not args.no_vac - - # Resolve audio file(s) - if args.audio: - audio_files = [Path(args.audio)] - elif args.audio_dir: - audio_files = discover_audio_files(args.audio_dir) - elif AUDIO_TESTS_DIR.is_dir(): - audio_files = discover_audio_files(str(AUDIO_TESTS_DIR)) - else: - # Fall back to jfk.wav download - audio_files = [download_sample_audio()] - - if not audio_files: - logger.error("No audio files found.") - sys.exit(1) - - logger.info(f"Audio files: {[f.name for f in audio_files]}") - - if args.benchmark: - # --- Multi-backend benchmark mode --- - all_results = asyncio.run( - run_benchmark( - audio_files, args.chunk_ms, realtime, - args.model_size, args.lan, args.max_duration, vac, - args.verbose, - ) - ) - if all_results: - print_cross_backend_comparison(all_results) - results = all_results - else: - # --- Single-backend mode --- - policy = args.policy - logger.info(f"Creating {args.backend} engine...") - engine = create_engine( - args.backend, args.model_size, args.lan, - diarization=args.diarization, - diarization_backend=args.diarization_backend, - vac=vac, - policy=policy, - ) - logger.info("Engine ready.") - - _quiet_loggers(args.verbose) - - results = asyncio.run( - run_all_tests( - engine, audio_files, args.chunk_ms, realtime, - args.backend, policy, args.lan, - max_duration=args.max_duration, - silence_insertions=args.insert_silence or None, - ) - ) - - if len(results) > 1: - print_benchmark_summary(results) - - # JSON output - if args.json_output and results: - json_results = [] - for r in results: - d = asdict(r) - d.pop("last_response", None) # too verbose for summary - json_results.append(d) - Path(args.json_output).write_text( - json.dumps(json_results, indent=2, ensure_ascii=False) - ) - logger.info(f"Results written to {args.json_output}") - - -if __name__ == "__main__": - main() diff --git a/whisperlivekit/benchmark/__init__.py b/whisperlivekit/benchmark/__init__.py new file mode 100644 index 0000000..07e4571 --- /dev/null +++ b/whisperlivekit/benchmark/__init__.py @@ -0,0 +1,34 @@ +"""WhisperLiveKit benchmark suite. + +Comprehensive benchmarking of ASR backends using public datasets, +run through the same pipeline as real-time streaming. + +Usage: + wlk bench # benchmark current backend + wlk bench --backend whisper --json results.json + wlk bench --languages en,fr,es # multilingual + wlk bench --quick # fast subset + +Programmatic: + from whisperlivekit.benchmark import BenchmarkRunner + import asyncio + + runner = BenchmarkRunner(backend="whisper", model_size="base") + report = asyncio.run(runner.run()) + print(report.summary_table()) +""" + +from whisperlivekit.benchmark.datasets import ( + BENCHMARK_CATALOG, + get_benchmark_samples, +) +from whisperlivekit.benchmark.metrics import BenchmarkReport, SampleResult +from whisperlivekit.benchmark.runner import BenchmarkRunner + +__all__ = [ + "BENCHMARK_CATALOG", + "BenchmarkReport", + "BenchmarkRunner", + "SampleResult", + "get_benchmark_samples", +] diff --git a/whisperlivekit/benchmark/compat.py b/whisperlivekit/benchmark/compat.py new file mode 100644 index 0000000..024e770 --- /dev/null +++ b/whisperlivekit/benchmark/compat.py @@ -0,0 +1,105 @@ +"""Backend detection and language compatibility matrix.""" + +import logging +from typing import Dict, List, Optional, Set + +logger = logging.getLogger(__name__) + +# Language support per backend. +# None means all Whisper-supported languages. +# A set means only those languages are supported. +BACKEND_LANGUAGES: Dict[str, Optional[Set[str]]] = { + "whisper": None, + "faster-whisper": None, + "mlx-whisper": None, + "voxtral-mlx": None, + "voxtral": None, + "qwen3": { + "zh", "en", "yue", "ar", "de", "fr", "es", "pt", "id", "it", + "ko", "ru", "th", "vi", "ja", "tr", "hi", "ms", "nl", "sv", + "da", "fi", "pl", "cs", "fa", "el", "hu", "mk", "ro", + }, + "qwen3-simul": { + "zh", "en", "yue", "ar", "de", "fr", "es", "pt", "id", "it", + "ko", "ru", "th", "vi", "ja", "tr", "hi", "ms", "nl", "sv", + "da", "fi", "pl", "cs", "fa", "el", "hu", "mk", "ro", + }, +} + + +def backend_supports_language(backend: str, language: str) -> bool: + """Check if a backend supports a given language code.""" + langs = BACKEND_LANGUAGES.get(backend) + if langs is None: + return True + return language in langs + + +def detect_available_backends() -> List[str]: + """Probe which ASR backends are importable.""" + backends = [] + + try: + import whisper # noqa: F401 + backends.append("whisper") + except ImportError: + pass + + try: + import faster_whisper # noqa: F401 + backends.append("faster-whisper") + except ImportError: + pass + + try: + import mlx_whisper # noqa: F401 + backends.append("mlx-whisper") + except ImportError: + pass + + try: + import mlx.core # noqa: F401 + from whisperlivekit.voxtral_mlx.loader import load_voxtral_model # noqa: F401 + backends.append("voxtral-mlx") + except ImportError: + pass + + try: + from transformers import VoxtralRealtimeForConditionalGeneration # noqa: F401 + backends.append("voxtral") + except ImportError: + pass + + try: + from whisperlivekit.qwen3_asr import _patch_transformers_compat + _patch_transformers_compat() + from qwen_asr import Qwen3ASRModel # noqa: F401 + backends.append("qwen3") + backends.append("qwen3-simul") + except (ImportError, Exception): + pass + + return backends + + +def resolve_backend(backend: str) -> str: + """Resolve 'auto' to the best available backend.""" + if backend != "auto": + return backend + + available = detect_available_backends() + if not available: + raise RuntimeError( + "No ASR backend available. Install at least one: " + "pip install openai-whisper, faster-whisper, or mlx-whisper" + ) + + # Priority order + priority = [ + "faster-whisper", "mlx-whisper", "voxtral-mlx", "voxtral", + "qwen3", "qwen3-simul", "whisper", + ] + for p in priority: + if p in available: + return p + return available[0] diff --git a/whisperlivekit/benchmark/datasets.py b/whisperlivekit/benchmark/datasets.py new file mode 100644 index 0000000..e761a15 --- /dev/null +++ b/whisperlivekit/benchmark/datasets.py @@ -0,0 +1,561 @@ +"""Benchmark audio datasets from public HuggingFace repositories. + +Downloads curated samples across languages, noise conditions, and speaker +configurations. All datasets are public and freely accessible — no auth +tokens required. + +Samples are cached in ~/.cache/whisperlivekit/benchmark_data/ and reused +across benchmark runs. + +Datasets used: + - LibriSpeech test-clean (English, clean, single speaker) + - LibriSpeech test-other (English, noisy/hard, single speaker) + - Multilingual LibriSpeech (French, Spanish, German, Portuguese, Italian, Polish, Dutch) + - AMI (English, multi-speaker meeting) +""" + +import json +import logging +import wave +from dataclasses import dataclass, field +from pathlib import Path +from typing import Dict, List, Optional, Set + +import numpy as np + +logger = logging.getLogger(__name__) + +CACHE_DIR = Path.home() / ".cache" / "whisperlivekit" / "benchmark_data" +METADATA_FILE = "benchmark_metadata.json" + + +@dataclass +class BenchmarkSample: + """A benchmark audio sample with metadata and ground truth.""" + + name: str + path: str + reference: str + duration: float + language: str + category: str # "clean", "noisy", "multilingual", "meeting" + sample_rate: int = 16000 + n_speakers: int = 1 + source: str = "" + tags: Set[str] = field(default_factory=set) + + def to_dict(self) -> Dict: + return { + "name": self.name, + "file": Path(self.path).name, + "reference": self.reference, + "duration": self.duration, + "language": self.language, + "category": self.category, + "sample_rate": self.sample_rate, + "n_speakers": self.n_speakers, + "source": self.source, + "tags": list(self.tags), + } + + +# --------------------------------------------------------------------------- +# Dataset catalog — defines what to download +# --------------------------------------------------------------------------- + +BENCHMARK_CATALOG = { + # English clean (LibriSpeech test-clean) + "en_clean_short": { + "dataset": "openslr/librispeech_asr", + "config": "clean", + "split": "test", + "language": "en", + "category": "clean", + "n_samples": 1, + "skip": 0, + "tags": {"short"}, + }, + "en_clean_medium": { + "dataset": "openslr/librispeech_asr", + "config": "clean", + "split": "test", + "language": "en", + "category": "clean", + "n_samples": 1, + "skip": 1, + "tags": {"medium"}, + }, + # English noisy (LibriSpeech test-other) + "en_noisy_1": { + "dataset": "openslr/librispeech_asr", + "config": "other", + "split": "test", + "language": "en", + "category": "noisy", + "n_samples": 1, + "skip": 0, + "tags": {"accented"}, + }, + "en_noisy_2": { + "dataset": "openslr/librispeech_asr", + "config": "other", + "split": "test", + "language": "en", + "category": "noisy", + "n_samples": 1, + "skip": 1, + "tags": {"accented"}, + }, + # French (Multilingual LibriSpeech) + "fr_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "french", + "split": "test", + "language": "fr", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + "fr_clean_2": { + "dataset": "facebook/multilingual_librispeech", + "config": "french", + "split": "test", + "language": "fr", + "category": "multilingual", + "n_samples": 1, + "skip": 1, + "tags": set(), + }, + # Spanish (Multilingual LibriSpeech) + "es_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "spanish", + "split": "test", + "language": "es", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # German (Multilingual LibriSpeech) + "de_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "german", + "split": "test", + "language": "de", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # Portuguese (Multilingual LibriSpeech) + "pt_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "portuguese", + "split": "test", + "language": "pt", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # Italian (Multilingual LibriSpeech) + "it_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "italian", + "split": "test", + "language": "it", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # Polish (Multilingual LibriSpeech) + "pl_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "polish", + "split": "test", + "language": "pl", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # Dutch (Multilingual LibriSpeech) + "nl_clean_1": { + "dataset": "facebook/multilingual_librispeech", + "config": "dutch", + "split": "test", + "language": "nl", + "category": "multilingual", + "n_samples": 1, + "skip": 0, + "tags": set(), + }, + # English multi-speaker meeting (AMI) + "en_meeting": { + "dataset": "edinburghcstr/ami", + "config": "ihm", + "split": "test", + "language": "en", + "category": "meeting", + "n_samples": 1, + "skip": 0, + "tags": {"multi_speaker", "long"}, + "max_duration": 60.0, + }, +} + +# Quick mode: subset of samples for fast smoke tests +QUICK_SAMPLES = {"en_clean_short", "en_clean_medium", "en_noisy_1", "fr_clean_1"} + + +# --------------------------------------------------------------------------- +# Audio utilities +# --------------------------------------------------------------------------- + +def _save_wav(path: Path, audio: np.ndarray, sample_rate: int = 16000) -> None: + if audio.ndim > 1: + audio = audio.mean(axis=-1) + if audio.dtype in (np.float32, np.float64): + audio = np.clip(audio, -1.0, 1.0) + audio = (audio * 32767).astype(np.int16) + elif audio.dtype != np.int16: + audio = audio.astype(np.int16) + path.parent.mkdir(parents=True, exist_ok=True) + with wave.open(str(path), "w") as wf: + wf.setnchannels(1) + wf.setsampwidth(2) + wf.setframerate(sample_rate) + wf.writeframes(audio.tobytes()) + + +def _decode_audio(audio_bytes: bytes) -> tuple: + import io + import soundfile as sf + audio_array, sr = sf.read(io.BytesIO(audio_bytes), dtype="float32") + return np.array(audio_array, dtype=np.float32), sr + + +def _ensure_datasets(): + try: + import datasets # noqa: F401 + except ImportError: + raise ImportError( + "The 'datasets' package is required for benchmark data. " + "Install with: pip install whisperlivekit[test]" + ) + + +# --------------------------------------------------------------------------- +# Download functions per dataset type +# --------------------------------------------------------------------------- + +def _download_librispeech(config: str, n_samples: int, skip: int, + category: str, language: str, + prefix: str) -> List[Dict]: + """Download from openslr/librispeech_asr (clean or other).""" + _ensure_datasets() + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info("Downloading LibriSpeech %s samples...", config) + ds = load_dataset( + "openslr/librispeech_asr", config, split="test", streaming=True, + ) + ds = ds.cast_column("audio", Audio(decode=False)) + + samples = [] + for i, item in enumerate(ds): + if i < skip: + continue + if len(samples) >= n_samples: + break + + audio_array, sr = _decode_audio(item["audio"]["bytes"]) + duration = len(audio_array) / sr + text = item["text"] + + wav_name = f"{prefix}_{i}.wav" + _save_wav(CACHE_DIR / wav_name, audio_array, sr) + + samples.append({ + "file": wav_name, + "reference": text, + "duration": round(duration, 2), + "sample_rate": sr, + "language": language, + "category": category, + "n_speakers": 1, + "source": f"openslr/librispeech_asr ({config})", + }) + logger.info(" %.1fs - %s", duration, text[:60]) + + return samples + + +def _download_mls(config: str, n_samples: int, skip: int, + language: str, prefix: str) -> List[Dict]: + """Download from facebook/multilingual_librispeech.""" + _ensure_datasets() + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info("Downloading MLS %s samples...", config) + ds = load_dataset( + "facebook/multilingual_librispeech", config, split="test", streaming=True, + ) + ds = ds.cast_column("audio", Audio(decode=False)) + + samples = [] + for i, item in enumerate(ds): + if i < skip: + continue + if len(samples) >= n_samples: + break + + audio_array, sr = _decode_audio(item["audio"]["bytes"]) + duration = len(audio_array) / sr + text = item.get("text", item.get("transcript", "")) + + wav_name = f"{prefix}_{i}.wav" + _save_wav(CACHE_DIR / wav_name, audio_array, sr) + + samples.append({ + "file": wav_name, + "reference": text, + "duration": round(duration, 2), + "sample_rate": sr, + "language": language, + "category": "multilingual", + "n_speakers": 1, + "source": f"facebook/multilingual_librispeech ({config})", + }) + logger.info(" [%s] %.1fs - %s", language, duration, text[:60]) + + return samples + + +def _download_fleurs(config: str, n_samples: int, skip: int, + language: str, prefix: str) -> List[Dict]: + """Download from google/fleurs.""" + _ensure_datasets() + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info("Downloading FLEURS %s samples...", config) + ds = load_dataset( + "google/fleurs", config, split="test", streaming=True, + ) + ds = ds.cast_column("audio", Audio(decode=False)) + + samples = [] + for i, item in enumerate(ds): + if i < skip: + continue + if len(samples) >= n_samples: + break + + audio_array, sr = _decode_audio(item["audio"]["bytes"]) + duration = len(audio_array) / sr + text = item.get("transcription", item.get("raw_transcription", "")) + + wav_name = f"{prefix}_{i}.wav" + _save_wav(CACHE_DIR / wav_name, audio_array, sr) + + samples.append({ + "file": wav_name, + "reference": text, + "duration": round(duration, 2), + "sample_rate": sr, + "language": language, + "category": "multilingual", + "n_speakers": 1, + "source": f"google/fleurs ({config})", + }) + logger.info(" [%s] %.1fs - %s", language, duration, text[:60]) + + return samples + + +def _download_ami(max_duration: float = 60.0) -> List[Dict]: + """Download one AMI meeting segment with multiple speakers.""" + _ensure_datasets() + import datasets.config + datasets.config.TORCHCODEC_AVAILABLE = False + from datasets import Audio, load_dataset + + logger.info("Downloading AMI meeting sample...") + ds = load_dataset("edinburghcstr/ami", "ihm", split="test", streaming=True) + ds = ds.cast_column("audio", Audio(decode=False)) + + meeting_id = None + audio_arrays = [] + texts = [] + sample_rate = None + + for item in ds: + mid = item.get("meeting_id", "unknown") + if meeting_id is None: + meeting_id = mid + elif mid != meeting_id: + break + + audio_array, sr = _decode_audio(item["audio"]["bytes"]) + sample_rate = sr + texts.append(item.get("text", "")) + audio_arrays.append(audio_array) + + total_dur = sum(len(a) / sr for a in audio_arrays) + if total_dur > max_duration: + break + + if not audio_arrays: + return [] + + full_audio = np.concatenate(audio_arrays) + duration = len(full_audio) / sample_rate + reference = " ".join(t for t in texts if t) + + wav_name = "ami_meeting.wav" + _save_wav(CACHE_DIR / wav_name, full_audio, sample_rate) + + logger.info(" AMI meeting: %.1fs, %d utterances", duration, len(texts)) + return [{ + "file": wav_name, + "reference": reference, + "duration": round(duration, 2), + "sample_rate": sample_rate, + "language": "en", + "category": "meeting", + "n_speakers": 4, + "source": f"edinburghcstr/ami (ihm, meeting {meeting_id})", + }] + + +# --------------------------------------------------------------------------- +# Dispatcher — routes catalog entries to download functions +# --------------------------------------------------------------------------- + +def _download_catalog_entry(name: str, spec: Dict) -> List[Dict]: + """Download a single catalog entry and return metadata dicts.""" + dataset = spec["dataset"] + config = spec.get("config", "") + n_samples = spec.get("n_samples", 1) + skip = spec.get("skip", 0) + language = spec["language"] + category = spec["category"] + + if dataset == "openslr/librispeech_asr": + return _download_librispeech( + config=config, n_samples=n_samples, skip=skip, + category=category, language=language, prefix=name, + ) + elif dataset == "facebook/multilingual_librispeech": + return _download_mls( + config=config, n_samples=n_samples, skip=skip, + language=language, prefix=name, + ) + elif dataset == "google/fleurs": + return _download_fleurs( + config=config, n_samples=n_samples, skip=skip, + language=language, prefix=name, + ) + elif dataset == "edinburghcstr/ami": + return _download_ami(max_duration=spec.get("max_duration", 60.0)) + else: + logger.warning("Unknown dataset: %s", dataset) + return [] + + +# --------------------------------------------------------------------------- +# Public API +# --------------------------------------------------------------------------- + +def get_benchmark_samples( + languages: Optional[List[str]] = None, + categories: Optional[List[str]] = None, + quick: bool = False, + force: bool = False, +) -> List[BenchmarkSample]: + """Download and return benchmark samples, filtered by language/category. + + Args: + languages: List of language codes to include (None = all). + categories: List of categories to include (None = all). + quick: If True, only download a small subset for smoke tests. + force: Re-download even if cached. + + Returns: + List of BenchmarkSample objects ready for benchmarking. + """ + CACHE_DIR.mkdir(parents=True, exist_ok=True) + meta_path = CACHE_DIR / METADATA_FILE + + # Load cached metadata + cached = {} + if meta_path.exists() and not force: + cached = json.loads(meta_path.read_text()) + + # Determine which entries to download + entries = BENCHMARK_CATALOG + if quick: + entries = {k: v for k, v in entries.items() if k in QUICK_SAMPLES} + + if languages: + lang_set = set(languages) + entries = {k: v for k, v in entries.items() if v["language"] in lang_set} + + if categories: + cat_set = set(categories) + entries = {k: v for k, v in entries.items() if v["category"] in cat_set} + + # Download missing entries + all_meta = cached.get("samples", {}) + for name, spec in entries.items(): + if name in all_meta and not force: + # Check file exists + file_path = CACHE_DIR / all_meta[name][0]["file"] + if file_path.exists(): + continue + + logger.info("Downloading benchmark sample: %s", name) + try: + downloaded = _download_catalog_entry(name, spec) + if downloaded: + all_meta[name] = downloaded + except Exception as e: + logger.warning("Failed to download %s: %s", name, e) + + # Save metadata + meta_path.write_text(json.dumps({"samples": all_meta}, indent=2)) + + # Build BenchmarkSample objects + samples = [] + for name, spec in entries.items(): + if name not in all_meta: + continue + for meta in all_meta[name]: + file_path = CACHE_DIR / meta["file"] + if not file_path.exists(): + continue + catalog_entry = BENCHMARK_CATALOG.get(name, {}) + samples.append(BenchmarkSample( + name=name, + path=str(file_path), + reference=meta["reference"], + duration=meta["duration"], + language=meta["language"], + category=meta["category"], + sample_rate=meta.get("sample_rate", 16000), + n_speakers=meta.get("n_speakers", 1), + source=meta.get("source", ""), + tags=set(catalog_entry.get("tags", set())), + )) + + logger.info("Loaded %d benchmark samples", len(samples)) + return samples diff --git a/whisperlivekit/benchmark/metrics.py b/whisperlivekit/benchmark/metrics.py new file mode 100644 index 0000000..100701a --- /dev/null +++ b/whisperlivekit/benchmark/metrics.py @@ -0,0 +1,273 @@ +"""Benchmark result data structures and aggregation.""" + +import platform +import subprocess +import time +from dataclasses import dataclass, field +from typing import Any, Dict, List, Optional + + +@dataclass +class SampleResult: + """Result from benchmarking one audio sample.""" + + sample_name: str + language: str + category: str + duration_s: float + + # Quality + wer: float + wer_details: Dict[str, int] + + # Speed + processing_time_s: float + rtf: float + + # Latency (from SessionMetrics) + avg_latency_ms: float = 0.0 + p95_latency_ms: float = 0.0 + n_transcription_calls: int = 0 + + # Pipeline stats + n_lines: int = 0 + n_tokens: int = 0 + + # Timing quality + timing_valid: bool = True + timing_monotonic: bool = True + + # Memory + peak_memory_mb: Optional[float] = None + + # Texts + hypothesis: str = "" + reference: str = "" + + # Source + source: str = "" + tags: List[str] = field(default_factory=list) + + def to_dict(self) -> Dict[str, Any]: + return { + "sample": self.sample_name, + "language": self.language, + "category": self.category, + "duration_s": round(self.duration_s, 2), + "wer": round(self.wer, 4), + "wer_details": self.wer_details, + "processing_time_s": round(self.processing_time_s, 2), + "rtf": round(self.rtf, 3), + "avg_latency_ms": round(self.avg_latency_ms, 1), + "p95_latency_ms": round(self.p95_latency_ms, 1), + "n_transcription_calls": self.n_transcription_calls, + "n_lines": self.n_lines, + "n_tokens": self.n_tokens, + "timing_valid": self.timing_valid, + "timing_monotonic": self.timing_monotonic, + "peak_memory_mb": round(self.peak_memory_mb, 1) if self.peak_memory_mb else None, + "hypothesis": self.hypothesis, + "reference": self.reference, + "source": self.source, + "tags": self.tags, + } + + +@dataclass +class BenchmarkReport: + """Aggregated benchmark report with system info and per-sample results.""" + + backend: str + model_size: str + timestamp: str = field(default_factory=lambda: time.strftime("%Y-%m-%dT%H:%M:%S")) + system_info: Dict[str, Any] = field(default_factory=dict) + results: List[SampleResult] = field(default_factory=list) + + # --- Aggregate properties --- + + @property + def n_samples(self) -> int: + return len(self.results) + + @property + def total_audio_s(self) -> float: + return sum(r.duration_s for r in self.results) + + @property + def total_processing_s(self) -> float: + return sum(r.processing_time_s for r in self.results) + + @property + def avg_wer(self) -> float: + if not self.results: + return 0.0 + return sum(r.wer for r in self.results) / len(self.results) + + @property + def weighted_wer(self) -> float: + """Micro-averaged WER: total errors / total reference words.""" + total_errors = sum( + r.wer_details.get("substitutions", 0) + + r.wer_details.get("insertions", 0) + + r.wer_details.get("deletions", 0) + for r in self.results + ) + total_ref = sum(r.wer_details.get("ref_words", 0) for r in self.results) + return total_errors / max(total_ref, 1) + + @property + def avg_rtf(self) -> float: + if not self.results: + return 0.0 + return sum(r.rtf for r in self.results) / len(self.results) + + @property + def overall_rtf(self) -> float: + if self.total_audio_s <= 0: + return 0.0 + return self.total_processing_s / self.total_audio_s + + @property + def avg_latency_ms(self) -> float: + vals = [r.avg_latency_ms for r in self.results if r.avg_latency_ms > 0] + return sum(vals) / len(vals) if vals else 0.0 + + @property + def p95_latency_ms(self) -> float: + vals = [r.p95_latency_ms for r in self.results if r.p95_latency_ms > 0] + return sum(vals) / len(vals) if vals else 0.0 + + # --- Per-dimension breakdowns --- + + def _group_by(self, key: str) -> Dict[str, List[SampleResult]]: + groups: Dict[str, List[SampleResult]] = {} + for r in self.results: + k = getattr(r, key, "unknown") + groups.setdefault(k, []).append(r) + return groups + + def wer_by_language(self) -> Dict[str, float]: + return { + lang: sum(r.wer for r in group) / len(group) + for lang, group in sorted(self._group_by("language").items()) + } + + def rtf_by_language(self) -> Dict[str, float]: + return { + lang: sum(r.rtf for r in group) / len(group) + for lang, group in sorted(self._group_by("language").items()) + } + + def wer_by_category(self) -> Dict[str, float]: + return { + cat: sum(r.wer for r in group) / len(group) + for cat, group in sorted(self._group_by("category").items()) + } + + @property + def languages(self) -> List[str]: + return sorted(set(r.language for r in self.results)) + + @property + def categories(self) -> List[str]: + return sorted(set(r.category for r in self.results)) + + def to_dict(self) -> Dict[str, Any]: + return { + "benchmark_version": "1.0", + "timestamp": self.timestamp, + "system_info": self.system_info, + "config": { + "backend": self.backend, + "model_size": self.model_size, + }, + "summary": { + "n_samples": self.n_samples, + "total_audio_s": round(self.total_audio_s, 1), + "total_processing_s": round(self.total_processing_s, 1), + "avg_wer": round(self.avg_wer, 4), + "weighted_wer": round(self.weighted_wer, 4), + "avg_rtf": round(self.avg_rtf, 3), + "overall_rtf": round(self.overall_rtf, 3), + "avg_latency_ms": round(self.avg_latency_ms, 1), + "p95_latency_ms": round(self.p95_latency_ms, 1), + "wer_by_language": { + k: round(v, 4) for k, v in self.wer_by_language().items() + }, + "rtf_by_language": { + k: round(v, 3) for k, v in self.rtf_by_language().items() + }, + "wer_by_category": { + k: round(v, 4) for k, v in self.wer_by_category().items() + }, + }, + "results": [r.to_dict() for r in self.results], + } + + +def get_system_info() -> Dict[str, Any]: + """Collect system metadata for the benchmark report.""" + info: Dict[str, Any] = { + "platform": platform.platform(), + "machine": platform.machine(), + "python_version": platform.python_version(), + } + + # CPU info + try: + chip = subprocess.check_output( + ["sysctl", "-n", "machdep.cpu.brand_string"], text=True, + ).strip() + info["cpu"] = chip + except Exception: + info["cpu"] = platform.processor() + + # RAM + try: + mem_bytes = int( + subprocess.check_output(["sysctl", "-n", "hw.memsize"], text=True).strip() + ) + info["ram_gb"] = round(mem_bytes / (1024**3)) + except Exception: + try: + import os + pages = os.sysconf("SC_PHYS_PAGES") + page_size = os.sysconf("SC_PAGE_SIZE") + info["ram_gb"] = round(pages * page_size / (1024**3)) + except Exception: + info["ram_gb"] = None + + # Accelerator + try: + import torch + if torch.cuda.is_available(): + info["accelerator"] = torch.cuda.get_device_name(0) + elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available(): + info["accelerator"] = "Apple Silicon (MPS)" + else: + info["accelerator"] = "CPU" + except ImportError: + info["accelerator"] = "CPU" + + # Backend versions + versions = {} + for pkg, name in [ + ("faster_whisper", "faster-whisper"), + ("whisper", "openai-whisper"), + ("mlx_whisper", "mlx-whisper"), + ("transformers", "transformers"), + ("torch", "torch"), + ]: + try: + mod = __import__(pkg) + versions[name] = getattr(mod, "__version__", "installed") + except ImportError: + pass + try: + import mlx.core as mx + versions["mlx"] = mx.__version__ + except ImportError: + pass + + info["backend_versions"] = versions + return info diff --git a/whisperlivekit/benchmark/report.py b/whisperlivekit/benchmark/report.py new file mode 100644 index 0000000..56c1790 --- /dev/null +++ b/whisperlivekit/benchmark/report.py @@ -0,0 +1,161 @@ +"""Benchmark report formatting — terminal tables and JSON export.""" + +import json +import sys +from pathlib import Path +from typing import TextIO + +from whisperlivekit.benchmark.metrics import BenchmarkReport + +# ANSI color codes +GREEN = "\033[32m" +YELLOW = "\033[33m" +RED = "\033[31m" +CYAN = "\033[36m" +BOLD = "\033[1m" +DIM = "\033[2m" +RESET = "\033[0m" + + +def _wer_color(wer: float) -> str: + if wer < 0.15: + return GREEN + elif wer < 0.30: + return YELLOW + return RED + + +def _rtf_color(rtf: float) -> str: + if rtf < 0.5: + return GREEN + elif rtf < 1.0: + return YELLOW + return RED + + +def _lat_color(ms: float) -> str: + if ms < 500: + return GREEN + elif ms < 1000: + return YELLOW + return RED + + +def print_report(report: BenchmarkReport, out: TextIO = sys.stderr) -> None: + """Print a comprehensive benchmark report to the terminal.""" + w = out.write + + # Header + w(f"\n{BOLD} WhisperLiveKit Benchmark Report{RESET}\n") + w(f" {'─' * 72}\n") + + si = report.system_info + w(f" Backend: {CYAN}{report.backend}{RESET}\n") + w(f" Model: {report.model_size}\n") + w(f" Accelerator: {si.get('accelerator', 'unknown')}\n") + w(f" CPU: {si.get('cpu', 'unknown')}\n") + w(f" RAM: {si.get('ram_gb', '?')} GB\n") + w(f" Timestamp: {report.timestamp}\n") + w(f" {'─' * 72}\n\n") + + # Per-sample table + w(f" {BOLD}{'Sample':<20} {'Lang':>4} {'Dur':>5} {'WER':>7} " + f"{'RTF':>6} {'Lat(avg)':>8} {'Lat(p95)':>8} {'Calls':>5} {'Lines':>5}{RESET}\n") + w(f" {'─' * 72}\n") + + for r in report.results: + wc = _wer_color(r.wer) + rc = _rtf_color(r.rtf) + lc = _lat_color(r.avg_latency_ms) + + name = r.sample_name[:20] + w(f" {name:<20} {r.language:>4} {r.duration_s:>4.1f}s " + f"{wc}{r.wer * 100:>6.1f}%{RESET} " + f"{rc}{r.rtf:>5.2f}x{RESET} " + f"{lc}{r.avg_latency_ms:>7.0f}ms{RESET} " + f"{lc}{r.p95_latency_ms:>7.0f}ms{RESET} " + f"{r.n_transcription_calls:>5} {r.n_lines:>5}\n") + + # Timing warnings + if not r.timing_valid: + w(f" {' ' * 20} {RED}⚠ invalid timestamps{RESET}\n") + if not r.timing_monotonic: + w(f" {' ' * 20} {YELLOW}⚠ non-monotonic timestamps{RESET}\n") + + w(f" {'─' * 72}\n\n") + + # Summary + w(f" {BOLD}Summary{RESET} ({report.n_samples} samples, " + f"{report.total_audio_s:.1f}s total audio)\n\n") + + wc = _wer_color(report.avg_wer) + rc = _rtf_color(report.overall_rtf) + lc = _lat_color(report.avg_latency_ms) + + w(f" Avg WER (macro): {wc}{report.avg_wer * 100:>6.1f}%{RESET}\n") + w(f" Weighted WER: {_wer_color(report.weighted_wer)}" + f"{report.weighted_wer * 100:>6.1f}%{RESET}\n") + w(f" Overall RTF: {rc}{report.overall_rtf:>6.3f}x{RESET} " + f"({report.total_processing_s:.1f}s for {report.total_audio_s:.1f}s audio)\n") + w(f" Avg latency: {lc}{report.avg_latency_ms:>6.0f}ms{RESET}\n") + w(f" P95 latency: {_lat_color(report.p95_latency_ms)}" + f"{report.p95_latency_ms:>6.0f}ms{RESET}\n") + + # Per-language breakdown + wer_by_lang = report.wer_by_language() + rtf_by_lang = report.rtf_by_language() + if len(wer_by_lang) > 1: + w(f"\n {BOLD}By Language{RESET}\n") + w(f" {'─' * 40}\n") + w(f" {'Lang':>4} {'WER':>7} {'RTF':>6} {'Samples':>7}\n") + w(f" {'─' * 34}\n") + lang_groups = {} + for r in report.results: + lang_groups.setdefault(r.language, []).append(r) + for lang in sorted(lang_groups): + group = lang_groups[lang] + avg_wer = sum(r.wer for r in group) / len(group) + avg_rtf = sum(r.rtf for r in group) / len(group) + wc = _wer_color(avg_wer) + rc = _rtf_color(avg_rtf) + w(f" {lang:>4} {wc}{avg_wer * 100:>6.1f}%{RESET} " + f"{rc}{avg_rtf:>5.2f}x{RESET} {len(group):>7}\n") + + # Per-category breakdown + wer_by_cat = report.wer_by_category() + if len(wer_by_cat) > 1: + w(f"\n {BOLD}By Category{RESET}\n") + w(f" {'─' * 40}\n") + w(f" {'Category':>12} {'WER':>7} {'Samples':>7}\n") + w(f" {'─' * 30}\n") + cat_groups = {} + for r in report.results: + cat_groups.setdefault(r.category, []).append(r) + for cat in sorted(cat_groups): + group = cat_groups[cat] + avg_wer = sum(r.wer for r in group) / len(group) + wc = _wer_color(avg_wer) + w(f" {cat:>12} {wc}{avg_wer * 100:>6.1f}%{RESET} {len(group):>7}\n") + + w(f"\n {'─' * 72}\n\n") + + +def print_transcriptions(report: BenchmarkReport, out: TextIO = sys.stderr) -> None: + """Print hypothesis vs reference for each sample.""" + w = out.write + w(f"\n {BOLD}Transcriptions{RESET}\n") + w(f" {'─' * 72}\n") + for r in report.results: + wc = _wer_color(r.wer) + w(f"\n {BOLD}{r.sample_name}{RESET} ({r.language}, {r.category}) " + f"WER={wc}{r.wer * 100:.1f}%{RESET}\n") + ref = r.reference[:120] + "..." if len(r.reference) > 120 else r.reference + hyp = r.hypothesis[:120] + "..." if len(r.hypothesis) > 120 else r.hypothesis + w(f" {DIM}ref: {ref}{RESET}\n") + w(f" hyp: {hyp}\n") + w(f"\n {'─' * 72}\n\n") + + +def write_json(report: BenchmarkReport, path: str) -> None: + """Export the full report as JSON.""" + Path(path).write_text(json.dumps(report.to_dict(), indent=2, ensure_ascii=False)) diff --git a/whisperlivekit/benchmark/runner.py b/whisperlivekit/benchmark/runner.py new file mode 100644 index 0000000..99bdaf4 --- /dev/null +++ b/whisperlivekit/benchmark/runner.py @@ -0,0 +1,181 @@ +"""Benchmark runner — orchestrates runs through TestHarness.""" + +import logging +import resource +import time +from typing import Callable, List, Optional + +from whisperlivekit.benchmark.compat import backend_supports_language, resolve_backend +from whisperlivekit.benchmark.datasets import BenchmarkSample, get_benchmark_samples +from whisperlivekit.benchmark.metrics import BenchmarkReport, SampleResult, get_system_info + +logger = logging.getLogger(__name__) + + +class BenchmarkRunner: + """Orchestrates benchmark runs through TestHarness. + + Args: + backend: ASR backend name or "auto". + model_size: Model size (e.g. "base", "large-v3"). + languages: Language codes to benchmark (None = all available). + categories: Categories to benchmark (None = all). + quick: Use a small subset for fast smoke tests. + speed: Feed speed (0 = instant, 1.0 = real-time). + on_progress: Callback(sample_name, i, total) for progress updates. + """ + + def __init__( + self, + backend: str = "auto", + model_size: str = "base", + languages: Optional[List[str]] = None, + categories: Optional[List[str]] = None, + quick: bool = False, + speed: float = 0, + on_progress: Optional[Callable] = None, + ): + self.backend = resolve_backend(backend) + self.model_size = model_size + self.languages = languages + self.categories = categories + self.quick = quick + self.speed = speed + self.on_progress = on_progress + + async def run(self) -> BenchmarkReport: + """Run the full benchmark suite and return a report.""" + from whisperlivekit.metrics import compute_wer + from whisperlivekit.test_harness import TestHarness + + # Get samples + samples = get_benchmark_samples( + languages=self.languages, + categories=self.categories, + quick=self.quick, + ) + + # Filter by backend language support + compatible = [] + for s in samples: + if backend_supports_language(self.backend, s.language): + compatible.append(s) + else: + logger.info( + "Skipping %s (%s) — backend %s does not support %s", + s.name, s.language, self.backend, s.language, + ) + samples = compatible + + if not samples: + raise RuntimeError( + f"No benchmark samples available for backend={self.backend}, " + f"languages={self.languages}, categories={self.categories}" + ) + + # Build harness kwargs + harness_kwargs = { + "model_size": self.model_size, + "lan": "auto", # let the model auto-detect for multilingual + "pcm_input": True, + } + if self.backend not in ("auto",): + harness_kwargs["backend"] = self.backend + + report = BenchmarkReport( + backend=self.backend, + model_size=self.model_size, + system_info=get_system_info(), + ) + + for i, sample in enumerate(samples): + if self.on_progress: + self.on_progress(sample.name, i, len(samples)) + + result = await self._run_sample( + sample, harness_kwargs, compute_wer, + ) + report.results.append(result) + + if self.on_progress: + self.on_progress("done", len(samples), len(samples)) + + return report + + async def _run_sample( + self, + sample: BenchmarkSample, + harness_kwargs: dict, + compute_wer, + ) -> SampleResult: + """Benchmark a single sample through TestHarness.""" + from whisperlivekit.test_harness import TestHarness + + # Override language for the specific sample + kwargs = {**harness_kwargs, "lan": sample.language} + + # Memory before + mem_before = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss + + t_start = time.perf_counter() + + async with TestHarness(**kwargs) as h: + await h.feed(sample.path, speed=self.speed) + # Drain time scales with audio duration for slow backends + drain = max(5.0, sample.duration * 0.5) + await h.drain(drain) + state = await h.finish(timeout=120) + + # Extract metrics from the pipeline + metrics = h.metrics + + t_elapsed = time.perf_counter() - t_start + + # Memory after + mem_after = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss + # On macOS ru_maxrss is bytes, on Linux it's KB + import sys + divisor = 1024 * 1024 if sys.platform == "darwin" else 1024 + mem_delta = (mem_after - mem_before) / divisor + + # RTF + rtf = t_elapsed / sample.duration if sample.duration > 0 else 0 + + # WER + hypothesis = state.committed_text or state.text + wer_result = compute_wer(sample.reference, hypothesis) + + # Latency from SessionMetrics + avg_lat = metrics.avg_latency_ms if metrics else 0 + p95_lat = metrics.p95_latency_ms if metrics else 0 + n_calls = metrics.n_transcription_calls if metrics else 0 + n_tokens = metrics.n_tokens_produced if metrics else 0 + + return SampleResult( + sample_name=sample.name, + language=sample.language, + category=sample.category, + duration_s=sample.duration, + wer=wer_result["wer"], + wer_details={ + "substitutions": wer_result["substitutions"], + "insertions": wer_result["insertions"], + "deletions": wer_result["deletions"], + "ref_words": wer_result["ref_words"], + "hyp_words": wer_result["hyp_words"], + }, + processing_time_s=round(t_elapsed, 2), + rtf=round(rtf, 3), + avg_latency_ms=round(avg_lat, 1), + p95_latency_ms=round(p95_lat, 1), + n_transcription_calls=n_calls, + n_lines=len(state.speech_lines), + n_tokens=n_tokens, + timing_valid=state.timing_valid, + timing_monotonic=state.timing_monotonic, + peak_memory_mb=round(mem_delta, 1) if mem_delta > 0 else None, + hypothesis=hypothesis, + reference=sample.reference, + source=sample.source, + tags=list(sample.tags), + ) diff --git a/whisperlivekit/cli.py b/whisperlivekit/cli.py index 7c8dc98..9feb2a4 100644 --- a/whisperlivekit/cli.py +++ b/whisperlivekit/cli.py @@ -690,7 +690,11 @@ def _subtitle_timestamp(seconds: float, fmt: str) -> str: # --------------------------------------------------------------------------- def cmd_bench(args: list): - """Benchmark the transcription pipeline on standard test audio. + """Benchmark the transcription pipeline on public test audio. + + Downloads samples from LibriSpeech, Multilingual LibriSpeech, FLEURS, + and AMI on first run. Supports multilingual benchmarking across all + available backends. Usage: wlk bench [options] """ @@ -698,27 +702,48 @@ def cmd_bench(args: list): parser = argparse.ArgumentParser( prog="wlk bench", - description="Benchmark WhisperLiveKit on standard test audio.", + description="Benchmark WhisperLiveKit on public test audio.", ) - parser.add_argument("--backend", default="auto", help="ASR backend (default: auto)") - parser.add_argument("--model", default="base", dest="model_size", help="Model size (default: base)") - parser.add_argument("--language", "--lan", default="en", dest="lan", help="Language code (default: en)") - parser.add_argument("--samples", default="all", help="Sample name or 'all' (default: all)") - parser.add_argument("--json", default=None, dest="json_out", help="Export results to JSON file") - parser.add_argument("--verbose", "-v", action="store_true", help="Show detailed logs") + parser.add_argument("--backend", default="auto", + help="ASR backend (default: auto-detect)") + parser.add_argument("--model", default="base", dest="model_size", + help="Model size (default: base)") + parser.add_argument("--languages", "--lan", default=None, + help="Comma-separated language codes, or 'all' (default: en)") + parser.add_argument("--categories", default=None, + help="Comma-separated categories: clean,noisy,multilingual,meeting") + parser.add_argument("--quick", action="store_true", + help="Quick mode: small subset for smoke tests") + parser.add_argument("--json", default=None, dest="json_out", + help="Export full report to JSON file") + parser.add_argument("--transcriptions", action="store_true", + help="Show hypothesis vs reference for each sample") + parser.add_argument("--verbose", "-v", action="store_true", + help="Show detailed logs") parsed = parser.parse_args(args) + # Parse languages + languages = None + if parsed.languages and parsed.languages != "all": + languages = [l.strip() for l in parsed.languages.split(",")] + elif parsed.languages is None: + languages = ["en"] # default to English only + + categories = None + if parsed.categories: + categories = [c.strip() for c in parsed.categories.split(",")] + import asyncio if not parsed.verbose: - asyncio.run(_run_bench_quiet(parsed)) - else: - asyncio.run(_run_bench(parsed)) + _suppress_logging() + + asyncio.run(_run_bench_new(parsed, languages, categories)) -async def _run_bench_quiet(parsed): - """Run benchmark with suppressed logging.""" +def _suppress_logging(): + """Suppress noisy logs during benchmark.""" import warnings warnings.filterwarnings("ignore") logging.root.setLevel(logging.ERROR) @@ -726,130 +751,42 @@ async def _run_bench_quiet(parsed): handler.setLevel(logging.ERROR) for name in list(logging.Logger.manager.loggerDict.keys()): logging.getLogger(name).setLevel(logging.ERROR) - await _run_bench(parsed) -async def _run_bench(parsed): - """Run the benchmark.""" - import json as json_module - import time +async def _run_bench_new(parsed, languages, categories): + """Run the benchmark using the new benchmark module.""" + from whisperlivekit.benchmark.report import print_report, print_transcriptions, write_json + from whisperlivekit.benchmark.runner import BenchmarkRunner - from whisperlivekit.metrics import compute_wer - from whisperlivekit.test_data import get_sample, get_samples - from whisperlivekit.test_harness import TestHarness + def on_progress(name, i, total): + if name == "done": + print(f"\r [{total}/{total}] Done.{' ' * 30}", file=sys.stderr) + else: + print(f"\r [{i + 1}/{total}] {name}...{' ' * 20}", + end="", file=sys.stderr, flush=True) - # Determine samples to run - if parsed.samples == "all": - print(" Downloading test samples (first run only)...", file=sys.stderr) - samples = get_samples() - # Filter to matching language - samples = [s for s in samples if s.language == parsed.lan] - if not samples: - # Fall back to all samples if none match the language - samples = get_samples() - else: - samples = [get_sample(parsed.samples)] + runner = BenchmarkRunner( + backend=parsed.backend, + model_size=parsed.model_size, + languages=languages, + categories=categories, + quick=parsed.quick, + on_progress=on_progress, + ) - backend_label = parsed.backend - if backend_label == "auto": - backend_label = "auto-detect" + print(f"\n Downloading benchmark samples (cached after first run)...", + file=sys.stderr) - print(file=sys.stderr) - print(" WhisperLiveKit Benchmark", file=sys.stderr) - print(f" Backend: {backend_label} | Model: {parsed.model_size} | Language: {parsed.lan}", file=sys.stderr) - print(f" Samples: {len(samples)}", file=sys.stderr) - print(f" {'─' * 70}", file=sys.stderr) + report = await runner.run() - results = [] + print_report(report) - kwargs = { - "model_size": parsed.model_size, - "lan": parsed.lan, - "pcm_input": True, - } - if parsed.backend != "auto": - kwargs["backend"] = parsed.backend + if parsed.transcriptions: + print_transcriptions(report) - for sample in samples: - print(f"\n {sample.name} ({sample.duration:.1f}s, {sample.language})", file=sys.stderr) - - t_start = time.perf_counter() - - async with TestHarness(**kwargs) as h: - await h.feed(sample.path, speed=0) - await h.drain(5.0) - state = await h.finish(timeout=120) - - t_elapsed = time.perf_counter() - t_start - rtf = t_elapsed / sample.duration if sample.duration > 0 else 0 - - # Compute WER - hypothesis = state.committed_text or state.text - wer_result = compute_wer(sample.reference, hypothesis) - - n_lines = len(state.speech_lines) - - result_entry = { - "sample": sample.name, - "duration_s": round(sample.duration, 2), - "processing_time_s": round(t_elapsed, 2), - "rtf": round(rtf, 3), - "wer": round(wer_result["wer"], 4), - "wer_details": { - "substitutions": wer_result["substitutions"], - "insertions": wer_result["insertions"], - "deletions": wer_result["deletions"], - "ref_words": wer_result["ref_words"], - "hyp_words": wer_result["hyp_words"], - }, - "n_lines": n_lines, - "transcription": hypothesis, - } - results.append(result_entry) - - # Print per-sample result - wer_pct = wer_result["wer"] * 100 - wer_color = "\033[32m" if wer_pct < 15 else "\033[33m" if wer_pct < 30 else "\033[31m" - rtf_color = "\033[32m" if rtf < 0.5 else "\033[33m" if rtf < 1.0 else "\033[31m" - - print(f" WER: {wer_color}{wer_pct:5.1f}%\033[0m " - f"(S:{wer_result['substitutions']} I:{wer_result['insertions']} D:{wer_result['deletions']})", - file=sys.stderr) - print(f" RTF: {rtf_color}{rtf:.3f}x\033[0m " - f"({t_elapsed:.1f}s for {sample.duration:.1f}s audio)", - file=sys.stderr) - print(f" Lines: {n_lines}", - file=sys.stderr) - - # Summary - if len(results) > 1: - avg_wer = sum(r["wer"] for r in results) / len(results) - avg_rtf = sum(r["rtf"] for r in results) / len(results) - total_audio = sum(r["duration_s"] for r in results) - total_proc = sum(r["processing_time_s"] for r in results) - - print(f"\n {'─' * 70}", file=sys.stderr) - print(f" Summary ({len(results)} samples, {total_audio:.1f}s total audio)", file=sys.stderr) - wer_color = "\033[32m" if avg_wer * 100 < 15 else "\033[33m" if avg_wer * 100 < 30 else "\033[31m" - rtf_color = "\033[32m" if avg_rtf < 0.5 else "\033[33m" if avg_rtf < 1.0 else "\033[31m" - print(f" Avg WER: {wer_color}{avg_wer * 100:5.1f}%\033[0m", file=sys.stderr) - print(f" Avg RTF: {rtf_color}{avg_rtf:.3f}x\033[0m " - f"({total_proc:.1f}s for {total_audio:.1f}s audio)", file=sys.stderr) - - print(file=sys.stderr) - - # JSON export if parsed.json_out: - export = { - "backend": parsed.backend, - "model_size": parsed.model_size, - "language": parsed.lan, - "accelerator": _gpu_info(), - "results": results, - } - with open(parsed.json_out, "w") as f: - json_module.dump(export, f, indent=2) - print(f" Results exported to: {parsed.json_out}", file=sys.stderr) + write_json(report, parsed.json_out) + print(f" Results exported to: {parsed.json_out}\n", file=sys.stderr) # ---------------------------------------------------------------------------

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%0D}c@R9a8IY+~rG%eKNT4kTSu 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