Recent submissions

Comment · 9 days ago
Found this tool that has been a life saver for me. I was struggling with running multiple AI agents on iOS projects because every time I had them test something, my Mac would try to fly off my desk. Mac was also pretty much unusable because simulators were taking too much RAM and CPU. This tool takes almost nothing resource wise, it's MUCH faster than simulator approach and it has hot reload function that makes agent iterating on your UI very fast.
Comment · 18 days ago
This seems very good, and the performance claims look unbelievable. I hope it will hold up in production, not just the demo app. My Mac struggles with running single agent UI and unit tests. I'll give this a try!
Comment · 3 months ago
Author here. I ship both Apple speech engines plus WhisperKit side by side in a transcription app, which made it possible to run all five through identical production code on the same audio: LibriSpeech test-clean and test-other, 5,559 utterances, fully on-device on an M2 Pro.

Apple published no accuracy numbers for SpeechAnalyzer (or for SFSpeechRecognizer, ever, as far as I can tell), so the migration question has been guesswork. Short version: the new API cuts WER 3.5-4x vs the old one (2.12% vs 9.02% on test-clean), and it also beat Whisper Small on both splits at about 3x the speed. The old API came in last on clean speech, behind even Whisper Tiny.

On "why should I trust a vendor benchmark": the Whisper column reproduces OpenAI's published LibriSpeech WERs within +0.11 to +0.42 on all six measurements (same corpus, same normalizer, same scorer for every engine), and the raw per-utterance transcripts are downloadable from the article if anyone wants to rescore with their own normalizer.

Limitations worth stating up front: English only, read speech rather than meeting audio, one machine. Precise per-engine timing isn't in the article yet because the accuracy runs shared the machine with a dev workload; WER is load-independent, timing isn't.

Two things that might interest people migrating: SFSpeechRecognizer sends audio to Apple's servers unless you set requiresOnDeviceRecognition, and with SpeechAnalyzer, finishing your input stream is not enough to end a session. If you never call finalizeAndFinishThroughEndOfInput(), the results sequence never terminates and your await hangs forever. I found that one because it was shipping in my own app.

Happy to answer questions about the harness or the normalizer.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton