近年来,深度学习和相关人工智能 (AI) 技术的兴起推动了我们周围设备中语音用户界面的激增。此类设备的示例包括 Siri、Google Home 和 Amazon Alexa。但是,当前大多数设备都连接到互联网并引起隐私问题。离线处理语音数据将使这些设备能够尊重用户隐私,同时最大限度地减少延迟。Fluent.ai 正在进行的工作旨在通过优化复杂的语音识别和理解低功耗设备(如 Arm Cortex-M 系列)的模型来实现这一目标。
语音识别技术传统上依赖于云计算,因为它们的计算要求很高。这些系统通常遵循两步过程。首先,他们将用户语音转录为文本。然后他们使用自然语言处理 (NLP) 来获取意义。虽然这种类型的方法提供了能够在 Internet 上进行搜索的好处,但它也存在显着的缺点。人们担心虚拟助手监听用户对话的隐私,无法在没有互联网访问的环境中使用这些技术,以及有限的语言和口音支持。例如,有 新闻报道的合同工收听连接互联网的虚拟助手用户的私人语音数据。由于这些原因,市场对更灵活、更安全的语音识别解决方案的需求不断增长,该解决方案可以在小型设备上离线工作。
这就是 Fluent.ai 想要解决的问题:如何让语音识别脱离云端,嵌入到占用空间小的平台上,同时为任何语言、任何口音和任何环境提供高精度和鲁棒性。Fluent.ai 专注于下一波语音用户界面,这将由低功耗、非始终连接的设备引领。这种类型的设备通常由电池供电,而 Arm Cortex-M 系列 MCU 为它们提供了一个理想的平台,因为它们的功率和成本效益高。Fluent.ai 低占用空间语音理解算法可在嵌入式系统(包括 Arm Cortex-M 系统)上完全离线工作。Fluent.ai 解决方案使用突破性的基于深度神经网络的语音到意图技术,直接将用户语音映射到他们的预期动作。
这种纯声学方法提供了几个优点。生成的模型更小并且端到端优化。这会产生更小但高度准确且抗噪的模型。此外,这种方法使 Fluent.ai 能够以任何语言快速开发模型,从而为我们的合作伙伴减少上市时间和成本。最后,Fluent.ai 开发了业界唯一真正的多语言模型,可以同时识别多种语言。此功能允许用户在语言之间无缝切换,而无需在两者之间配置语言设置。
Fluent.ai 提供两条主要产品线:WakeWord 和 Fluent.ai Air——用于自动意图识别。总而言之,Fluent.ai 独特的语音到意图 Air 模型提供了完全离线、低功耗和低延迟的语音理解系统,可以通过训练在单个小空间内识别任何语言、口音以及语言和口音的组合软件模型。
Fluent µCore 和主要功能
Fluent µCore 是 Fluent.ai 专有推理引擎,构建在 Arm CMSIS-DSP 和 CMSIS-NN 库之上。Fluent µCore 针对低占用空间设备和低延迟进行了优化。Fluent µCore 包含多项创新,例如优化代码大小的选择性编译、将网络权重从 32 位浮点数量化为 8 位整数,以及使用流式 NN 计算进行实时处理。
Fluent µCore 由 Fluent WakeWord 引擎 (WW) 和自动意图识别 (Air) 引擎组成。Fluent WW 持续监听一个或多个唤醒短语。传入的音频通过特征提取和 WakeWord 神经网络进行流式传输,以检测音频是否包含唤醒短语。当检测到唤醒短语时,µCore 开始监听用户的命令或查询,例如“关灯”。在这个阶段,输入语音通过意图识别神经网络进行评估。如果意图网络检测到用户说出了有效的意图,则系统会输出用户意图的表示。
图 1. Fluent WakeWord 引擎 (WW) 和 Automatic Intent Recognition (Air) 引擎
构建始终聆听的低功率语音理解系统的主要挑战之一是实时处理话语或语音。在训练期间,整个话语都是可用的,话语的长度是有限的并且是提前知道的。但是,在对微控制器进行推理期间,音频数据以流的形式接收,一次一帧。这引入了独特的问题,例如,必须最小化解码时间以获得良好的用户体验。当连续收听时,音频没有固定的长度或预定的结束。神经网络必须在不确定的持续时间内进行计算,通常是通过在重叠窗口中应用网络。任何推理算法都必须能够有效地做到这一点,同时保持与训练期间相同的准确性。此外,在 GPU 上进行训练时,它们专为批处理而设计,整个网络的话语激活可以存储在内存中。然而,内存是微控制器的稀缺资源,存储整个网络的激活是不可行的。
处理这种无界时间数据的一种潜在方法是单向递归神经网络 (RNN)。然而,RNN 可能是计算密集型的。卷积网络的计算效率更高,但现有库中的卷积主要是针对图像识别设计的,而不是语音等时间数据。Fluent µCore 旨在解决这些问题。它允许我们处理关于流特征的神经网络。Fluent µCore 利用 Arm CMSIS-NN 库在 Arm 平台上利用汇编程序优化。此外,Arm CMSIS-NN 是具有 Apache 2.0 许可证的开源软件,因此也是在其他平台上使用的理想选择。Fluent µCore 以模块化方式构建,因此如果需要,可以轻松更改底层 CMSIS 库以更新版本。
神经网络中的每一层都表示为一个对象,具有一组权重、一个激活缓冲区和一个处理函数。在 Arm Cortex 芯片上,权重根据需要从闪存加载。process 函数将单个音频帧的向量作为输入,执行计算,更新其缓冲区,并发出输出向量。然后可以将这些层组合在一个顺序网络中。
图 2. Fluent µCore 和 CMSIS-NN
在对流数据执行窗口操作(如卷积或池化)时,我们只需要保留一个宽度等于内核宽度的缓冲区。这种方法大大减少了内存使用,因为我们不需要为整个话语保留特征和激活,只需要最近的帧。此外,这种方法不需要卷积网络具有固定的输入大小。通常,将卷积网络应用于时间序列时,需要将整个网络重复应用于重叠窗口,从而导致冗余操作。流式解码消除了对这些冗余计算的需要,从而可能节省 CPU 周期。因为在用户说出话语的同时不断地进行处理,所以这种方法还具有较短的解码时间。
图 3 Fluent WakeWord 模型的比较,使用 Fluent µCore,和。用于微控制器的 TensorFlow Lite。
为了研究 Fluent µCore 和 Arm CMSIS 的有效性,我们使用唤醒词识别模型将 µCore 与用于微控制器的 Tensorflow Lite (tflite-micro) 进行了基准测试。该原型模型由 Fluent 设计,是一个 150kb、8 位量化网络,具有多个卷积层。Fluent 流式解码每 80 毫秒产生一次输出。该比较的结果如图 3 所示。
我们以两种方式测试 tflite-micro:以 80 毫秒间隔应用窗口,以及以 400 毫秒间隔应用稍大的窗口。更大的间隔需要更少的计算,但代价是更高的延迟。当用户说出唤醒词时,他们必须等待最多 400 毫秒,系统才能做出反应。无论哪种情况,在 µCore 中存储激活所需的 RAM 量只是 TFLite 所需 RAM 的一小部分。此外,即使使用 400 毫秒的间隔,tflite-micro 也需要三倍多的 CPU 周期。总之,Fluent µCore 更小的内存和 MIPS 要求使得在内存和 CPU 受限的设备上运行功能更强大的网络成为可能。这降低了我们的 OEM/ODM 合作伙伴和最终用户的成本。
Fluent.ai 嵌入式语音识别软件是使用 Arm 处理器的消费电子设备的理想解决方案。Fluent µCore 的能效以及我们机器学习算法固有的隐私保护特性,使其非常适合家庭和办公室中的智能设备。智能手表、健身追踪器以及微波炉、洗衣机、空调和工厂机器人自动化等智能家电都是 Fluent.ai 语音理解技术目标应用的主要示例。此外,Fluent 能够将多种语言构建到一个模型中,这意味着用户可以在与其设备交互时在语言之间无缝切换,而无需在两者之间配置语言设置。这也带来了成本节约、业务便利、为我们的 OEM 和 ODM 合作伙伴带来市场优势。他们不仅可以使用单一 SKU 解决方案来应对多个市场,而且还可以毫不费力地应对语言密度高的市场。
原作者:玛丽·本尼恩