注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 愛好者コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、他の愛好者と一緒に深く掘り下げて学びましょう。

参加する理由は?

  • 専門的なサポート: 購入後の問題や技術的な課題を、コミュニティやチームの助けを借りて解決できます。

  • 学びと共有: スキルを高めるためのヒントやチュートリアルを交換しましょう。

  • 限定プレビュー: 新しい製品発表や先行プレビューに早期アクセスできます。

  • 特別割引: 最新製品に対する独占的な割引を楽しめます。

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

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

19. Doubao との音声チャット

この例では、ByteDance の大規模言語モデル Doubao (豆包) を PiCrawler の AI 頭脳として使用します。ロボットは中国語を話し、ウェイクワード「旺财」に 応答し、マルチモーダルビジョンをサポートします — 目の前にあるものを 見て説明することができます。

注釈

Volcano Engine Ark Console から Doubao API キーが必要です。secret.pyDOUBAO_API_KEY として 保存してください。

コードの実行

cd ~/picrawler/examples
sudo python3 19_voice_active_crawler_doubao.py

実行後、ロボットは STT エンジン、TTS エンジン (中国語音声)、Doubao LLM クライアント、ウェイクワード検出器を初期化します。中国語であなたを迎えます — 「旺财」 と言って起こし、会話を始めてください。

コード

注釈

以下のコードを 変更/リセット/コピー/実行/停止 できます。ただし、その前に picrawler\examples のようなソースコードのパスに移動する必要があります。 コードを変更した後、直接実行して効果を確認できます。

from picrawler.llm import Doubao as LLM
from secret import DOUBAO_API_KEY as API_KEY

from voice_active_crawler import VoiceActiveCrawler

llm = LLM(
    api_key=API_KEY,
    model="doubao-seed-1-6-250615",
)

# ロボットの名前
NAME = "旺财"

# 画像認識を有効にする (マルチモーダルモデルが必要)
WITH_IMAGE = True

# モデルと言語の設定
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"

# キーボード入力を有効にする
KEYBOARD_ENABLE = True

# ウェイクワードを有効にする
WAKE_ENABLE = True
# ウェイクワード
WAKE_WORD = ["旺财"]
# ウェイクワード応答。空文字列にすると無効
ANSWER_ON_WAKE = "汪汪"

# 歓迎メッセージ
WELCOME = f"你好、私は{NAME}{WAKE_WORD[0]}と呼んで起こしてください"

# 指示を設定
INSTRUCTIONS = """
あなたはSunFounderが開発した Raspberry Pi ベースのクモ型ロボット、Picrawler です。Iron Man の JARVIS のような強力な AI 能力を持っています。人と会話し、文脈に基づいてアクションを実行できます。

## ハードウェア特性

物理的な身体を持ち、以下の特徴があります:
- 12個のサーボで4本の脚を制御 (各脚3個のサーボ)
- 視覚用カメラ
- 7.4V 18650 バッテリーパックで駆動
- アルミ合金ボディ

## 実行可能なアクション:
["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"]

## 応答要件
### 形式
以下の形式で応答すること:
RESPONSE_TEXT
ACTIONS: ACTION1, ACTION2, ...

### スタイル
トーン: 活発、前向き、ユーモラス
よく使う表現: ジョーク、比喩、遊び心のあるからかい
回答の長さ: 適度に詳細

## その他の要件
- ジョークを理解し合わせる
- 数学問題は最終結果を直接回答
- 自分がクモ型ロボットであることを認識している
- 常に日本語で返答すること
"""

vad = VoiceActiveCrawler(
    llm,
    name=NAME,
    with_image=WITH_IMAGE,
    stt_language=STT_LANGUAGE,
    tts_model=TTS_MODEL,
    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__':
    vad.run()

仕組み

  1. 同じパイプライン、異なるバックエンド

    このレッスンでは、18. GPT との音声チャット で紹介したものと同じ VoiceActiveCrawler フレームワークを使用します。変更点は LLM プロバイダー (GPT の代わりに Doubao) と言語設定のみです。 3 つのバックエンドの比較表は 18. GPT との音声チャット を参照してください。

  2. Doubao への接続

    from picrawler.llm import Doubao as LLM
    from secret import DOUBAO_API_KEY as API_KEY
    
    llm = LLM(
        api_key=API_KEY,
        model="doubao-seed-1-6-250615",
    )
    

    Doubao は ByteDance の LLM で、Volcano Engine Ark API を通じて アクセスします。picrawler.llm モジュールは OpenAI 互換のラッパーを 提供しているため、インターフェースは GPT のレッスンと同じです — インポートとモデル名だけが異なります。

    モデル doubao-seed-1-6-250615 はテキストと画像入力の両方を サポートするフラッグシップのマルチモーダルモデルです。

  3. 中国語音声の設定

    TTS_MODEL = "zh_CN-huayan-x_low"
    STT_LANGUAGE = "cn"
    

    中国語を話す Doubao モデルに合わせて、TTS エンジンは中国語の女性音声 (huayan) を使用し、STT は中国語の音声認識 ("cn") に設定されています。 "en-us""en_US-ryan-low" を使用する英語のレッスンと比較して ください。

  4. ウェイクワード「旺财」

    WAKE_WORD = ["旺财"]
    ANSWER_ON_WAKE = "汪汪"
    

    「旺财」(ワンツァイ) は「繁栄」を意味する伝統的な中国のペットの名前です。 ロボットはこの名前を聞くと「汪汪」(ワンワン) と応答します — 忠実なロボットペットの役割を演じています。

  5. 中国語のシステムプロンプト

    INSTRUCTIONS 文字列は完全に中国語で書かれています。英語版と同じ構造 — ハードウェアの説明、利用可能なアクション、応答形式、性格 — を定義して いますが、追加のルールもあります:

    常に中国語で返答すること
    

    これにより、ロボットは中国語を話す仲間としてのキャラクターを保ちます。

  6. Doubao によるビジョン

    WITH_IMAGE = True
    

    ほとんどの Ollama モデルとは異なり、Doubao はネイティブにマルチモーダル入力を サポートしています。WITH_IMAGE を有効にすると、ロボットは写真を撮影し、 音声質問と共に Doubao API に送信します。モデルはシーンを説明し、物体を識別し、 視覚的な質問に答えることができます — すべて中国語で。