L.C©2026← Toutes les missions
01 — Transcript.AI

Transcrire la vidéo en direct, sous 300 ms

Backend Rust streaming connecté à Whisper : transcription vidéo en direct sous 300 ms de latence. Actix, Tokio, SSE, feedback IA côté React.

Rôle
Développeur full stack — freelance
Période
Fév. — Oct. 2025
Lieu
Paris · Hybride
Stack
Rust · Actix · Tokio · Whisper · Docker · React · TypeScript · TailwindCSS · SSE · Python
de latence de transcription
< 300 ms

Le contexte : sous-titrer un flux vidéo pendant que l’orateur parle

Le produit devait afficher une transcription en direct d’un flux vidéo, mot à mot, pendant que l’orateur parle — avec une boucle de feedback IA qui corrige et enrichit le texte à la volée. L’enjeu n’était pas la qualité de transcription en différé (Whisper la résout déjà) mais la latence perçue : au-delà de ~400 ms, le sous-titrage « décroche » de l’image et devient inutilisable.

Le défi : streamer vers Whisper sans dépasser 400 ms de latence

  • Streamer l’audio extrait de la vidéo vers Whisper par fenêtres glissantes, sans attendre la fin de chaque segment.
  • Garder le serveur non bloquant sous charge : plusieurs sessions de transcription simultanées sur une seule instance.
  • Pousser chaque mise à jour partielle vers le frontend sans polling.

L’approche : Rust (Actix, Tokio), fenêtres glissantes et SSE

J’ai construit le backend en Rust avec Actix et un runtime Tokio pour gérer l’I/O asynchrone. L’audio est découpé en fenêtres chevauchantes envoyées à Whisper ; les résultats partiels remontent au navigateur via Server-Sent Events (SSE), plus simples et plus robustes que des WebSockets pour un flux unidirectionnel serveur → client.

Côté React, le chat se met à jour de façon incrémentale à chaque événement SSE, avec une boucle de feedback IA qui réconcilie les segments partiels en texte stabilisé.

Le résultat : moins de 300 ms de bout en bout, sessions concurrentes

Une latence de bout en bout maintenue sous 300 ms, une seule instance Rust absorbant plusieurs sessions concurrentes, et une UI de transcription qui suit réellement le rythme de la parole.

Stack & rôle : Rust, Actix, Tokio, Whisper, React, Docker

Mission freelance (Paris, hybride). Backend Rust (Actix, Tokio, Python) et intégration Whisper côté conteneurs Docker ; frontend React / TypeScript / TailwindCSS avec transport SSE. Conception de l’architecture streaming de bout en bout.

Un projet similaire ? Parlons-en