Picovoice/rhino

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

Rhino – On‑device Speech‑to‑Intent Engine

What it is – Rhino is a lightweight, on‑device engine that turns spoken commands into structured intents and slots (key‑value pairs) in real time. It runs locally on a wide range of hardware – from micro‑controllers (Arm Cortex‑M, STM32, Arduino) to phones, desktops, and browsers – so no cloud connection is required.

How it works – A developer defines a context (a set of voice commands) using Picovoice’s Console. Each command is an expression that can contain slots (e.g., $size:beverageSize). Rhino’s deep‑neural‑network model, trained on real‑world audio, listens to a microphone stream, detects when a command is spoken, and returns a JSON‑like inference:

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

If the utterance doesn’t match the context, isUnderstood is false.

Key features from the README

  • Compact & efficient – Designed for IoT devices with limited CPU/memory.
  • Cross‑platform – Runs on:
    • Embedded (Arm Cortex‑M, STM32, Arduino)
    • Raspberry Pi
    • Android / iOS
    • Web browsers (Chrome, Safari, Firefox, Edge) via WebAssembly
    • Desktop OSes (Linux, macOS, Windows)
  • Multi‑language – English, Chinese, French, German, Italian, Japanese, Korean, Portuguese, Spanish; additional languages available commercially.
  • Self‑service customisation – Users can create their own contexts (intents/slots) through the Picovoice Console.
  • SDKs – Ready‑to‑use bindings for Python, .NET, Java, Flutter, React Native, Android, iOS, Web (vanilla JS & React), Node.js, and C.
  • Demo apps – Sample programs for microphone or file input across all supported languages and platforms.
  • Performance – Benchmarked against major cloud services (see linked benchmark repo).

Typical use cases – Voice‑controlled smart‑home devices, appliances, wearables, or any application where a small, fixed set of commands must be recognized locally without sending audio to the cloud.

Getting started – Install the SDK for your language (e.g., pip install pvrhino for Python), obtain an AccessKey from the Picovoice Console, load a context file, and feed 16‑bit PCM audio frames to process(). When process() returns true, call get_inference() to retrieve the intent.


Links

Related

  • Project
  • Project
  • Project
  • Project
  • Project