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)、Raspberry Pi、スマートフォン、ブラウザ、デスクトップOSなど、幅広いプラットフォームに対応。
  • カスタマイズ可能 – デベロッパーは 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("Intent:", inf.intent)
            print("Slots:", 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 で、クラウドサービスとの公開比較をご覧いただけます。

どんな人に向いているか?

  • クラウドに音声を送信せずに常に音声制御が必要な IoT/エムベデッドデバイス(スマートライト、コーヒーメーカー、温度調節器など)。
  • オフライン音声コマンドを希望する モバイルアプリ
  • プライバシーを守る音声インタラクションが必要な Webアプリケーション
  • Picovoice Console を使って、簡単な YAML ベースのインターフェースで、小さな固定コマンドセットを素早く定義したい プロトタイピング開発者

制限事項

  • 特定の、限定された語彙コンテキスト)に最適化されています。汎用的な音声認識エンジンではありません。
  • エンジンをロードするには アクセスキー(トライアルは無料、本番環境では商用ライセンスが必要)が必要です。
  • 指定された 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 が最適なソリューションです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト