Clawdbot/OpenClawからGoogle Home/Google Nestに日本語で喋らせる

AI
スポンサーリンク

(サンプル動画)Clawdbot/OpenClawが数分考えた後で回答する時に「回答しました」と喋ります

「何を喋らせるか?」のアイデアがまとまりきってなかったので、とりあえずDiscordでOpenClawと話していてOpenClawが数分間考えていて回答を出力し終わったタイミングで「回答しました」と喋るサンプルを作ってみました

喋る内容やタイミングもいろんな事が可能だと思います(カレンダーやメールをAIが読んで、必要なタイミングで必要な情報だけ読むとか、SNSなどからめぼしい情報があったら喋るとか・・・)

(サンプル動画)

スポンサーリンク

具体的な設定内容は、この記事の続きになります

「Mac/Linux/WSLなどのnode.js環境からGoogle Home/Google Nestに日本語で喋らせる」という内容のこの記事の続きになります

(※)Mac/Linux/WSLからGoogle Home/Nestに喋らせる機能を付けたので、「それをClawdbot/OpenClawに使ってもらう」という話になります

細かい話は抜きにして、どんな形になるのかご覧ください

スポンサーリンク

「喋らせる」コマンドの確認

1.前回の記事では~/google-home-playerフォルダに移動してから
node home1.js これはテストです
の様な形でGoogle Homeに喋らせる設定をしていました

なのですが、Clawdbot/OpenClawに外部から使って貰うには情報が不足しているのでフルパス情報に書き直したいと思います

まず、「node」コマンドのフルパスですが、インストール方法によって各人で場所が違うので下記のコマンドを実行します

which node

実行結果が、私の環境だと
/opt/homebrew/bin/node
になりました

2.次に
node home1.js これはテストです
の「home1.js」の部分なのですが、私の環境のホームフォルダは
/Users/(ユーザー名)
/Users/khb02323
なので、フルパスで記述すると
/Users/khb02323/google-home-player.js これはテストです
となります

3.上記1と2の結果から、Google Homeに喋らせるフルパス形式は
(私の環境の場合だと)下記の様になります

(※)各人の環境で部分的に違うはずです

/opt/homebrew/bin/node /Users/khb02323/google-home-player/home1.js これはテストです

4.このコマンドをターミナルから実行するとこの様になります

スポンサーリンク

OpenClawに「喋る」コマンドを使ってもらう

OpenClawに「喋る」コマンドの使い方を教えて、OpenClawがそれを使う様に設定してもらった時の会話ログを画像で添付します

(※)プログラム設定はOpenClaw側(AI側)に全部作って貰っています。楽でいいですね

スポンサーリンク

OpenClawがGoogle Homeを使って日本語を喋れる様になりました

(最初にも書きましたが)今回は「具体的に何を喋らせるか?」のアイデアが不十分だったので、とりあえず「OpenClawが(数分間とか)考え終わって結果を出力し終わったタイミング」で「完了しました」と喋る様にしてもらいました

スポンサーリンク

OpenClawが作成した「カスタムプラグイン」とはどんなものか?

OpenClawに完全に作成をお任せしてしまった今回の機能ですが、OpenClawは「google-home-speakというカスタムプラグインを作成しました」と言ってきました。

それはどんな物なのでしょうか?

Macの場合、Finderで隠しファイル/隠しフォルダは表示されていませんが、
Command + Shift + .
キーで隠しファイルが表示されます

確認してみると
.openclaw/extensionsフォルダの下に
google-home-speakというフォルダが作成されて、その中に
index.ts
openclaw.plugin.json
の2ファイルが作成されていますね

index.ts

import { exec } from "node:child_process";

export default function(api) {
  api.logger.info("Google Home Speak plugin loaded");

  api.on("agent_end", async (event, ctx) => {
    // Only speak if the run was successful and it was a direct message or group chat response
    // (Avoiding heartbeats if possible, but agent_end triggers for all)
    if (event.success) {
      // Small delay to allow Discord delivery to complete
      setTimeout(() => {
        const command = "/opt/homebrew/bin/node /Users/khb02323/google-home-player/home1.js 回答しました";
        api.logger.info(`Running Google Home speech command for session: ${ctx.sessionKey}`);
        exec(command, (error) => {
          if (error) {
            api.logger.error(`Google Home speech failed: ${error.message}`);
          }
        });
      }, 1500);
    }
  });
}

openclaw.plugin.json

{
  "id": "google-home-speak",
  "name": "Google Home Speak",
  "description": "Speaks '回答しました' via Google Home after every turn.",
  "version": "1.0.0",
  "configSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
  },
  "openclaw": {
    "extensions": ["./index.ts"]
  }
}

更に、カスタムプラグインを使う設定として
.openclawフォルダの下の
openclaw.json
の中に今回の「google-home-speak」プラグインを使う為の設定もありました

.openclaw/openclaw.json

(前略)

  "plugins": {
    "entries": {
      "google-antigravity-auth": {
        "enabled": true
      },
      "discord": {
        "enabled": true
      },
      "google-home-speak": {
        "enabled": true
      }
    }
  }

コメント

タイトルとURLをコピーしました