注釈

こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。

参加する理由

  • 専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。

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

  • 限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。

  • 特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。

  • 季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。

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

7. AI 音声アシスタント

このレッスンでは、Fusion HAT+ を 音声ファースト AI アシスタント に変身させます。提供されているコードを使用すると、ロボットは ウェイクワードを待機 し、Vosk を使って 音声を文字起こし し、それを OpenAI LLM に送信し、Piper TTS を使って 音声で応答 します。


始める前に

以下を確認してください:

  • 1. Piper をテストする — Piper の音声が正常に動作していること(例:「Hello」を再生できる)。

  • 2. Vosk をテストする — 使用する言語(例: en-us )で Vosk STT が動作していること。

  • 5. オンライン LLM への接続OpenAI API キーsecret.pyOPENAI_API_KEY として保存されていること。

  • Fusion HAT に接続された マイクスピーカー が正常に動作すること。

  • 安定したネットワーク接続( LLM はオンラインです)。


サンプルを実行する

cd ~/fusion-hat/examples/
sudo python3 voice_assistant.py

コードで使用されている設定:

  • LLM: OpenAIgpt-4o-mini

  • TTS: Piperen_US-ryan-low

  • STT: Vosken-us

  • ウェイクワード: "hey buddy"

  • キーボード入力: 有効 (任意の手動入力)

  • 画像モード: 有効WITH_IMAGE=True )— 後で画像を使用する場合は、マルチモーダル対応の LLM が必要です。

動作内容:

  1. アシスタントがウェイクフレーズ付きのウェルカムメッセージを表示します。

  2. 「hey buddy」 を待ち受けます。

  3. 起動後、音声が文字に変換されます( Vosk → テキスト )。

  4. テキストは OpenAI( gpt-4o-mini ) に送信され、応答が生成されます。

  5. 回答は Piperen_US-ryan-low )によって音声で再生されます。

対話例

You: Hey Buddy
Robot: Hi there!

You: What’s the capital of Italy?
Robot: The capital of Italy is Rome.

コード

from fusion_hat.voice_assistant import VoiceAssistant
from fusion_hat.llm import OpenAI as LLM
from secret import OPENAI_API_KEY as API_KEY

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

# Robot name
NAME = "Buddy"

# Enable image, need to set up a multimodal language model
WITH_IMAGE = True

# Set models and languages
LLM_MODEL = "gpt-4o-mini"
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"

# Enable keyboard input
KEYBOARD_ENABLE = True

# Enable wake word
WAKE_ENABLE = True
WAKE_WORD = [f"hey {NAME.lower()}"]
# Set wake word answer, set empty to disable
ANSWER_ON_WAKE = "Hi there"

# Welcome message
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)

# Set instructions
INSTRUCTIONS = f"""
You are a helpful assistant, named {NAME}.
"""

va = VoiceAssistant(
    llm,
    name=NAME,
    with_image=WITH_IMAGE,
    tts_model=TTS_MODEL,
    stt_language=STT_LANGUAGE,
    keyboard_enable=KEYBOARD_ENABLE,
    wake_enable=WAKE_ENABLE,
    wake_word=WAKE_WORD,
    answer_on_wake=ANSWER_ON_WAKE,
    welcome=WELCOME,
    instructions=INSTRUCTIONS,
)

if __name__ == "__main__":
    va.run()

コードの説明:

  • OpenAI(..., model="gpt-4o-mini") — このレッスンでは OpenAI のみを LLM として使用します。

  • NAME / WAKE_WORD — アシスタント名やウェイクワード(「Buddy」、「hey buddy」など)をカスタマイズします。

  • WITH_IMAGE=True — アシスタントの画像モードを有効にします(このコードには画像入出力処理は含まれていません)。

  • TTS_MODEL="en_US-ryan-low" — 応答に使用される Piper の音声モデルです。

  • STT_LANGUAGE="en-us" — 音声認識に使用される Vosk の言語設定です。

  • KEYBOARD_ENABLE=True — デバッグ時に任意で手動のテキスト入力を可能にします。

  • WELCOME / INSTRUCTIONS — 起動時メッセージおよびアシスタントの人格/システムプロンプトです。

  • va.run()起動 → 聞き取り → LLM → 音声応答 のループを開始します。

他の LLM や TTS への切り替え

いくつかの設定を変更するだけで、他の LLM、TTS、STT 言語に簡単に切り替えることができます。

  • 対応している LLM:

    • OpenAI

    • Doubao

    • Deepseek

    • Gemini

    • Qwen

    • Grok

  • 1. Piper をテストするPiper TTS が対応している言語を確認してください。

  • 2. Vosk をテストするVosk STT が対応している言語を確認してください。

切り替えるには、コード内の初期化部分を変更するだけです:

from fusion_hat.llm import Gemini as LLM
llm = LLM(api_key="YOUR_KEY", model="gemini-pro")

# Set models and languages
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"

トラブルシューティング

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

    • マイクが正常に動作しているか確認してください。

    • WAKE_ENABLE = True になっていることを確認してください。

    • 発音に合うようにウェイクワードを調整してください。

    • 周囲のノイズを減らし、はっきりと話してください。

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

    • TTS モデル名(例: en_US-ryan-low )を確認してください。

    • Piper または Espeak を手動でテストしてください。

    • スピーカーの接続と音量を確認してください。

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

    • secret.py 内の API キーを確認してください。

    • ネットワーク接続が安定していることを確認してください。

    • LLM モデルが対応していること(例: gpt-4o-mini )を確認してください。

  • ウェイクワードは反応するが応答がない

    • STT の言語設定が発音に合っているか確認してください。

    • モデルが正しくダウンロードされていることを確認してください。

    • デバッグログを出力し、STT が動作しているか確認してください。

  • TTS は動作するが LLM の応答がない

    • API キーが有効か確認してください。

    • モデル名および LLM の設定を確認してください。

    • インターネット接続を確認してください。