← all posts

UNDER THE HOOD

how on-device voice tracking works (and why it's private)

the page advances when you say the words, not when a timer says so. no thumb on the screen, no guessing at a scroll speed. and the recognition runs on the phone, so the audio never leaves it.

voice tracking is in BETA. here's what it does and how it stays private.

the promise#

most auto-scroll is a stopwatch. you set a speed in pixels per second, you start reading, and you hope your pace matches the number you picked. it never quite does. you drift ahead and the line you want is already gone, or you drift behind and you're staring at words you said ten seconds ago.

voice tracking drops the stopwatch. it listens to what you actually say, finds that spot in your script, and moves the reading position to keep up with you. read slow, it goes slow. pause for a sip of water, it waits. the script follows you instead of the other way around.

how it works, at a high level#

three things happen at once while you talk.

  • speech recognition listens. on-device recognition turns your delivery into words as you speak them.
  • the words get matched. the app lines up what you said against the script you're reading and figures out where you are.
  • the reading position moves. it advances the page to keep your current spot in the reading band.

that's the loop, running continuously. you read, it matches, it scrolls. you don't touch anything.

real speech doesn't cooperate, so the matching has to be loose. you'll skip a filler word, repeat a phrase to nail the take, swap a synonym you like better in the moment, or trail off and restart a sentence. a system that demanded a perfect transcript would seize up on every one of those. the match looks for where in the script you most plausibly are, not for an exact string, so an improvised "um" or a dropped "the" doesn't throw it off your place.

the privacy part, which is the whole point#

all of that happens on the device. the speech recognition runs locally on your iphone. the audio is not sent to a server, there's no cloud round-trip, and no transcript gets uploaded anywhere.

this isn't a setting you flip to harden it. it's how it's built. open prompter makes no network calls of its own, full stop. no account, no analytics, no tracking SDKs. file reading is local. speech recognition is local. the script you wrote and the words you say both stay on the phone you're holding.

a teleprompter is the most personal thing on a creator's screen. it's the unreleased pitch, the apology you're rehearsing, the launch nobody's seen yet. that text has no business on someone else's servers, and your voice has even less.

what it doesn't do#

voice tracking listens so it can scroll. that's the entire job. it does not write your script, suggest edits, or send your words off to be summarized. open prompter doesn't generate scripts in-app on purpose, and the speech engine is no exception. recognition exists to move the page, then it forgets what it heard.

so the on-device thing isn't a privacy feature bolted onto an AI feature. there is no second, cloud-shaped feature underneath it. the listening starts when you turn voice tracking on and stops when you turn it off, and in between it never reaches the network.

the feel#

matching words is the easy half. making the scroll feel good is the hard half.

the scroll is velocity-controlled. instead of jumping the page to wherever your last word landed, it accelerates and decelerates smoothly with your pace. speed up and it eases faster. slow down and it glides to a stop. no teleporting, no jerk, no motion that pulls your eye off the line.

there's also silence detection. stop talking for about 1.5 seconds and the scroll pauses. that pause is on purpose. it's the gap that lets you scroll back, re-read a line you flubbed, gather a thought, then pick up where you left off without the page running away from you. when you start talking again, the scroll picks the pace back up.

the silence pause is also why voice tracking and manual scroll don't fight. the page is yours during the quiet. drag it where you want, hold there, and the moment you speak the script meets you at the line you stopped on.

the READ and FEATHER lines tune how tightly it follows you#

two draggable lines set the personality. the READ line is where the word you just said lands. the FEATHER line is where the scroll hands off from snappy catch-up into a smooth glide. drag them close together for tight, word-for-word tracking. spread them apart for looser, more forgiving momentum. it's the one dial that decides whether the scroll feels like a metronome or a current. the full walkthrough is in how to use the READ and FEATHER lines.

it can listen on an external mic too#

voice tracking listens on the recording audio path, so if you route a lavalier mic into the phone over USB-C or a 3.5 mm TRRS input, it follows your voice from that mic instead of the built-in one. that's what lets it keep up when you're standing well back from a beam-splitter rig, beyond built-in-mic range. the beam-splitter guide covers wiring up the rig.

it's BETA, and we're still tuning the feel. turn it on, drag the lines until the scroll moves the way you read, and tell us where it falls short.

open prompter is free, MIT, and on the App Store.

the whole feature set. no subscription, no account, no cloud upload.

saved you a subscription? buy me a coffee.