DocsRechercheBenchmarks

Benchmarks & Résultats

Résultats détaillés des tests comparatifs réalisés sur chaque module de la pipeline THOR avec les données réelles du projet.

Méthodologie des tests

Dataset NLP
438 échantillons
Dataset Audio
200+ fichiers WAV
Date du benchmark
09/01/2026

Glossaire des métriques

Métriques STT (Speech-to-Text)

WERWord Error Rate

Taux d'erreur au niveau des mots. Mesure le pourcentage de mots incorrects (substitutions, insertions, suppressions) par rapport à la transcription de référence.

WER = (Substitutions + Insertions + Suppressions) / Nombre total de mots

↓ Plus bas = meilleur. Un WER de 0% = transcription parfaite.

CERCharacter Error Rate

Taux d'erreur au niveau des caractères. Plus granulaire que le WER, utile pour détecter les petites erreurs d'orthographe.

CER = Erreurs de caractères / Nombre total de caractères

↓ Plus bas = meilleur. Généralement inférieur au WER.

Métriques NLP (Classification/NER)

PrecisionPrécision

Parmi toutes les prédictions positives du modèle, combien sont correctes ? Mesure la fiabilité des prédictions.

Precision = Vrais Positifs / (Vrais Positifs + Faux Positifs)

Ex: Sur 100 villes prédites, 92 sont correctes → Precision = 92%

RecallRappel

Parmi toutes les vraies instances positives, combien ont été trouvées ? Mesure la capacité à ne rien manquer.

Recall = Vrais Positifs / (Vrais Positifs + Faux Négatifs)

Ex: Sur 100 villes réelles, 85 sont détectées → Recall = 85%

F1-ScoreMétrique principale

Moyenne harmonique de la Precision et du Recall. Équilibre entre les deux métriques, idéal quand on veut optimiser les deux à la fois.

F1 = 2 × (Precision × Recall) / (Precision + Recall)

↑ Plus haut = meilleur. F1 de 1.0 = parfait. F1 de 0.5 = médiocre.

Exemple concret

Pour la phrase "Je veux aller de Paris à Lyon" :

Vérité :origine=Paris, destination=Lyon
Prédiction :origine=Paris, destination=Lyon
✓ Vrai Positif (TP)2 entités correctes
Precision = Recall = F11.0 (100%)

Speech-to-Text

Comparaison des métriques

Whisper (small)Choisi
WER (erreur)
29.1%
CER (erreur)
12.2%
Latence
387ms
VoskTesté
WER (erreur)
48.1%
CER (erreur)
16.1%
Latence
118ms
Whisper
Audio: "Je veux voyager de Toulouse à Bordeaux"
Transcription
"Je veux voyager de Toulouse à Bordeaux."
✓ Majuscules, ponctuation, 100% correct
Vosk
Audio: "Je veux voyager de Toulouse à Bordeaux"
Transcription
"je veux voyager de toulouse à bordeaux"
⚠ Pas de majuscules, mais exploitable

Verdict : Whisper

WER 19% inférieur à Vosk (29.1% vs 48.1%). Malgré une latence 3x plus élevée, la qualité de transcription justifie ce choix pour éviter les erreurs en cascade.

Natural Language Processing

ModèleF1-ScoreOrigineDestinationLes deuxStatus
spaCy (fine-tuné)0.62194.98%83.90%83.68%Choisi
regex_advanced0.43080.82%29.57%27.05%Testé
spaCy (base)0.40772.60%42.24%40.75%Testé
dummy (baseline)0.23079.91%57.08%50.00%Non retenu
transformersErreurNon retenu

Comparaison F1-Score

spaCy (fine-tuné)0.621
regex_advanced0.430
spaCy (base)0.407
dummy0.230

Impact du fine-tuning

Le fine-tuning de spaCy sur notre dataset améliore le F1-Score de +52.7% (0.407 → 0.621). La précision sur la destination passe de 42.24% à 83.90%, soit un gain de +98.6%.

Verdict : spaCy fine-tuné

Le modèle fine-tuné surpasse tous les autres avec un F1 de 0.621. Regex échoue sur les destinations (29.57%), Transformers n'a pas pu être évalué (erreur de chargement).

Pathfinding

Dijkstra (temps réels)

Précision origine100%
Précision destination100%
Routes trouvées50%
Étapes moyennes3.5

Exemple de route

Toulouse → Bordeaux
{
  "steps": [
    "Toulouse Matabiau",
    "Bordeaux Saint-Jean"
  ],
  "total_time": 143 min (2h23),
  "total_distance": 209.5 km,
  "type_train": "TGV",
  "nb_trains_jour": 17
}

Verdict : Dijkstra avec temps pondérés

100% de précision sur les gares identifiées. Le taux de 50% de routes trouvées s'explique par des gares manquantes dans le dataset de test (gares étrangères, TER locaux).

Pipeline End-to-End

Test complet : Audio → Itinéraire

Entrée : sample_000160.wav
Audio: "Je veux voyager de Toulouse à Bordeaux"
Pipeline : Whisper → spaCy → Dijkstra
Sortie
{
  "transcript": "Je veux voyager de Toulouse à Bordeaux.",
  "origin": "Toulouse",
  "destination": "Bordeaux",
  "is_valid": true,
  "confidence": 0.70,
  "route": {
    "steps": ["Toulouse Matabiau", "Bordeaux Saint-Jean"],
    "total_time": 143 min,
    "total_distance": 209.5 km,
    "type_train": "TGV",
    "trains_par_jour": 17
  }
}
387ms
STT (Whisper)
~10ms
NLP (spaCy)
~5ms
Pathfinding

Récapitulatif des choix

ModuleChoixMétrique clévs Alternative
STTWhisperWER 29.1%-19% vs Vosk
NLPspaCy (fine-tuné)F1 0.621+53% vs base
PathfindingDijkstra100% précisionSeul testé

Latence totale de la pipeline

~400mspour une requête audio complète

387ms (STT) + 10ms (NLP) + 5ms (Pathfinding) = temps de réponse quasi-instantané