Rehearse interview answers out loud and get every take measured and graded.
Most people prepare for an interview, a podcast or a panel by writing. They draft their answers, tighten them, read them over until they feel ready. Then they answer out loud and it comes out differently: longer than planned, slower in some places and rushed in others, with "um" filling every gap where the next idea should be. Sentences start, stall and start again. The point they meant to land somehow gets lost halfway through.
None of this shows on the page, and little of it is audible to the person speaking. The listener hears all of it.
Speaking well in public comes down to two things:
- Coherence: the answer goes somewhere. It responds to the question that was asked, makes its point, and ends on a clear final line instead of trailing off.
- Fluency: the answer comes out at an even pace, with pauses between thoughts rather than in the middle of them, few fillers, and few false starts.
Both are learned the same way: by saying the answer out loud, many times, and getting specific feedback after each attempt. That is rehearsal. Rehearsing alone gives you no feedback, though, and a coach or a patient friend won't sit through fifteen questions times ten takes.
talkTalk is the feedback half of rehearsal. You give it the questions you expect and the answers you'd like to give. It shows one question at a time in large type, records you answering it, and within about 15 seconds tells you how it went: your pace, your fillers, where you hesitated, a letter grade with a note on fluency and one on coherence, and the single most useful thing to fix on the next take.
The grade is about how you said what you said, nothing else. It never sees the question or your notes, and never judges what the answer contains or tells you what you should have said. Its advice points at your own words: a sentence that broke off, a detour to cut, a line to move, a stronger line of yours to end on, or your pace.
talkTalk ships with a made-up interview, The Foo Bar Show (example/questionnaire.md), and on first run puts it on
your dashboard as Example-1 with four graded takes, one per question. The takes are synthetic speech (macOS text to
speech) read from scripts written to sound good, average and poor, then run through the real pipeline: Whisper's
transcript and measurements, and a grade from Claude Code · Sonnet.
| Question | Grade | What the take does |
|---|---|---|
| What is Quux, in one sentence? | A | One thread, 150 wpm, no fillers, ends on a clear line |
| Why did you start building it? | B- | A detour, a few fillers, a phrase that breaks off |
| What was the hardest part of the first year? | C | Restarts, hedging, 8 fillers, trails off with "So, yeah" |
| What's next for Quux? | D+ | Abandoned sentences, 10 fillers at 60 wpm, no real ending |
Grades come from a language model, so the same take can land a step higher or lower when it is graded again.
| A | B- | D+ |
|---|---|---|
![]() |
![]() |
![]() |
- Prepare notes if they help, not scripts. Each question can carry your own notes. They are for you only and are never sent to the grader. A memorized answer sounds memorized.
- Answer without looking. Read the question, press Space, and talk. Peek at your notes (press A) only after the take.
- Fix one thing per take. Each grade ends with one recommendation. Apply that, and only that, on the next take.
- Repeat until it holds. Move on when the grade stays steady and the answer fits the targets talkTalk grades against: 45 seconds to 2 minutes, 130 to 160 words per minute, under 5 fillers per 100 words, pauses only between sentences, and a clear final line.
- Come back another day. Every session is kept and searchable on the dashboard, so you can run an interview's questions again closer to the date. Every take (recording, transcript, grade) is saved in the session's folder.
Recordings and transcription stay on your machine (Whisper runs locally). Only the transcript and its measurements go to the session's grader (Claude or OpenAI), and Chrome's live transcript uses Google's speech recognition.
Step-by-step instructions, with every button and setting: HOWTOUSE.md.
-
Create a session. On the dashboard, click + New session and fill in the topic, a name, the date, and your questions, with optional notes for yourself under each. To skip the typing, choose your questionnaire (.txt, .md, .docx, .rtf, .odt, .html) under Import questions from a file: your default grader model reads it and fills in the topic, name, date and questions, even ones that don't end in
?. The notes under each question are copied from the file as they are, never rewritten. Without a model, every line ending in?becomes a question. Check the form before you create the session; the file then moves into the session's folder. Each session gets an ID made of the topic's first word and a counter, such asProduct-1,Product-2. -
Rehearse. Open the session and answer each question aloud. Chrome shows a rough live transcript while you talk; when you stop, Whisper's transcript replaces it, and every number on the page comes from Whisper.
-
Read the feedback. When you stop, Whisper transcribes the recording with word timings and fillers kept (about 5 seconds), and talkTalk measures:
- length and words per minute (target 130 to 160)
- fillers per 100 words (target under 5)
- pauses over 0.7 s and over 2 s, and pauses in the middle of a sentence
- cut-off words ("I- I think")
Takes under 5 words are measured but not graded. Otherwise the chosen model (Claude or OpenAI, see Requirements) grades the take from A to D, with a note on fluency, a note on coherence, and one concrete fix for the next take.
-
Come back later. The dashboard lists every session and can search them by topic, name or ID, so you can return to an earlier interview and rehearse it again. Edit on a session changes its topic, name, date, questions and notes; the session ID stays the same.
The Grading box on the dashboard checks what you can use and lists it: Claude Code's Sonnet, Opus and Haiku if Claude Code is installed, and every chat model your OpenAI API key can reach if you have one. Pick a model and it becomes the default for every session. A session can override it in its own form, and each grade names the model that graded it.
Have an OpenAI key but haven't set OPENAI_API_KEY? Paste the key into the Grading box once. It's checked with
OpenAI, kept on your Mac, and its models appear in the list right away.
-
macOS with Homebrew
-
brew install openai-whisper ffmpeg -
A grader: Claude Code, an OpenAI API key, or both.
- Claude Code installed and logged in offers Sonnet, Opus and Haiku, on your Claude login rather than an API key.
- An OpenAI API key offers the chat models that key can use. If
OPENAI_API_KEYis set in your shell, talkTalk picks it up, even when started from the desktop app. Otherwise add it once in the Grading box on the dashboard: it's checked with OpenAI, kept on your Mac only (~/.config/talktalk/openai_key, readable by you alone) and used right away, no restart.
The Grading box lists every model you can use. Pick one and it becomes the default for every session; a session can pick a different one in its form. The grade shows which model graded it.
-
Google Chrome (the live transcript uses its built-in speech recognition)
run.sh starts the server with Homebrew's Python 3.11, because that is where the openai-whisper formula installs.
If your Whisper lives elsewhere, edit the interpreter path in run.sh.
git clone https://github.com/yoelf22/talkTalk.git
cd talkTalk
./run.sh
This starts the server on http://127.0.0.1:8795 (if it isn't already running) and opens it in Chrome. Allow the microphone when Chrome asks. The first start takes a few seconds while the Whisper model loads.
Keys on the rehearsal page: Space records or stops, ← → change question, A shows your notes.
Optional: launcher.applescript builds a double-click Mac app. Edit the path inside it to where you cloned the
repo, then run the osacompile line at its top.
Sessions, recordings, transcripts and grades are saved outside the repo, in a talk rehersals folder on your Desktop
(one subfolder per session). Set TALKTALK_DIR to use another folder. The server also puts talkTalk.html there:
double-click it to open the dashboard, or to see how to start talkTalk if it isn't running. The server listens on
127.0.0.1 only.




