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 的即用型库。
它是如何工作的?
- 定义上下文 – 使用 YAML 文件将用户可能说出的 表达式(例如:“在 $location 的灯关掉”)映射到一个 意图,并可选择性地标记表达式中的部分为 槽位(变量)。示例:
turnLightOff: - 在 $location 的灯关掉。 - 训练模型 – Picovoice 的云服务将上下文编译为二进制文件(
*.rhn),其中嵌入了一个为该领域优化的小型神经网络。 - 执行推理 – SDK 加载二进制文件,逐帧处理 16 位 PCM 音频。当语句结束时,返回一个
Inference对象,包含is_understood、intent和slots字典。
快速入门(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_rate、frame_length、process() 和 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 种语言外,自定义语言支持仅对商业客户开放。
快速参考链接
- GitHub 发布 – https://github.com/Picovoice/rhino/releases
- Picovoice Console(创建上下文) – https://console.picovoice.ai/
- SDK 文档 – 请参阅 README 中 SDKs 部分的语言特定章节。
- 包管理器 – Maven、npm、NuGet、CocoaPods、Pub、PyPI 均提供对应绑定。
TL;DR
Rhino 让你嵌入一个微型、离线的神经网络,将语音命令转化为结构化意图。它可在从微控制器到浏览器的任何设备上运行,你可通过简单的基于 YAML 的控制台定义自己的命令集。如果你需要在固定领域内实现可靠、低延迟的语音控制,Rhino 是首选解决方案。
相关
- 项目
- 项目
- 项目
- 项目
- 项目