Inspiration
Public-speaking feedback often ends with “slow down” or “use fewer fillers,” without showing where to improve. I wanted to make feedback something a speaker could inspect, replay, and practice. An actual parameter and number rather than "this is bad".
What it does
SpeechMirror analyzes short English WAV recordings and turns them into a waveform, timestamped transcript, five coaching scores, and actionable feedback.
It measures pauses and voiced pitch from audio, estimates pace using transcript timing, and detects transcript-supported fillers and repetitions. Each local suggestion includes a time interval, evidence, source, and practice recommendation.
The comparison view places reference and edited recordings side by side so users can inspect how delivery changes affect the results.
How we built it
I built the app with Python and Streamlit, using faster-whisper for CPU transcription, NumPy, SoundFile and librosa for audio analysis, and Plotly for visualization.
The app runs locally without an API key after downloading the speech model. The demo uses real app recordings and disclosed AI-generated narration.
All five scores are explicitly labeled prototype heuristics. Organization uses a limited text-marker check rather than claiming to understand semantic clarity.
Challenges we ran into
Grounding feedback in actual recordings was the hardest part. Speech recognition can miss fillers or normalize repeated words, while noise can make pitch estimates unreliable. We tied local feedback to audio measurements or transcript timestamps and made uncertainty visible.
Another challenge was separating delivery from structure. Audio measurements support pause and pitch analysis, but organization uses a clearly labeled text-marker heuristic with limited scope.
Accomplishments that we're proud of
We completed a working pipeline from WAV upload to transcription, measured features, five rubric scores, and replayable coaching.
We also created six original synthetic reference/edited pairs with documented generation methods and annotations. The dashboard brings together waveform markers, timestamped transcripts, comparison views, and measured evaluation results.
What we learned
Useful feedback needs evidence and context. A long pause can be intentional, repetition can emphasize a point, and a transcript can omit something clearly audible.
We learned to distinguish measured features from coaching judgments, preserve uncertainty, and keep construction labels out of the analyzer. Synthetic examples help test controlled changes, but they cannot establish performance on real speakers.
What's next for SpeechMirror — Feedback You Can Replay
We want to evaluate diverse human recordings with independent annotations, improve filler and repetition detection, and make pause detection more robust to background noise.
We also want to test whether replayable feedback helps speakers improve across successive takes, and explore stronger organization analysis while keeping its evidence and limitations transparent.
Log in or sign up for Devpost to join the conversation.