注釈
こんにちは。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.pyにOPENAI_API_KEYとして保存されていること。Fusion HAT に接続された マイク と スピーカー が正常に動作すること。
安定したネットワーク接続( LLM はオンラインです)。
サンプルを実行する
cd ~/fusion-hat/examples/
sudo python3 voice_assistant.py
コードで使用されている設定:
LLM: OpenAI (
gpt-4o-mini)TTS: Piper (
en_US-ryan-low)STT: Vosk (
en-us)ウェイクワード:
"hey buddy"キーボード入力: 有効 (任意の手動入力)
画像モード: 有効 (
WITH_IMAGE=True)— 後で画像を使用する場合は、マルチモーダル対応の LLM が必要です。
動作内容:
アシスタントがウェイクフレーズ付きのウェルカムメッセージを表示します。
「hey buddy」 を待ち受けます。
起動後、音声が文字に変換されます( Vosk → テキスト )。
テキストは OpenAI( gpt-4o-mini ) に送信され、応答が生成されます。
回答は Piper (
en_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 の設定を確認してください。
インターネット接続を確認してください。