Picovoice/rhino

On-device Speech-to-Intent engine powered by deep learning

什么是 Rhino

Rhino 是 Picovoice 的 语音转意图引擎。它监听麦克风(或音频文件),在设备上运行一个微型神经网络,并直接返回一个结构化的意图——用户想要做什么——以及任何提取出的变量(称为 槽位)。例如,说出:

“我可以来一杯小杯双份浓缩咖啡吗?”

会产生如下结果:

{
  "isUnderstood": true,
  "intent": "orderBeverage",
  "slots": {
    "beverage": "espresso",
    "size": "small",
    "numberOfShots": "2"
  }
}

为什么重要

  • 设备端运行,低延迟 – 无需云端往返,因此可离线工作并保护隐私。
  • 极小的体积 – 专为微控制器(Cortex-M)、树莓派、手机、浏览器和桌面操作系统设计。
  • 可自定义 – 开发者可通过 Picovoice Console 创建自己的 上下文(命令集)。
  • 跨平台 SDK – 提供 Python、.NET、Java、Flutter、React Native、Android、iOS、Web(JS)、Node.js 和纯 C 的即用型库。

它是如何工作的?

  1. 定义上下文 – 使用 YAML 文件将用户可能说出的 表达式(例如:“在 $location 的灯关掉”)映射到一个 意图,并可选择性地标记表达式中的部分为 槽位(变量)。示例:
    turnLightOff:
      - 在 $location 的灯关掉。
    
  2. 训练模型 – Picovoice 的云服务将上下文编译为二进制文件(*.rhn),其中嵌入了一个为该领域优化的小型神经网络。
  3. 执行推理 – SDK 加载二进制文件,逐帧处理 16 位 PCM 音频。当语句结束时,返回一个 Inference 对象,包含 is_understoodintentslots 字典。

快速入门(Python 示例)

# 安装 SDK
pip3 install pvrhino
import pvrhino

access_key = "YOUR_ACCESS_KEY"
context_path = "/path/to/your/context.rhn"

rhino = pvrhino.create(access_key=access_key, context_path=context_path)

while True:
    audio_frame = get_next_audio_frame()          # 16 位 PCM,长度 = rhino.frame_length
    if rhino.process(audio_frame):                # 当语句完成时返回 True
        inf = rhino.get_inference()
        if inf.is_understood:
            print("意图:", inf.intent)
            print("槽位:", inf.slots)
        else:
            print("未理解")
        rhino.delete()                            # 释放原生资源
        break

其他语言也遵循相同模式;每个 SDK 都暴露 sample_rateframe_lengthprocess()get_inference()


哪里可以尝试?

  • Web 演示 – 访问 https://picovoice.ai/demos/barista/ 查看交互式咖啡师演示。
  • 桌面/嵌入式演示demo/ 文件夹中包含 C、Python、.NET、Java、Flutter、React Native、Android、iOS 和 Node.js 的预构建示例,展示麦克风实时和文件推理两种模式。
  • 基准测试 – README 中链接了 speech-to-intent-benchmark,可公开对比云服务表现。

适合谁?

  • 需要始终监听语音控制但不将音频发送到云端的 物联网/嵌入式设备(智能灯、咖啡机、恒温器等)。
  • 希望实现离线语音命令的 移动应用
  • 需要保护隐私的语音交互的 Web 应用
  • 希望通过 Picovoice Console 快速定义一组固定命令的 原型开发者

限制

  • 专为 特定、有限的词汇(一个 上下文)优化。不是通用语音识别器。
  • 加载引擎需要 访问密钥(试用免费,生产环境需商业授权)。
  • 除列出的 9 种语言外,自定义语言支持仅对商业客户开放。

快速参考链接


TL;DR

Rhino 让你嵌入一个微型、离线的神经网络,将语音命令转化为结构化意图。它可在从微控制器到浏览器的任何设备上运行,你可通过简单的基于 YAML 的控制台定义自己的命令集。如果你需要在固定领域内实现可靠、低延迟的语音控制,Rhino 是首选解决方案。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目