要点速览

  • 开源语音模型正在激增,但在跨设备和硬件平台执行语音智能体工作负载(如转录、实时流处理、声纹识别、语音活动检测、实时翻译)时,尚缺乏一个统一的原生推理平台。
  • ExecuTorch 填补了这一空白。作为通用的 PyTorch 原生推理平台,它使开发者能够直接从 PyTorch 导出语音模型,并在 Linux、macOS、Windows、Android 和 iOS 的 CPU、GPU 及 NPU 上运行。
  • 我们为涵盖四个不同任务的五个语音模型提供了参考实现,并提供了可供构建的 C++ 应用层和移动应用。LM Studio 已在生产环境中发布了由 ExecuTorch 支持的语音转录功能。

当今的端侧语音技术

AI 智能体正越来越多地被赋予“听”与“说”的能力。无论是智能眼镜上的个人助理、手机上的实时翻译器,还是笔记本电脑上的语音编程助手,语音正成为智能体与用户交互的关键模态。一个具备语音功能的智能体不仅需要离线转录,还需要流式语音识别、声纹识别、语音活动检测、噪声抑制、语音转文字、实时翻译以及全双工支持,且所有这些功能都需要在本地低延迟运行。

这种需求推动了一波开源语音模型的热潮。在过去几个月中,我们见证了 Qwen3-ASR、Parakeet ASR、Voxtral Realtime、Kyutai Hibiki-Zero、Kokoro TTS、SAM-3-Audio、Liquid LFM2.5-Audio、Sortformer Diarization 等模型的涌现。目前所缺失的是一种在端侧设备上原生部署它们的统一方式——即以编译后的 C/C++ 库形式直接在硬件上运行,且无需 Python 运行时或云端依赖。

大多数模型都可以在 Python 中运行,但生产级的端侧部署需要原生的 C++ 库。现有的原生解决方案往往要么是针对特定模型的 C++ 重写版(每换一种架构都需要重新构建),要么是绑定到单一硬件生态系统的平台专用框架。随着语音模型在架构和复杂性上的日益多样化,这两种方法都无法有效扩展。

我们将 ExecuTorch 构建为一个通用的原生推理平台,能够跨模型、后端和设备运行。去年,我们实现了正式发布 (General Availability),提供了包括大语言模型 (LLM)、视觉模型和多模态模型在内的生产级支持。现在,我们将同一平台扩展到了语音领域。我们认为语音是端侧 AI 的关键前沿,我们希望证明 ExecuTorch 的架构能够处理不同硬件上多种多样的语音工作负载。在本文中,我们提供了涵盖四个不同任务的五个语音模型的参考实现,以及可供构建的示例应用和移动应用。LM Studio 已在其桌面应用中发布了由 ExecuTorch 支持的语音转录功能。

设计原则

这一方法基于三个原则:

尽可能减少模型修改,而非全盘重写。模型作者的 PyTorch 代码是起点。我们不会用其他语言重写模型或将其转换为其他格式,而是直接对原始 PyTorch 模型的核心组件(音频编码器、文本解码器、Token 嵌入、梅尔频谱图)使用 torch.export(),仅进行极小的修改。例如,当 Mistral 发布 Voxtral Realtime,而 NVIDIA 发布 Parakeet TDT 和 Sortformer 时,我们直接导出了它们的 PyTorch 源码,并仅针对性地修改以满足 torch.export() 的限制。无需格式转换,无需使用 C++ 重新实现。

导出模型,用 C++ 编排。模型与应用逻辑处于不同层级。模型组件被导出为编译后的工件。轻量级的 C++ 应用层将一切串联起来,处理复杂的编排逻辑:流式窗口簿记、音频重叠处理、频谱图对齐、有状态的解码循环。ExecuTorch 负责解决核心难点:跨硬件后端的各种高效推理。

一次编写,随处运行。一个导出的模型适用于所有目标平台。同一个导出模型可在 XNNPACK (CPU)、Metal Performance Shaders (Apple GPU)、CUDA (NVIDIA GPU) 或 Qualcomm (NPU) 上运行,且模型或导出脚本中几乎不需要后端特定的逻辑。量化(int4、int8)在导出前于 PyTorch 中完成,无需手动编写内核即可大幅缩减模型大小。

语音模型实践

我们已在五个架构迥异的语音模型上验证了该方法:

Voxtral Realtime(流式转录,约 4B 参数)。Mistral 的流式转录模型在实现实时转录的同时保持了离线级别的准确性,是“导出模型,用 C++ 编排”方法的极佳示例。C++ 应用层处理音频信号处理:包括过去上下文和前瞻信息的重叠音频窗口、频谱图帧对齐以及编码器位置跟踪。导出模型处理繁重的计算:使用环形缓冲区 KV 缓存的 Transformer,使其能在固定内存内实现无限时长的流式处理。所有流式常量均在导出时计算并以自描述元数据形式写入模型。Int4 量化将模型从 20GB 压缩至 5–6GB。

