苹果 SpeechAnalyzer API 基准测试:超越 Whisper 和前代
苹果全新SpeechAnalyzer是我们测试过的准确率最高的端侧语音引擎。在LibriSpeech数据集的纯净语音和含噪语音测试中,它的表现全面优于我们搭载的所有Whisper模型(包括Whisper Small),同时运行速度约为Whisper Small的三倍。而它所取代的旧API——SFSpeechRecognizer,在纯净语音测试中排名垫底,甚至不如仅40MB的Whisper Tiny模型。
| 引擎 | test-clean词错误率 | test-other词错误率 | 模型大小 |
|---|---|---|---|
| Apple SpeechAnalyzer(iOS/macOS 26) | 2.12% | 4.56% | 系统级 |
| Whisper Small(WhisperKit CoreML) | 3.74% | 7.95% | ~460MB |
| Whisper Base | 5.42% | 12.51% | ~140MB |
| Whisper Tiny | 7.88% | 17.04% | ~40MB |
| Apple SFSpeechRecognizer(旧版) | 9.02% | 16.25% | 系统级 |
数值越低表现越好:WER即词错误率,指引擎识别时替换、遗漏或凭空生成的词汇占比。LibriSpeech的test-clean子集包含2620条纯净朗读语音;test-other子集则是2939条难度更高、含噪的语音样本。所有引擎均在Apple M2 Pro(32GB内存,macOS 26.5.1系统)上完成纯端侧运行测试。
测试背景
随着iOS 26和macOS 26发布,苹果用全新API SpeechAnalyzer和SpeechTranscriber替代了旧版SFSpeechRecognizer,但未公布新引擎的准确率数据。这让每位开发者在决定是否迁移、以及对比苹果内置识别与Whisper性能时,都只能凭经验猜测。
我们在隐私优先的端侧AI工作空间Inscribe中同时搭载了苹果的新旧引擎和三款Whisper模型,这让我们拥有独特优势:可以在同一设备、同一音频样本上,通过完全一致的生产代码路径测试这五款引擎。于是我们开展了本次测试。
是否应从SFSpeechRecognizer迁移?
答案是肯定的,这是本次测试最明确的结论。新API将词错误率降低至原来的1/3.5到1/4:纯净语音识别错误率从9.02%降至2.12%,含噪语音从16.25%降至4.56%。不存在任何准确率取舍问题——在我们所有测试场景中,新引擎均全面胜出,还能生成带标点和大小写规范的文本,而旧引擎的输出格式粗糙得多。
换个角度看:用旧API转录一小时会议,错误词汇量约是SpeechAnalyzer的四倍。如果你的应用仍在使用SFSpeechRecognizer处理语音指令以外的长音频,仅从准确率角度考量,迁移就完全值得。
SpeechAnalyzer vs Whisper
更令人意外的结果是:苹果新引擎在两项测试中均以显著优势击败了我们搭载的最大模型Whisper Small,同时每秒音频的计算量仅为Whisper Small的约1/3。对于英文场景,在苹果硬件上,这款内置引擎已是目前我们能测得的性能最强的端侧选项。
不过Whisper仍保有两大核心优势:支持的语言数量远超SpeechTranscriber(后者仅支持约30个地区语言),且可跨平台运行,不局限于搭载26版系统的苹果设备。但在当前iPhone或Mac上进行英文转录时,Whisper默认作为高准确率首选的时代已成为过去。
基于这一测试结果,我们调整了自家产品:Inscribe的自动引擎模式现在会优先为支持的语言选用SpeechAnalyzer,其余语言则使用Whisper。发布基准测试却在产品默认设置中无视结果,显然不是坦诚的做法。
速度表现
所有五款引擎的运行速度均远超实时处理:在M2 Pro上的速度约为实时的12至40倍,意味着转录一小时音频仅需约1.5到5分钟。SpeechAnalyzer的速度约为Whisper Small的三倍,同时准确率更高。我们暂不公布精确的单引擎计时表,原因是本次准确率测试过程中,设备同时运行了开发任务,这不会影响词错误率,但会给计时数据带来误差。后续我们将在设备空闲状态下重新测试并更新计时数据。
测试方法与可验证性
由售卖相关引擎的公司发布的基准测试难免引人质疑,因此我们的测试设计了两大可验证特性。
Whisper测试结果可与OpenAI官方数据复现
我们选用LibriSpeech数据集,正是因为OpenAI公布过Whisper在该数据集上的词错误率。如果我们的测试工具对Whisper的测量准确,结果应与官方数据吻合。实际情况也确实如此,六项测试数据均高度一致:
| 引擎/测试子集 | 我们的测试结果 | OpenAI公布数据 | 差值 |
|---|---|---|---|
| Whisper Tiny, test-clean | 7.88% | 7.6% | +0.28 |
| Whisper Base, test-clean | 5.42% | 5.0% | +0.42 |
| Whisper Small, test-clean | 3.74% | 3.4% | +0.34 |
| Whisper Tiny, test-other | 17.04% | 16.9% | +0.14 |
| Whisper Base, test-other | 12.51% | 12.4% | +0.11 |
| Whisper Small, test-other | 7.95% | 7.6% | +0.35 |
这种微小且一致的正向偏差(源于我们使用了更严格的文本归一化工具,加上CoreML量化处理),正是诚实复现测试的特征;如果是随机误差,差值会正负波动。由于苹果引擎的测试使用了相同的数据集、归一化工具和评分系统,那些无法直接验证的数据,也继承了可验证数据的可信度。
原始转录文本公开
两款苹果引擎的每一条语音假设转录结果,均可与参考文本及单条语音词错误率一同下载。若你不认可我们的归一化规则,可自行重新评分。
- summary.json——包含全部十项测试结果,机器可读格式(3KB)
- raw-transcripts-apple.json.gz——SpeechAnalyzer的全部5559条语音转录结果(620KB)
- raw-transcripts-legacy.json.gz——SFSpeechRecognizer的全部5559条语音转录结果(620KB)
决定词错误率数据有效性的细节
- 统一生产代码路径:所有引擎均通过Inscribe用户实际使用的代码运行,而非采用不同缓冲机制或设置的实验室专用工具。
- 文本归一化处理:LibriSpeech的参考文本为大写无标点格式,数字以单词形式呈现;而现代引擎会输出带标点和阿拉伯数字的文本。我们对双方结果采用相同的归一化规则(大小写、标点、数字转单词、缩写还原),与OpenAI的英文归一化规则一致。若直接对原始文本评分,会误将引擎的格式优化判定为识别错误。
- 语料库整体词错误率:以总错误数除以参考文本总词数计算,避免短句被过度加权。
- 纯端侧运行验证:SFSpeechRecognizer默认会将音频发送至苹果服务器,我们强制开启了端侧识别模式,并设置工具在无法端侧运行时直接终止,而非静默切换至云端——这不仅是为了保证对比的有效性,更是因为作为隐私产品,我们绝不会上传5559条语音样本。
- 失败结果如实统计:引擎无法返回结果时,该条语音的词错误率计为100%。在总计27795次转录中,仅出现过一次此类情况(旧版引擎在test-other子集测试中)。
测试对我们产品的启发
本次测试发现了Inscribe的一个已上线bug:我们的苹果引擎文件导入功能,在将音频输入SpeechAnalyzer后关闭了输入流,但未调用finalizeAndFinishThroughEndOfInput()方法。缺少这一调用,引擎就无法返回最终结果,导致导入过程永久挂起。此前该问题未被发现,是因为我们的自动模式默认优先使用Whisper。我们当天就修复了这个bug,这也是我们公开测试细节的原因之一:仔细测量自家产品,往往能发现那些被忽略的问题。
局限性说明
- 仅测试英文:LibriSpeech是英文朗读数据集,本次结果无法反映Whisper支持但SpeechTranscriber不支持的100余种语言的性能。
- 仅测试朗读语音:LibriSpeech是行业通用的可比数据集,因此我们以此为起点。带口音、远场、多说话人会议音频将是我们后续测试的重点。
- 单一设备测试:本次测试仅在M2 Pro(macOS 26.5.1)上进行。准确率预计可推广至所有Apple Silicon设备,但速度会因芯片型号而异。
- Whisper基于WhisperKit CoreML:使用的是量化处理后的端侧转换版本,与Inscribe上线版本一致。参考GPU实现版本的性能可能略有差异,验证表已量化了这一偏差。
对普通用户的意义
如果你使用的是当前款iPhone或Mac,系统内置的SpeechAnalyzer已是英文端侧转录的最佳选择,隐私优先的方案不再意味着性能妥协。Inscribe正是使用本次测试的引擎:支持的语言用SpeechAnalyzer,其余语言用Whisper,全程端侧运行,无任何数据上传。这项基准测试并非独立于产品之外,而是我们决定产品功能逻辑的依据。