Skip to content

2026 · Case study

SyncPhonic

An iOS app that turns vocal stress into a signal you can see and feel.

Problem

Public speaking anxiety shows up in the voice first: pitch climbs, pacing accelerates, hedging language creeps in, long before a speaker notices it themselves. Most practice tools record a session for review afterward or bolt on a generic teleprompter. Almost none turn live vocal signal into something a speaker can act on in the moment.

Solution

SyncPhonic listens through the microphone during a live speaking session and turns pitch, pacing, and stress into an ambient, glanceable instrument: a pulsing orb that breathes with vocal stress in real time, paired with haptic feedback so the signal can be felt without looking at the screen. After a session, it surfaces a stress-signature curve, a rule-based coaching note, and a running vocal-signature history.

Architecture

  • PitchTelemetryEngine: AVAudioEngine tap → 24kHz mono conversion → a real YIN pitch tracker (70 to 436 Hz) running on a dedicated analysis queue
  • A live stress model blends F0 elevation above a rolling session baseline, pitch instability, and vocal energy into a single signal
  • SpeechPacingEngine: SFSpeechRecognizer drives articulation WPM, held-pause detection, hedge-word detection, and lexical diversity
  • HapticPulseEngine drives CoreHaptics transients in sync with the live stress signal, so feedback can be felt, not just seen
  • SwiftData persists a rolling session history and lifetime aggregates that survive pruning
  • A widget extension powers a Live Activity, keeping a session visible from the Lock Screen and Dynamic Island

Outcome

  • Full pipeline (pitch tracking, pacing, speech recognition, haptics) verified running continuously in the background during a live session
  • Built entirely on native frameworks (AVFoundation, Speech, CoreHaptics, SwiftData) with zero third-party dependencies
  • Shipped an adaptive light/dark theme, full accessibility labels, and a privacy manifest ahead of App Store submission

Lessons

  • A number on a screen doesn't change behavior mid-sentence. A felt haptic pulse does.
  • iOS simulators can lie about on-device speech recognition. Always verify on hardware or a known-good runtime before trusting a result.
  • Native-only was a constraint worth keeping. It forced real understanding of AVAudioEngine and CoreHaptics instead of outsourcing it to a library.

Stack

  • Swift 6
  • SwiftUI
  • AVFoundation
  • Speech
  • CoreHaptics
  • SwiftData
  • WidgetKit