Parakeet TDT(离线转录,0.6B 参数)。NVIDIA 的高精度语音识别模型使用了 Token-and-Duration Transducer (TDT) 架构,模型在每一步既预测要生成的 Token,也预测音频向前推进的幅度。这种非标准解码循环是 ExecuTorch 多方法导出的完美案例:编码器、解码器和联合网络被导出为单个工件中的三种不同方法,而 C++ 应用层则实现了 TDT 特有的贪婪解码及 LSTM 状态管理。应用层还在 C++ 中实现了时间戳提取(单词边界、句子分割),使其成为一个完全独立的端侧转录流水线。

Sortformer (声纹识别,117M 参数)。NVIDIA 的声纹识别模型用于识别音频流中最多四位发言人的“谁在何时说话”。模型本身是无状态的:它接收音频嵌入并输出逐帧发言人概率。所有流式处理的复杂性都在 C++ 应用层:包括保留最具辨别力帧的发言人缓存、用于短期上下文的滑动 FIFO 窗口,以及当内存满时丢弃最不重要帧的缓存压缩逻辑。这是 ExecuTorch 实现模型与编排分离的最清晰演示之一。

Whisper (离线转录,39M–1.5B 参数)。OpenAI 广泛采用的语音识别模型,在 ExecuTorch 中拥有最广泛的后端覆盖(CPU、Apple GPU、NVIDIA GPU 和 Qualcomm NPU)。

Silero VAD (语音活动检测,2MB)。一个用于检测是否有人在说话的轻量级模型。它是所有语音智能体的基础模块,也是贡献者的良好切入点。

模型 任务 后端 平台
Parakeet TDT 转录 XNNPACK, CUDA, Metal Performance Shaders, Vulkan Linux, macOS, Windows, Android
Voxtral Realtime 流式转录 XNNPACK, Metal Performance Shaders, CUDA Linux, macOS, Windows
Whisper 转录 XNNPACK, Metal Performance Shaders, CUDA, Qualcomm Linux, macOS, Windows, Android
Sortformer 声纹识别 XNNPACK, CUDA Linux, macOS, Windows
Silero VAD 语音活动检测 XNNPACK Linux, macOS

示例应用

除了模型赋能之外,我们还构建了一些端到端的应用来展示其潜力。这些只是起点,我们鼓励开发者基于它们进行扩展,以适配各自的使用场景。

桌面端实时转录该演示程序从麦克风读取实时音频,并在你说话时输出转录文字,完全在端侧运行。这是任何桌面应用语音输入功能的基础:如编程助手、笔记工具、辅助功能等。下载 .dmg 文件,立即试用:

由 ExecuTorch 和 Voxtral Realtime 驱动的独立实时语音转录 macOS 应用。视频

Android 语音识别。 ParakeetWhisper Android 应用允许用户录制音频并进行端侧转录。这些是功能齐全的应用,包含模型下载、麦克风录音和转录功能,均可在 executorch-examples 仓库中获取。

Android implementation demonstration

由 ExecuTorch 和 Parakeet 驱动的 Android 端(三星 Galaxy S24)语音转录(带时间戳)。视频

生产环境案例研究:LM Studio

LM Studio 是一款用于在本地运行 LLM 的热门桌面应用。他们最近在产品中增加了语音转录功能,底层由运行 Parakeet TDT 模型的 ExecuTorch 驱动。LM Studio 已在应用界面中集成了转录功能,API 端点也将很快推出。有了它,LM Studio 将支持开发者将本地语音识别集成到其工作流中。他们选择 ExecuTorch 是看重其跨平台支持和出色的性能,实现了同一模型和应用层在 macOS (Metal Performance Shaders) 和 Windows (CUDA) 上的无缝发布。

LM Studio 采用 ExecuTorch 进行跨平台端侧转录

参与其中

这些参考实现只是起点,我们希望支持的语音模型生态远不止于此。像 Qwen3-ASR、Kyutai Hibiki-Zero、Kokoro TTS、SAM-3-Audio 和 Liquid LFM2.5-Audio 都是 PyTorch 原生模型,是非常理想的 ExecuTorch 赋能对象。我们希望社区能加入并共同实现这一目标:

  • 在你的框架和应用中采用 ExecuTorch 进行语音推理。
  • 贡献新模型——选择一个语音模型,导出它,编写应用层,并提交 PR。无论是实时翻译、语音增强、唤醒词检测、降噪还是文本转语音,架构均已就绪。
  • 贡献后端和平台——帮助我们填补剩余的缺口,并改善跨硬件的性能表现。

ExecuTorch 不仅仅用于语音。它也是驱动端侧 LLM、视觉模型和多模态 AI 的同一平台。

开始构建:ExecuTorch 文档 | ExecuTorch 仓库 | ExecuTorch 示例 | ExecuTorch Discord

致谢

这项工作离不开 PyTorch 团队成员的支持和核心贡献,他们包括 Bilgin Cagatay, Tanvir Islam, Hamid Shojanazeri, Siddartha Pothapragada, Jack Khuu, Kaiming Cheng, Nikita Shulga, Angela Yi, Bin Bao, Shangdi Yu, Sherlock Huang, Yanan Cao, Digant Desai, Anthony Shoumikhin, Mark Saroufim, Chris Gottbrath, Joe Spisak, Jerry Zhang, Supriya Rao

感谢 Mistral AI 的 Patrick von Platen 构建了 Voxtral Realtime 模型并将其开源,同时也感谢他审阅和测试了我们的集成代码。