このプロジェクトは、棚の画像認識、在庫状態、音声対話、販売会話分析を 1 つのブラウザー画面に統合し、reComputer RK3588 上で実行します。reCamera と ReSpeaker XVF3800 を接続し、RKNN 画像推論、音声認識、話者識別、ローカル LLM 処理、音声読み上げをエッジ側で完結できます。
実行用アセットの準備後は、映像、音声、在庫データ、生成結果をすべてローカルに保持し、デモ実行中にクラウド API を呼び出す必要はありません。

主な特長
- 1 つの Vue フロントエンドと FastAPI サービスで 3 つのデモを統合管理。
- RK3588 NPU 上で RKNN 物体検出を実行。
- reCamera の検出映像とリアルタイム商品状態を利用。
- ReSpeaker XVF3800 による遠距離音声収録。
- ローカルの Qwen3-ASR、話者識別、RKLLM、Piper TTS を利用。
- デモ切り替え、ハードウェア状態、モデルサービス、推論パイプラインを画面に表示。
- 在庫数は決定的な業務ロジックで計算し、LLM に在庫を推測させない設計。
3 つのデモ
1. シングルカメラ・スマートシェルフと音声アシスタント

reCamera は検出結果付き RTSP 映像とリアルタイムの商品状態を reComputer に送信します。スタッフは次のような質問を行えます。
- 棚に飲料ボトルは何本残っていますか?
- 現在、商品は何種類ありますか?
- 在庫切れの商品はどれですか?
回答は構造化データとして画面に表示され、reComputer に接続したスピーカーから読み上げられます。
LLM は質問の意図だけを判定し、商品名と数量は最新の reCamera 商品状態からプログラムが計算します。状態が未初期化または古い場合は、在庫不明と明示し、未確認の数量を生成しません。
2. 4 ストリーム・スマートシェルフ監視
4 つの独立したキャプチャー/推論プロセスを RK3588 上で同時に実行します。ブラウザーには次の情報が表示されます。
- 検出枠付き 4 ストリーム映像
- ストリームごとのキャプチャー、推論、表示 FPS
- NPU worker の状態
- 共通の補充イベント・タイムライン
- 棚の在庫変化と補充通知
リポジトリには、2 つの FP16 RKNN モデル、RKNN Lite 2.3.2 arm64 wheel、サンプル動画、デモ設定が含まれます。
棚領域とイベント規則は同梱サンプル動画向けです。カメラ位置や棚を変更する場合は、ROI と業務ルールを再調整してください。
3. 販売会話分析

ReSpeaker XVF3800 がスタッフと顧客の会話を収録し、次のローカル処理を行います。
- Silero VAD で音声区間を検出。
- CAM++ で話者特徴を抽出し、話者を識別。
- Qwen3-ASR でリアルタイム文字起こし。
- ローカル RKLLM で会話要約、顧客意図、推奨アクションを生成。
文字起こしと分析結果はブラウザーへ継続的に送信されます。重複発話の分離には対応していないため、複数人が同時に話す場合は精度が低下する可能性があります。
システム構成
| コンポーネント | 既定の接続 | 用途 |
|---|---|---|
| ブラウザー → reComputer | http://<RK3588-IP>:8080 | 統合 UI、REST API、WebSocket イベント |
| reCamera → reComputer | RTSP :8554、WebSocket :9002 | 検出映像と商品状態 |
| ReSpeaker → reComputer | USB Audio、ALSA カード名に Array | 遠距離音声収録 |
| reComputer → スピーカー | ES8311 3.5 mm 出力 | Piper 音声再生 |
| ローカル ASR / RKLLM | :8621 / :8001 | 音声認識、意図判定、要約 |
ハードウェア要件
| ハードウェア | 要件 |
|---|---|
| エッジコンピューター | reComputer RK3588、8 GB 以上を推奨 |
| カメラ | USB ネットワークまたは Ethernet で接続可能な reCamera |
| マイク | ReSpeaker XVF3800 USB マイクアレイ |
| 音声出力 | ES8311 3.5 mm に接続するヘッドホンまたはアクティブスピーカー |
| ストレージ | 完全なオフライン音声アセットには 12 GB 以上を推奨 |
| 操作端末 | reComputer または同一 LAN 上のブラウザー端末 |
4 ストリーム棚検出だけを試す場合、reCamera、ReSpeaker、音声サービスは省略できます。
ソフトウェア要件
- Debian 12 arm64
- 動作する RKNPU ドライバーと RKNN Runtime
- Python 3.11 と
python3-venv - Node.js 18 以降
curl、alsa-utils- ASR/RKLLM 用 Docker と Docker Compose
- go2rtc は任意。未導入時は MJPEG にフォールバック
クイックスタート
1. コードを取得
git clone https://github.com/Seeed-Projects/Lab-Prooject-RK.git
cd Lab-Prooject-RK
cp .env.example .env実際の接続に合わせて .env の reCamera アドレス、ALSA カード、音声出力、ローカルモデルサービスを確認してください。
2. アプリケーション環境を準備
./scripts/bootstrap.sh
./scripts/verify.shbootstrap.sh はバックエンドと RKNN 仮想環境を作成し、RKNN Lite を導入し、Vue フロントエンドをビルドし、検証済み Piper アセットを取得します。依存関係がキャッシュされていない場合はインターネット接続が必要です。
3. 任意:音声ランタイムを準備
マルチカメラ棚検出だけを試す場合は、この手順を省略できます。在庫音声アシスタントと販売会話分析には、追加の ASR/RKLLM アセットが必要です。
別途配布されるオフラインバンドルを次に配置します。
services/voice-pipeline/deploy/bundle/cd services/voice-pipeline
./deploy/restore.sh ./deploy/bundle
docker compose -f deploy/docker-compose.asr-realtime.yml up -d
docker compose -f deploy/docker-compose.llm-summary.yml up -d
./bootstrap.sh
cd ../..4. デモセンターを起動
./scripts/start.sh
./scripts/status.sh同一 LAN のブラウザーで http://<RK3588-IP>:8080 を開きます。
停止するには次を実行します。
./scripts/stop.sh検証と状態確認
./scripts/verify.shcurl -fsS http://127.0.0.1:8080/api/v1/health
curl -fsS http://127.0.0.1:8080/api/v1/hardware/status
curl -fsS http://127.0.0.1:8080/api/v1/showcase/status
curl -fsS http://127.0.0.1:8621/health
curl -fsS http://127.0.0.1:8001/healthAPI ドキュメント:http://<RK3588-IP>:8080/docs
既知の制限
- 完全な音声デモには、Git に含まれない ASR、RKLLM、モデルアセットが必要です。
- 依存関係がキャッシュされていない場合、
bootstrap.shはネットワーク接続を必要とします。 - 4 ストリーム棚デモの ROI と一部イベント規則はサンプル動画専用です。
- 在庫回答には新しく初期化された reCamera 商品状態が必要で、映像だけから数量を推測しません。
- 話者識別は重複発話に対応していません。
- WebSocket とデモ UI は公開ネットワーク向けの認証を備えていません。信頼できる LAN または安全なリバースプロキシ内で使用してください。
リソース
統合コードは Apache-2.0 ライセンスです。モデル、サンプルメディア、vendor wheel、上流サービスには、それぞれのライセンスが適用されます。