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