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 用の即時利用可能なライブラリが用意されています。
動作原理
- コンテキストの定義 – 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("Intent:", inf.intent)
print("Slots:", 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で、クラウドサービスとの公開比較をご覧いただけます。
どんな人に向いているか?
- クラウドに音声を送信せずに常に音声制御が必要な 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 が最適なソリューションです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト