Menu

Teaching My Teleprompter to Listen

May 1, 2026
Teaching My Teleprompter to Listen

I've long enjoyed using my open-source desktop teleprompter for recording videos and presentations. But there's been one feature I've wanted to add for years. Auto-scrolling. Not a fixed scroll speed. One that follows what I'm actually saying.

That's exactly what I added in the latest release: voice-driven auto-scroll. You talk, the script scrolls. No clickers, no foot pedals, no right-arrow key acrobatics. The goal was to make the scrolling disappear and not have to think about it again.

A bit of backstory: I originally built this teleprompter because every other one I tried hijacked my whole screen. I wanted a translucent overlay so I could keep eye contact with whoever I was talking to. Auto-scroll is the natural next step, letting the prompter follow my actual speaking pace.

Powered by Deepgram

Under the hood, the teleprompter streams your microphone audio to Deepgram for real-time speech-to-text. Every time Deepgram returns a chunk of text, it finds the closest matching spot in the script, and gently moves the text into position.

A few nerdy details that make the experience feel less janky:

  • Fuzzy alignment: A sliding-window multiset overlap (basically: "does the bag of words I just said look like the bag of words at script position X?"). It tolerates ad-libs, ums, re-reads, and Deepgram occasionally hearing "destroy" when you said "deploy."
  • Smooth motion: A critically-damped spring (Unity's classic SmoothDamp). Successive transcripts blend into one continuous glide instead of jumps.
  • Manual override: If you grab the trackpad or arrow keys, auto-scroll yields for a few seconds before picking back up. Backtrack to re-read a line without fighting the scroller.

Of course, if you're whispering or your mic is picking up the dishwasher, accuracy will tank. But for normal-volume reading in a reasonably quiet room, it works surprisingly well.

Privacy note: Auto-scroll only listens when you enable it. Audio is streamed to Deepgram for transcription, so don't use it with scripts you wouldn't be comfortable sending to a third-party speech-to-text service.

Setup takes about two minutes

Step 1: Update the app

Pull down the latest version (or build it yourself):

git clone https://github.com/reverentgeek/electron-teleprompter
cd electron-teleprompter
pnpm install
pnpm start

Step 2: Grab a Deepgram API key

Auto-scroll uses Deepgram for transcription. Sign up at console.deepgram.com. They have a free tier that's plenty for personal use.

Step 3: Tell the app about your key

In the menu, choose Script > Set Deepgram API Key… and paste your key into the modal.

Step 4: Enable auto-scroll

Open your script, and click Script > Toggle Auto-scroll (or press Cmd+Shift+L). A green "listening" pill appears in the top-right corner. You're ready to start reading!

Step 5: Tune to taste

The auto-scroll speed is adjustable so you can find your groove:

ShortcutAction
Cmd+]Increase scroll speed
Cmd+[Decrease scroll speed
Cmd+\Reset to 1×

Your speed setting (and your API key, and the microphone choice below) all persist across sessions.

Step 6: Pick your mic

If you've got a fancy USB lavalier, podcasting beast, or "this microphone costs more than my first car" setup plugged in, you'll want auto-scroll to use that, not your laptop's built-in array. Open Script > Select Microphone… and choose from the list.

Pro tip: Device names only show up after macOS/Windows has granted mic access at least once. If your dropdown looks like cryptic IDs the first time, start auto-scroll once to trigger the permission prompt, accept it, then reopen the picker and the names will be there.

If your saved mic is unavailable when auto-scroll starts — unplugged, you're not using the same dock, gremlins — the app falls back to the system default and flashes a quick "Saved mic unavailable — using default" hint. Your selection is preserved, so plugging the device back should work the next time.

What it feels like

I gotta say, the auto-scrolling is delightful and more than a little magical.

It's currently a little stop-and-go at times, based on pauses in speech, but it works! I can make mistakes or skip ahead, and it follows right along.

I'm super happy with it right now as it is. But, in the future, I want to experiment with Deepgram's "interim results" to make the scrolling experience even smoother.

But wait, there's more!

Here's a quick rundown on the features added since I introduced the teleprompter.

  • Writing scripts is easier: built-in markdown editor, syntax highlighting, save-in-place.
  • Reading is more comfortable: font size, opacity controls, mirror mode.
  • The app remembers things: recent files, last-opened script, window position, microphone choice.
  • The codebase is healthier: ESM, pnpm, and other under-the-hood cleanup.

Go talk to your teleprompter

I built this for myself, but I hope you find it useful, too! The code is open and the auto-scroll module is small and isolated. If you've got a better matching strategy (phonetic? embeddings? something I haven't thought of?), or you'd love to plug in a different STT provider, that's the place to start. PRs and weird ideas welcome over at github.com/reverentgeek/electron-teleprompter.

If you take it for a spin, I'd love to hear your feedback! What would make it more useful for you? What else should a desktop app be able to do once it can listen?