Inspiration
People usually just tell you to improve your speaking. Hardly anyone shows you exactly where you're falling short. Some tools tell you what you said or how fast you said it, but you rarely get a report that grades you on a rubric you chose and gives you tips for your speech. Even less often do you get it in seconds. The right amount of energy and pitch variation depends on the context and intent of a speech, and on the speaker's accent. Being told a piece isn't "energetic" enough is vague, because you may well have the enthusiasm and just not be getting it across. What would help is a tool that compares two takes of the same speech and says: at 0:14–0:19 your pitch flattened to 40% of the reference, and at 0:31 your projection dropped 1.8 standard deviations. That's DeltaVox: contrastive speech analytics. You don't get an abstract score. You get the delta between you and your best version, hence the name.
What it does
- Upload or record a reference take and an evaluation take of the same script.
- DeltaVox pulls pitch, energy, pauses and syllable rate out of both recordings.
- It time-aligns the two takes, so a slower or faster delivery is still compared word for word.
- It flags specific flaws with timestamps (monotone collapse, projection drop, dead pauses) and scores a rubric.
- Gemini turns those numbers into short coaching notes based only on the measured deltas. The model explains the math. It doesn't make up the diagnosis. There's also a one-click demo built on a synthetic five-level benchmark (Ideal → Egregious), so anyone can try it without recording themselves. DeltaVox can also compare a written script with a live delivery, and generate speeches on a chosen topic to fit a time limit and intent. ## How we built it Backend: Python + FastAPI. Signal processing: librosa, NumPy, SciPy. Explanations: Gemini. Frontend: vanilla HTML/CSS/JS. Voice-agnostic pitch. Raw Hz doesn't compare well across speakers, because a 20 Hz swing means very different things for a bass and a soprano. We convert pYIN pitch estimates to cents on a log scale: $$ \text{cents} = 1200 \cdot \log_2\left(\frac{f_0}{55\,\text{Hz}}\right) $$ so a five-semitone inflection measures the same for any voice. Gain-invariant energy. Mic distance and recording volume shouldn't count as delivery flaws. We z-score the RMS energy of each take so that only the shape of the contour matters: $$ z_t = \frac{E_t - \mu_E}{\sigma_E} $$ Alignment. Two takes never line up frame for frame. We use Dynamic Time Warping with a Sakoe–Chiba band to map every frame of the evaluation take to its matching moment in the reference. Flaw grounding. Over sliding windows, we compare the evaluation take against its DTW-matched reference window:
- Monotone collapse when the pitch-variation ratio \( \sigma_{\text{eval}} / \sigma_{\text{ref}} < 0.55 \)
- Projection collapse when the energy is more than \( 1.6\sigma \) below the matched reference
- Dead pause when silence runs past an intent-specific limit (storytelling allows longer pauses than a debate rebuttal) Every rubric dimension is 100 for an identical take and falls off smoothly as the deviation grows, so small slips still register. Production hardening. Authentication with email verification, CSRF protection, rate limiting, path-traversal guards on file serving, upload size caps, sandboxed ffmpeg decoding with timeouts, and a Firestore-backed contact inbox reached only through the server. The test suite has 50 passing tests covering the engine, auth and API security. ## Challenges we ran into
- Comparing a take only against itself doesn't work. Our first version flagged flat spots relative to each take's own average. A take that's monotone from start to finish looks "consistent" and passes. Comparing against the DTW-matched reference fixed that.
- Ground truth for "how bad is bad?" We needed recordings whose flaws get steadily worse. We built a five-level degradation spectrum and wrote tests that check scores fall monotonically from Ideal to Egregious. Those tests caught several scoring bugs.
- Copyright caught us. We first benchmarked on a famous historical speech we assumed was in the public domain. Our pre-launch audit showed it's still under copyright, so we removed it and rebuilt the demo on audio we generate ourselves. It cost time, but now every file we publish is ours to share.
- Browser audio is messy. Browser recordings arrive as WebM/Opus, and uploads can be in almost any format. We built a fallback loader (soundfile → SciPy → sandboxed ffmpeg → librosa) so a file format never stops the analysis.
- Stopping the LLM from inventing feedback. Gemini only sees the measured flaw list and metric deltas, and it has to explain those. Without an API key, the app falls back to fixed offline feedback. ## Accomplishments that we're proud of
- Feedback you can act on. Every flaw comes with a timestamp, a type and a measured gap from the reference, instead of a vague overall score.
- Fair to every voice. Log-scale pitch and normalized energy mean a deep voice, a high voice, a quiet mic and a loud mic are all judged on delivery, not hardware or vocal range.
- Scores that behave predictably. On our five-level benchmark, scores drop steadily from Ideal to Egregious, and tests check this automatically.
- AI that stays honest. Gemini explains measured results rather than inventing them, and the app still works without an API key.
- Ready for public release, not just a demo. Authentication, CSRF protection, rate limiting and safe file handling, with 50 passing tests and a copyright-clean dataset. ## What we learned
- You need both: signal processing for honesty and an LLM for readability.
- Log scales and normalization matter. "AI accuracy" depends on measuring the right quantity in the first place.
- Monotonic-scoring tests turned vague intuitions into checkable constraints and pushed us to rethink our test conditions.
- Licensing and security are part of shipping, not paperwork for later. ## What's next for DeltaVox
- Word-level grounding with forced alignment, so feedback says "on the word 'freedom'" instead of giving a timestamp
- More flaw types: rushed delivery, uptalk, vocal fry
- Practice tracking across sessions
- Multi-factor authentication
- A mobile-first experience: the layout already adapts to smaller screens, but we want to test it on real phones, make the controls easier to tap, make in-browser recording reliable on mobile, and make the charts readable on narrow screens
Log in or sign up for Devpost to join the conversation.