potalk-cliと連携して動く『関西弁ダウナーお姉ちゃんBOT』を作ってみました

やっとできたー!動作確認まで体感が長かった!!!!!!

 

何を作ったか?

「COEIROINKであらかじめ作っておいたボイスを、キーワードに反応して文字と一緒に相手に送信するBOT」です。

 

きっかけは、🤖POTBOTというローカルLLMとパイソンのハイブリッドBOTを作っている最中でして、作業が難航していた時に「もっと単純なキーワードに反応して音声ファイルを流すだけのBOTってできないのかな?」という思いつきでした。

つまりは現実逃避ですね。趣味でBOTを作ってるのに、その最中に別のBOTを思いつくなんて……。

 

よくあるんです、こういうの。

2026年10月17日土曜日の昼休み中にメモが残っておりまして。

○Xのは姉妹bot、せなや

伊東ラ△フ がんばれ♥がんばれ♥ な性格

ダウナー関西弁姉ちゃん

MSGK ざーこ★じ△み子さんリスペクト

昔ながらのツンデレ

shかjsでキーワードに反応したら、対応するセリフとその音声ファイルを再生する+ランダム要素あり、という基本構成

一部伏せ字にしてますが、こういう事を考えておりました。キーワードに反応して言葉を返答するが、音声がいいだろうなあって。

 

一番最初はこんなやり取りでした。

GeminiのWeb版にこんな風に言いまして。

『ぽっと通話CLIの別のBOTで、今作ってるのがollama3.2だけど、単純なスクリプトと音声ファイルの組み合わせで、俺「なんか疲れたけどはげまして」 BOT「せやな」とか、ことのは姉妹みたいなダウナーな感じの関西弁のおねーちゃんに「アカンて」とか、簡単な受け答えを返す(ランダム要素もありつつ、キーワードに反応するスクリプトな感じ)音声つきBOTとかどうすかね?』

 

最初は愚痴でして、ええ。

それにGeminiが答えたんですね。

こんなイメージはどうですか?って

potalk-cli (メッセージ受信)

 │

 ▼ スクリプト (キーワード判定 & ランダム抽選)

 │

 ├─► テキスト応答 (potalk-cli で送信)

 └─► 音声ファイル (.wav / .mp3) の再生 or TTS送信

(実際にはwavになった)

 

おお!単純じゃんか。と浮気した訳ですね。そこで開発機のアンチグラビティに指示を出しました。

>>>

# 依頼:`~/potalk-bot` のプロトタイプ作成(Bash版ダウナー関西弁おねーちゃんBOT)

 

`~/potalk-cli` と同じ階層(ホームディレクトリ直下)に `~/potalk-bot` という新規ディレクトリを作成し、potalk-cliと連携できる軽量なBash製音声・テキスト応答BOTのプロトタイプを構築してください。

 

## 1. 作業ディレクトリ

– 目標パス: `~/potalk-bot/`

– `~/potalk-cli` の隣に配置する前提で設計すること。

 

## 2. ディレクトリ・ファイル構成

~/potalk-bot/

├── bot.sh              # メイン処理スクリプト(実行権限を付与)

├── config.json         # キーワード、応答テキスト、音声ファイルパスの定義

└── audio/              # 音声ファイル格納ディレクトリ

    ├── seyana.wav      # (プレースホルダーとして空ファイルやダミーを作成)

    ├── akante.wav

    └── default.wav

 

## 3. `config.json` の仕様

– キーワード配列(部分一致対応)

– 対応するテキスト (`response`)

– 対応する音声ファイルパス (`audio`)

– ヒットしなかった場合のデフォルト(フォールバック)設定

 

## 4. `bot.sh` の動作要件

1. 標準入力(または引数)からメッセージ文字列を受け取る。

2. `jq` を使用して `config.json` を読み込み、メッセージ内のキーワードを判定する。

3. キーワードに一致すれば対応するテキストと音声ファイルパスを決定。一致しなければデフォルト値を使用。

4. テキストを標準出力しつつ、音声ファイルが存在する場合はバックグラウンドで再生コマンド(例: `mpv` または `aplay`)を実行する。

5. 将来的にキャラ(設定ファイル)を切り替えられるよう、設定ファイルパスを指定できる汎用性を持たせる。

 

まずはこの構成の一式を作成し、動作確認用のテストコマンド例(echoでメッセージを流し込む方法など)を提示してください。

>>>

 

で、案の定ですが、トークンがすぐ切れました。悲しい。

そこで、Cueの登場です。彼女に続きを作成してもらいました。

着手は2026年10月18日朝9時55分頃です。ここから長かった。

 

方針変更がありまして。COEIROINKで音声を生成する部分と、キーワードに反応して音声を再生する部分を分離する事にしました。これが大きな決断の一つです。

つまり「あらかじめ決まったセリフしか再生しない」「追加セリフが出たらスクリプトを動かして音声ファイルを作る」という方法です。これで重たい音声合成パートの分離に成功しました。

 

2026年10月20日の夜「おねーちゃん、誰?」に

ちゃんと反応するのを確認しました。ある程度のデバッグは終わった感じです。

だいたい日曜日から作り始めて、2日半でここまできました。案外早いですけど、Claude Codeにやらせたらもっと早いんだろうなあ。

 

ところで、characterだけ変更しても駄目でして、返事・キーワード・確率・音声ファイルの組み合わせを差し替えると、キャラ変更ができます。

つまりはメスガキやツンデレ、がんばれ♡がんばれ♡お姉さんも差し替えしたらできる!!!(というか、別ディレクトリにする事で日替わりお姉さんBOTすらできるのではっていう思いつきがありました)

この辺は今後の課題ですね。

 

ここからはAIが難産だって言ってる箇所になります。

SoXを使うと、『アカンて』という音声を手元で鳴らせます。でも、そのままでは相手に届きません。

PCからぽっと通話CLIに音声として流して、相手の手元に音声を届けないといけない。

さらに、普段使っているマイクやスピーカーとは「別の経路」を使う必要があったし、失敗時に他へ音声を取りこぼすことがあっては駄目、止めたあとの始末も重要でした。

 

PipeWireでBOT専用の音声経路を作りました。開発機と実働機で音声環境が違ったので、普段の設定に触れない方法を選びました。いや助かるぅ。ここでどえらい時間がかかった気がします。

開発機と実働機が別なので、その環境差で上記のような選択になったようです。

 

開発機では約1時間の稼働テストを行い、実働環境では数分の立ち会い確認までできました。長時間運用や無人運転は、これから検証していきます。

ちなみに動作画面はこんな感じ。動画や音声はないでー(笑)

今回は制作記録の公開のみで、BOT本体やWAVファイルは配布しません。音声ファイルの共有・再配布条件を確認できたら、配布する場合は別途案内します。

 

音声合成ソフト:つくよみちゃん@COEIROINK

wanderingdj
  • wanderingdj
  • 田上は文筆業、新田は配信業、にしざわはインターネットジャンキーと、名義をそれぞれ分けてます。
    最近は社会復帰しようとはげんでいる、障害手帳持ちのオジサンです。
    よろしくお願いします。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA