跳到主要内容

设备端语音转文本 (STT)

· 阅读需 4 分钟
Aditya Sahu
Aditya Sahu
AI @ Synaptics

在实时语音识别领域,Whisper 模型一直处于技术前沿,为开发者提供高效的音频转录能力。在设备上本地运行 whisper.cpp 开启了令人兴奋的可能性,特别是对于需要低延迟、高可靠性且独立于云基础设施运行的应用。在本博客中,您将探索如何使用 Astra Machina 开发套件在 SL1680 处理器上实现 whisper.cpp

image

为 Machina 交叉编译 Whisper 二进制文件

在嵌入式设备上部署 whisper.cpp 需要交叉编译,这是一个在一个平台(主机)上编译代码以在另一个平台(目标)上运行的过程。以下是如何为运行 Yocto Linux 的 Astra Machina 上的 SL1680 处理器交叉编译 whisper.cpp

第一步是在您的主机(比如 Ubuntu)上建立交叉编译环境。这涉及选择与 Astra Machina 架构匹配的适当交叉工具链。您可以从这里获取 Astra 的预构建工具链。

有了这个预构建工具链,您可以在主机上设置 Poky 环境。完成后,您就可以开始构建二进制文件,这基本上意味着将 whisper.cpp 源代码转换为 SL1680 处理器可以实际运行的程序。这就是交叉编译的本质 - 在一台机器上构建代码使其能在另一台机器上运行。

在 Machina 开发套件上部署 whisper.cpp

二进制文件准备就绪后,下一阶段涉及将其部署到 Machina 开发板上。SL1680 处理器可以轻松在 CPU 上运行该二进制文件。您可能需要采用优化措施来更高效地在 GPU 上管理工作负载。

您还需要从 HuggingFace 下载 Whisper 模型到 Machina 开发板。

我们评估了 whisper.cpp 系列中各种模型在运行包含约翰·F·肯尼迪总统标志性演讲的 jfk.wav 文件时的性能:"所以我的美国同胞们,不要问国家能为你做什么,而要问你能为国家做什么。"

指标总结如下表:

模型名称内存使用加载时间 [ms]编码时间 [ms]解码时间 [ms]总时间 [ms]
ggml-tiny.en750 MB129.504463.7319.795851.29
ggml-tiny.en-q8_0706 MB128.193103.686.524088.51
ggml-base.en892 MB170.0910964.45104.6613229.58
ggml-base.en-q5_1808 MB125.378299.7826.6010015.75
信息

输入 WAV 文件长度为 11 秒。

所有模型的词错率 (WER) 为 0%。

所有实验均使用 4 个线程。

本实验仅使用英语模型。

观察结果

模型的选择应该由具体的应用需求来指导。对于实时、资源受限的环境,较小或量化的模型在性能和准确性之间取得了最佳平衡。

  • 结果清楚地展示了模型大小和性能之间的权衡。较小的模型(ggml-tiny.en 和 ggml-tiny.en-q8_0)消耗显著更少的内存和 CPU,导致更快的加载和处理时间。这些模型非常适合在 SL1680 处理器等资源受限设备上的实时应用。

  • 模型的量化版本(ggml-tiny.en-q8_0 和 ggml-base.en-q5_1)在内存使用和 CPU 负载方面有明显的减少,转化为更快的处理时间。这使它们特别适合于效率至关重要的边缘 AI 应用。

  • 较大的模型(ggml-small.en 和 ggml-base.en)可能以增加资源消耗为代价提供更好的准确性。当目标设备有充足资源或转录准确性最为重要时,这些模型更合适。

在嵌入式系统上部署 whisper.cpp 等高级 AI 模型证明了边缘计算的巨大潜力。通过利用 Astra Machina 开发套件上 SL1680 处理器的强大功能,您可以为独立于云基础设施运行的设备带来复杂的语音识别功能,为需要低延迟和高可靠性的应用开辟新的可能性。

延伸阅读

对于那些渴望进一步探索的人,这里有一些详细的、循序渐进的教程来指导您完成整个过程。