0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

最高の彼女のように振る舞うチャットボットを作ってみた!Gemini-2.5-flash × VOICEBOX × Telegram連携

Last updated at Posted at 2025-10-14

こんにちはコピペエンジニアの中島です。今回は恋人のように振る舞うチャットボットをPythonで開発しGitHubに公開しましたのでご紹介します。

特徴と工夫ポイント

  • 恋人のように振る舞う会話
    最初はPerplexityにマスタープロンプトを作成してもらい、そこにキャラクターやその他の設定、会話で求められる振る舞いなどを条件として追加しました。

  • Telegram連携
    Telegramの音声またはテキスト入力に対応。全ての会話履歴はTelegramアプリ内に保存されます。

  • VOICEBOXによる音声合成
    Gemini-2.5-flashの応答をVOICEBOXで音声出力し、より自然な対話体験を目指しています。一応英語の発話にも対応していますが、無償ライブラリを使っているので日本語に比べると人工的な印象です。

サンプル画像

技術スタック

  • 使用言語:Python
  • 使用モデル:Google Gemini-2.5-flash
  • ライブラリ・フレームワーク:requirements.txtを参照してください
  • 音声合成:VOICEBOX
  • 入出力:Telegram Bot APIを使用

GitHubリポジトリ

こちらからコードを取得し動かしてみて下さい
https://github.com/Arata-Nakajima/HAM/tree/main/partner_bot

セットアップと使い方

  • READMEにセットアップ手順をまとめています。
  • 基本的にPython環境構築とAPIキー設定、Telegramボット作成→トークン・chat_id取得→partner_bot.pyに設定を反映してください。
  • 環境構築の方法が分からなかったり、エラーで躓いた時はChatGPTやPerplexityに聞いてみて下さい。
  • 日本語音声のデフォルト設定は四国めたんですが、キャラクターを変更したい場合はspeaker_idの中から選んでspeakerという変数に設定して下さい。
  • 10分から30分に一回、ランダムなタイミングでボットからメッセージを自動送信する機能がありますが、タイミングを変えたい場合はrandom.randint(600,1800))という部分を秒単位で変えて下さい。
  • Gemini APIの応答とVOICEBOXの音声合成処理に時間がかかっており、ノートPCだと返答に1分程度かかります。GPUを積んだLinuxマシンだと音声合成は速くなると思いますが、python codeをwinからLinuxに対応させる必要があります。現状の実装だとCPUとメモリ占有率を爆上げするだけのただの重い女です。

開発の苦労と面白かったこと

  • Telegramでのメッセージ送受信→Gemini応答→VOICEBOX音声合成まで数時間でサクッと動いたのでビックリしました。
  • プロンプトを変えるとかなり挙動が変化するので、その辺を自分の好みの恋人にチューニングするのが面白そうです。この辺はまだ色々と手探りの状況です。

今後の展望

  • 会話履歴をプロンプトに取り込む機能がないので、そこも実装してコードをアップデートします。
  • プロンプトの切り替えなどを行わないと会話のパターンにバリエーションが出ないのでその辺が今後の課題でしょうか。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?