注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[here]をクリックして今すぐ参加しましょう!

20. AI音声アシスタントドッグ

このレッスンでは、Pidogを AI搭載の音声アシスタントドッグ に変身させます。 ロボットはあなたの声で起動し、話しかけた内容を理解し、 個性のある声で応答し、動き・ジェスチャー・LEDの光で「感情」を表現できます。

以下を活用して、 完全にインタラクティブなロボットコンパニオン を作成します:

  • LLM:大規模言語モデル(例:OpenAI GPTまたはDoubao)による自然な会話。

  • STT:音声認識(Speech-to-Text)。

  • TTS:音声合成(Text-to-Speech)による表情豊かな音声応答。

  • センサー+アクション:超音波センサー、カメラ(オプション)、タッチセンサー、内蔵の表現豊かな動き。


始める前に

以下を完了していることを確認してください:

事前に用意しておくもの:

  • Pidogに接続された動作する マイクスピーカー

  • secret.py に保存された有効な APIキー

  • 安定したネットワーク接続( 有線接続 を推奨します)。


サンプルを実行する

両方の言語バージョンは同じディレクトリに配置されています:

cd ~/pidog/examples

英語版 (OpenAI GPT、英語の手順):

sudo python3 20_voice_active_dog_gpt.py
  • LLM: OpenAI GPT-4o-mini

  • TTS: en_US-ryan-low (Piper)

  • STT: Vosk (en-us)

起動ワード:

"Hey buddy"

---

中国語版 (Doubao、中国語の手順):

sudo python3 20_voice_active_dog_doubao_cn.py
  • LLM: Doubao-seed-1-6-250615

  • TTS: zh_CN-huayan-x_low (Piper)

  • STT: Vosk (cn)

起動ワード:

"你好 旺财"

注釈

コード内で 起動ワードロボット名 を変更できます: NAME = "Buddy" または NAME = "旺财" WAKE_WORD = ["hey buddy"] または WAKE_WORD = ["你好 旺财"]


何が起こるか

このサンプルを正しく実行すると、以下のように動作します:

  • ロボットは ウェイクワードを待機 します(例:「Hey Buddy」「你好 旺财」)。

  • ウェイクワードを検知すると:

    • LED ストリップが ピンク(呼吸エフェクト) に点灯し、起動合図を示します。

    • ロボットが設定されたウェイク応答を発話します — 例:「Hi there!」(Piper TTS による)

  • その後、Vosk STT を使って あなたの音声を認識 します(キーボード入力が有効な場合は入力も可能)。

  • 音声を認識したあと、システムは次を実行します:

    • WITH_IMAGE = True のため カメラフレームをキャプチャ し、あなたのメッセージと画像を LLM (OpenAI gpt-4o-mini)に送信します。

    • モデルが考えている間、LED は イエロー(処理中) に変わります。

    • モデルの応答は2つの部分に分かれます:

      • ACTIONS: より前 → 音声で出力されます。

      • ACTIONS: より後 → ロボットの動作キーワードにマッピングされます。

    • ロボットは ActionFlow を使って アクションを実行 します。

    • 動作完了後、ロボットは SIT 姿勢に戻り、LED は消灯します。

  • 超音波センサーが 10 cm 未満の障害物を検知 した場合:

    • メッセージを注入: <<<Ultrasonic sense too close: {distance}cm>>>

    • ロボットが自動で後退: ACTIONS: backward

    • このラウンドでは 画像入力が無効 になります。

  • タッチセンサーが反応 した場合:

    • LIKE タッチ(例:FRONT_TO_REAR)のとき:

      • 注入: <<<好きなタッチスタイル: FRONT_TO_REAR>>>

      • ACTIONS: nod (肯定的な反応)

    • HATE タッチ(例:REAR_TO_FRONT)のとき:

      • 注入: <<<嫌いなタッチスタイル: REAR_TO_FRONT>>>

      • ACTIONS: backward (回避反応)

  • LED のライフサイクル:

    • on_start → SIT 姿勢、LED 消灯

    • before_listen → シアン(待機状態)

    • before_think → イエロー(処理中)

    • before_say → ピンク(発話中)

    • after_say / on_finish_a_round → SIT 姿勢、LED 消灯

    • on_stop → アクションフローを停止し、デバイスを閉じる

インタラクション例

You: Hey Buddy
Robot: Hi there!

You: What do you see in front of you?
Robot: I can see a notebook and a blue mug on the table.
ACTIONS: think

You: Do a little nod for me.
Robot: Of course. Watch my majestic nod.
ACTIONS: nod

(Front-to-rear touch on the head)
Robot: Ooooh, that’s nice!
ACTIONS: nod

(Moving too close)
Robot: Hey hey—too close! Backing up for safety.
ACTIONS: backward

他の LLM または TTS への切り替え

少しコードを編集するだけで、他の LLM、TTS、または STT 言語に簡単に切り替えることができます:

  • サポートされている LLM:

    • OpenAI

    • Doubao

    • Deepseek

    • Gemini

    • Qwen

    • Grok

  • Piper のテストPiper TTS の対応言語を確認。

  • 2. Vosk のテストVosk STT の対応言語を確認。

切り替えるには、コードの初期化部分を以下のように変更します:

from pidog.llm import OpenAI as LLM

llm = LLM(
    api_key=API_KEY,
    model="gpt-4o-mini",
)

# モデルと言語を設定
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"

トラブルシューティング

  • ロボットがウェイクワードに反応しない場合

    • マイクが動作しているか確認。

    • WAKE_ENABLE = True になっているか確認。

    • ウェイクワードをあなたの発音に合わせて調整。

  • スピーカーから音が出ない場合

    • TTS モデルの設定を確認。

    • Piper または Espeak を手動でテスト。

    • スピーカーの接続と音量を確認。

  • API キーのエラーまたはタイムアウト

    • secret.py のキーを確認。

    • ネットワーク接続を確認。

    • LLM がサポートされていることを確認。

  • 超音波センサーが予期せず反応し続ける場合

    • センサーの取り付け高さと角度を確認。

    • コード内の TOO_CLOSE 距離閾値を調整。