Spaces:
Running on Zero
Running on Zero
| title: FluentWhisper | |
| emoji: ☕ | |
| colorFrom: yellow | |
| colorTo: gray | |
| sdk: gradio | |
| sdk_version: 5.49.1 | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| suggested_hardware: zero-a10g | |
| tags: | |
| - track:backyard | |
| - sponsor:modal | |
| - achievement:offgrid | |
| - achievement:welltuned | |
| - achievement:offbrand | |
| - achievement:fieldnotes | |
| # FluentWhisper | |
| **Speak messy. Read clean.** | |
| A small LoRA adapter that teaches whisper-large-v3-turbo to take the fillers, repeats, | |
| and false starts out of raw speech in one local pass, then show you exactly what it | |
| removed next to the vanilla model. | |
| It runs on the laptop you already own. No API keys, no cloud round trip, no frontier | |
| model sitting in the loop. That makes it a workable alternative to cloud dictation for | |
| anyone who talks faster than they edit, especially non-native English speakers. | |
| As of June 2026, to our knowledge it is the only Apache-2.0, commercially usable | |
| open-source model that removes filled pauses, discourse markers, repetitions, and | |
| self-repairs end to end. On the DisfluencySpeech test split it scores 3.4% WER | |
| (whisper-normalized, transcript C) against 9.4% for vanilla Whisper. That benchmark is a | |
| single-speaker acted set, N=250, with a 95% confidence interval of about ±1pp. | |
| ## How it was trained | |
| The training data is synthetic, and we built it ourselves. We started from clean text | |
| transcripts in LibriSpeech (the original audio was thrown away), injected disfluencies | |
| into that text with custom scripts plus the LARD tool, then voiced the messy versions | |
| with Kokoro TTS rotated across 54 voices. That gave us roughly 23k pairs of | |
| `(disfluent audio, clean text)` to fine-tune on. A later blend folded in about 4.5k rows | |
| from the DisfluencySpeech train split to tidy up the label formatting. | |
| So the model is trained on LibriSpeech-derived synthetic speech, not on DisfluencySpeech. | |
| DisfluencySpeech is only the real-speech benchmark we report against. | |
| - **Base:** `openai/whisper-large-v3-turbo` | |
| - **Adapter:** [`pradachan/whisper-large-v3-turbo-disfluency-lora`](https://huggingface.co/pradachan/whisper-large-v3-turbo-disfluency-lora) | |
| - **Training data:** synthetic, generated from [LibriSpeech](https://www.openslr.org/12/) transcripts and voiced with [Kokoro 82M TTS](https://huggingface.co/hexgrad/Kokoro-82M) | |
| - **Benchmark:** [DisfluencySpeech](https://huggingface.co/datasets/amaai-lab/DisfluencySpeech) (arXiv:2406.08820) | |
| - **Trained on:** [Modal](https://modal.com) serverless GPUs, which ran both the LoRA fine-tuning and the eval harness | |
| - **Hardware:** ZeroGPU (`@spaces.GPU`), so live transcription runs on an on-demand A10G | |
| The gallery examples are real results from the DisfluencySpeech test set, plus one honest | |
| failure. Vanilla Whisper already deletes most "um/uh" fillers on its own, so the demo | |
| deliberately shows what it does past that point. | |
| ## Limitation | |
| The model deletes aggressively. Intentional repetitions like repeated digits, spelled IDs, | |
| and phone numbers, along with some self-repairs, can be lost. Do not use it for verbatim, | |
| legal, or numeric dictation without a downstream check. | |