PyTorch博客10月26日介绍了一项端侧流式语音识别案例:将较新的多语言模型Nemotron 3.5从PyTorch接入ExecuTorch,并在Google Pixel 11上分析其运行情况。案例关注音频分块大小和计算精度如何影响识别质量,以及使用单个推理线程时的处理耗时、工作负载耗时分布和实际执行的底层内核。

为什么要单独评估流式识别?文章指出,拿到完整录音后再转写的准确率,并不一定能延续到边说边识别的场景。它引用的一项跨模型研究中,Qwen3-ASR-1.7B在受测模型中的批量转写准确率最高,但改用2.4秒音频块评估时,词错误率上升了77%。同一研究的流式比较中,使用560毫秒音频块的NVIDIA Nemotron Speech Streaming 0.6B取得了最低的平均词错误率。

这组比较涉及的模型与本次案例中的Nemotron 3.5不同。文章借此强调,准确率需要按实际部署采用的音频分块节奏来衡量。对于本次案例,文章把分块大小与计算精度放在一起考察,并指出更长的音频块能够改善最终转写准确率,但会增加延迟。

具体执行路径上,ExecuTorch负责模型导出和轻量运行时:导出工具生成设备端可加载的.pte文件,受支持的算子交给CPU推理库XNNPACK。在Android上,XNNPACK可以选择Arm KleidiAI提供的优化微内核,执行内部矩阵计算;未委托给XNNPACK的算子,则使用ExecuTorch的可移植CPU内核。

文章还介绍了Arm SME2对矩阵运算的加速支持,以及FP16和采用逐通道权重量化的INT8(QC8W)等考察方向。在文中所述的Arm C1 CPU集群实现中,矩阵单元由集群内的核心共享。构建时启用SME2,只是让相应执行路径可用;要确认设备实际运行了哪些内核,仍需结合原生性能分析,而不能仅凭构建配置判断。

原始来源:Optimizing Streaming Speech Recognition on Arm® Edge Devices with ExecuTorch