Apple's new SpeechAnalyzer beats Whisper Small on-device — and runs 3x faster
Original source
Apple's new SpeechAnalyzer API, benchmarked against Whisper and its predecessor
Hacker News →Apple quietly replaced its aging SFSpeechRecognizer with a new SpeechAnalyzer/SpeechTranscriber API in iOS 26 and macOS 26 but published no accuracy numbers, leaving developers to guess whether migrating was worth it. Inscribe, an on-device transcription app that ships both Apple engines alongside three Whisper models, ran all five through identical production code on the same M2 Pro hardware and audio. On LibriSpeech, the new engine posted a 2.12% word error rate on clean speech and 4.56% on noisy speech — a 3.5-to-4x improvement over the legacy API, which trailed even the 40MB Whisper Tiny model. For anything longer than a voice command, the migration is a clear win with no accuracy trade-off.
The more notable finding is that SpeechAnalyzer also edged out Whisper Small, the largest model tested, on both clean and noisy audio while using roughly a third of the compute per second of audio. For English on current Apple hardware, the OS-built-in engine is now the strongest on-device option, ending Whisper’s default status. Whisper retains two advantages: far broader language coverage (SpeechTranscriber handles about 30 locales) and cross-platform portability. Inscribe changed its own defaults on the result, routing supported languages to SpeechAnalyzer and the rest to Whisper.
To counter the obvious conflict of interest, the team validated its harness by reproducing OpenAI’s published Whisper WER figures on the same corpus and released the raw per-utterance transcripts for independent rescoring. They used the same normalizer for both engines, forced fully on-device recognition (SFSpeechRecognizer defaults to sending audio to Apple’s servers), and counted failures as 100% WER. The caveats are real: English-only, clean audiobook speech rather than meetings, and a single machine. The exercise also surfaced a shipping bug — a missing finalizeAndFinishThroughEndOfInput() call that hung file imports — fixed the same day.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.