Long-Form Audio STT Evaluation

November 14, 2025 · View on GitHub

Comparative evaluation of speech-to-text models on long-form audio transcription, measuring word accuracy and punctuation fidelity against professional reference transcripts.

Test Methodology

Audio Source: 27-minute English podcast (4,748 words, 688 punctuation marks) Reference: Professional human transcription Evaluation Metrics: Word Error Rate (WER), Character Error Rate (CER), Punctuation Accuracy Models Evaluated: 8 configurations (3 local, 5 cloud)

Results Summary

Key Takeaways

  • Local Whisper-Base reaches the highest word accuracy (82.48%) but adds only 21.90% of the reference punctuation, so post-editing remains mandatory for narrative polish.
  • Cloud APIs sit within 1.5 percentage points of the top local word score yet capture roughly twice the punctuation (up to 51.17%), which lowers manual formatting time even when word accuracy is similar.
  • Over-punctuation varies widely: Speechmatics inserts 46% more marks than the reference, while Deepgram Nova-3 stays close to the professional transcript (698 vs 688 marks).

Word Accuracy Performance

Word Accuracy Comparison chart

Legend: Green = Local models, Blue = Cloud models. Regenerate the SVGs with python3 scripts/generate_charts.py when values change. W-Base = Whisper-Base, W-Base = Whisper-Base Auto-detect, DG = Deepgram, OAI = OpenAI*

RankProviderModelWER %CER %Word Accuracy %Punctuation %
1LocalWhisper-Base17.525.3882.4821.90
2LocalWhisper-Base (auto-detect)17.525.3882.4821.90
3DeepgramNova-318.727.3381.2851.17
4AssemblyAIBest18.796.2481.2148.43
5OpenAIWhisper-119.276.4080.7344.44
6GladiaSolaria-120.836.3079.1744.13
7SpeechmaticsSLAM-121.657.1578.3538.23
8LocalWhisper-Tiny22.498.3977.5118.78

Punctuation Accuracy Performance

Punctuation Accuracy Comparison chart

RankProviderModelPunctuation %Context Match %Punct CountWord Accuracy %
1DeepgramNova-351.1732.33698/68881.28
2AssemblyAIBest48.4333.72791/68881.21
3OpenAIWhisper-144.4434.42911/68880.73
4GladiaSolaria-144.1322.56651/68879.17
5SpeechmaticsSLAM-138.2330.001003/68878.35
6LocalWhisper-Base21.9013.02292/68882.48
7LocalWhisper-Tiny18.788.60288/68877.51

Analysis

Word Error Rate (WER) Comparison

Word Error Rate Comparison chart

Local vs Cloud Performance

Local vs Cloud averages chart

Word Accuracy:

  • Local Whisper-Base achieved the highest word accuracy (82.48%)
  • Top cloud performer (Deepgram Nova-3) achieved 81.28%, 1.2 percentage points lower
  • Performance gap between local and cloud models is minimal for word-level transcription

Punctuation Accuracy:

  • Local models captured 42-43% of punctuation marks (288-292 out of 688)
  • Cloud models captured 94-146% of reference punctuation count (651-1003 marks)
  • Deepgram Nova-3 achieved near-perfect count (698 vs 688 reference)
  • Local models demonstrate significantly reduced punctuation capabilities

Error Distribution Analysis

Local Whisper-Base (Highest Word Accuracy):

  • Hits: 3,960 (83.4%)
  • Substitutions: 726 (15.3%)
  • Deletions: 62 (1.3%)
  • Insertions: 44 (0.9%)

Deepgram Nova-3 (Best Cloud):

  • Hits: 3,919 (82.5%)
  • Substitutions: 615 (13.0%)
  • Deletions: 214 (4.5%)
  • Insertions: 60 (1.3%)

Punctuation Pattern Analysis

Local Whisper Models:

  • Periods: 16% accuracy (42/263)
  • Commas: 30% accuracy (31/104)
  • Exclamation marks: 0% (0/19)
  • Quotation marks: 0% (0/45)
  • Colons: 0% (0/2)

Deepgram Nova-3:

  • Near-perfect total count (698 vs 688)
  • 32.33% context-aware placement accuracy
  • Balanced punctuation distribution

Over-punctuation Patterns:

  • Speechmatics: +46% (1,003 vs 688)
  • OpenAI Whisper-1: +32% (911 vs 688)
  • AssemblyAI Best: +15% (791 vs 688)

Language Detection Impact

Whisper-Base with explicit language specification ("en") and auto-detection produced identical results (17.52% WER), indicating language detection does not impact accuracy for clear English audio.

Model Size Impact

Local inference demonstrates 4.97 percentage point accuracy difference between whisper-base (82.48%) and whisper-tiny (77.51%), with minimal difference in punctuation capability (21.90% vs 18.78%).

Observations

  1. Word-level vs Production Transcription: Highest word accuracy does not correlate with production-ready output. Local Whisper-Base leads in word accuracy but ranks last in punctuation.

  2. Punctuation as Quality Indicator: Cloud services demonstrate 2-3x higher punctuation accuracy compared to local models, representing a fundamental architectural difference in model capabilities.

  3. Deepgram Nova-3 Performance: Achieves optimal balance with near-best word accuracy (81.28%) and highest punctuation accuracy (51.17%), producing transcripts closest to professional reference.

  4. Cost-Performance Tradeoffs: Local inference provides superior word accuracy at zero marginal cost but requires extensive post-processing for punctuation. Cloud services provide complete transcription at per-use cost.

  5. Processing Speed: Deepgram Nova-3 processed 27 minutes of audio in 3 seconds, demonstrating significant speed advantage over local inference.

Use Case Recommendations

Research/Analysis Applications

  • Model: Local Whisper-Base
  • Rationale: Highest word accuracy, zero marginal cost
  • Suitable for: Search indexing, content analysis, data extraction
  • Limitation: Unusable punctuation

Publication-Ready Transcription

  • Model: Deepgram Nova-3
  • Rationale: Best punctuation (51.17%), near-best word accuracy (81.28%)
  • Suitable for: Blog posts, articles, formal documentation
  • Characteristics: Minimal post-processing required

Budget-Constrained Production

  • Model: Gladia Solaria-1
  • Rationale: Balanced performance (79.17% word, 44.13% punctuation)
  • Characteristics: Slight under-punctuation (5%) easier to correct than over-punctuation

Maximum Cloud Accuracy

  • Model: AssemblyAI Best
  • Rationale: Highest cloud word accuracy (81.21%), strong punctuation (48.43%)
  • Characteristics: Tends to over-punctuate by 15%

Hybrid Approach

  • Method: Local Whisper-Base + Cloud post-processing
  • Rationale: Optimize for word accuracy, supplement with cloud punctuation
  • Cost profile: Reduced per-minute costs while maintaining quality

Technical Implementation

Evaluation Scripts

Word Accuracy Calculation:

python scripts/calculate_benchmarks.py

Output: data/inference/benchmark_results.json

Punctuation Accuracy Calculation:

python scripts/calculate_punctuation_accuracy.py

Output: data/inference/punctuation_results.json

Dependencies

# Create virtual environment
uv venv

# Install evaluation dependencies
uv pip install jiwer

Metrics Methodology

Word Error Rate (WER): Calculated using jiwer library with standard Levenshtein distance Character Error Rate (CER): Character-level edit distance normalized by reference length Punctuation Accuracy: Context-aware matching of punctuation placement and frequency

Data Structure

data/
├── audio/
│   └── podcast.mp3                    # Source audio (27 minutes)
├── ground-truth/
│   ├── truth_1.txt                    # Reference transcript
│   └── truth_1.srt                    # Reference with timestamps
└── inference/
    ├── runs/
    │   ├── local-stt/
    │   │   ├── run-1/                 # Whisper-Base (en)
    │   │   ├── run-2/                 # Whisper-Tiny
    │   │   └── run-3/                 # Whisper-Base (auto-detect)
    │   └── cloud-stt/
    │       ├── manual-1/              # Gladia Solaria-1
    │       ├── manual-2/              # Deepgram Nova-3
    │       ├── manual-3/              # AssemblyAI Best
    │       ├── manual-4/              # Speechmatics SLAM-1
    │       └── manual-5/              # OpenAI Whisper-1
    ├── runs-config.json               # Run metadata
    ├── benchmark_results.json         # WER/CER results
    └── punctuation_results.json       # Punctuation metrics

Configuration

Run configurations are stored in data/inference/runs-config.json with the following schema:

{
  "run_id": "string",
  "run_type": "local-stt|cloud-stt",
  "model": "string",
  "provider": "string",
  "inference_provider": "direct|edenai|null",
  "engine": "Buzz|api",
  "settings": {},
  "output_dir": "string",
  "completed": boolean
}

Limitations

  • Single audio file evaluation (n=1)
  • English language only
  • Podcast format (conversational speech)
  • No speaker diarization evaluation
  • No timestamp accuracy measurement
  • Punctuation metric is heuristic-based, not ground-truth validated