Project

Voice-paced Teleprompter

Python / FastAPI Web Speech API HTMX Vanilla JS TailwindCSS WebSockets

Problem

Classic teleprompters scroll at a constant speed. Speak faster or slower and the text stops matching. One pause, one stumble, one bit of improvising, and you lose your place.

Solution

  • Real-time speech recognition via the Web Speech API — no local model, no latency from an external API
  • Fuzzy-matching algorithm (Levenshtein distance) tracks the current position in the script through stumbles and phrasing that doesn't match word for word
  • Speed-adaptive lookahead: an SPM measurement (syllables per minute) dynamically adjusts how far ahead the system looks (1–3 words)
  • Smooth scrolling via a PID-like controller — no jarring jumps, proportional approach to the target position
  • Beam feature: mirror the script over WebSocket to any number of devices — ideal for camera setups with a separate prompter display

Result

A usable product, shipped as a web app — no app store, no install. The teleprompter follows your speaking pace in real time, no manual control needed. Speech recognition runs locally in the browser, so no ongoing API costs. The beam feature enables professional multi-device setups with no extra hardware.

Video not loading? Watch on YouTube

← Back to projects

Facing something similar?

Let's talk