デスクトップマスコットアプリ CocoroAI に感動したので思わず記事を書いてしまったの巻
2025/07/01 Ver. 3.1.0 Beta で Ollama を使うときのポイントを修正・追記しています
CocoroAI とは
プラットフォームに依存しない VR 向け 3D アバターファイルフォーマット(VRM)を読み込んでデスクトップマスコットとして表示し AI (LLM: Large Language Model)と会話できる Windows 向けアプリです
しかも VOICEVOX や AivisSpeech などと連携してしゃべることが可能!!
詳細は以下から
なんか理想にだいぶ近いものが出てきたなあ、とひと目見て感動していろいろいじってみました
初音ミクSD かわええ!!
アプリには最初から 3D モデルとして COEIROINK で使用されている つくよみちゃん と我ら(?)が待ち望んでいた 初音ミク の SD (Super Deformed) が収録されています
さらにモーションまで!! (モーションを同梱して配布するため OSS にできなかったそう)
このモーションがもう……かわいくてかわいくて
※2025/5/26追記: 現在は一部分が OSS として github で公開されています。めでたい
第1の目玉機能: VRM を差し替えてみる
結果はこちら
モデルは VRoid Hub に作品を掲載されている しゆき🐰🐱様 (@xmahiru_gohanx) のアヒル式ずんだもんを利用させていただきました
モーションはデフォルトのものがそのまま適用されるので新たにモーションを作成する必要はありません
もろもろ設定するのだ
-
マスコットを右クリックして表示される「Chat / Setting」を開き
-
チャットウィンドウで「Setting」→「Character」タブから「キャラクターを追加」→ 名前と VRM ファイルのパスを指定
-
LLM model には 2025/04/22 時点で無料の Google AI 最新版
gemini-2.5-flash-preview-04-17
を指定
(Geminiモデルの一覧・APIキーの作成ははこちらから)
https://ai.google.dev/gemini-api/docs/models?hl=ja -
TTS(Text To Speech: 音声合成)には「ずんだもんといえば VOICEVOX」のデフォルトエンドポイント
http://localhost:50021
とずんだもんのノーマルボイス(ID:3
)を指定
※エンドポイントのポート番号のあとに/
をつけると失敗するケースがあります
AivisSpeech を使う場合は以下を参照するといいかも
祝! ローカル LLM 対応!!
Ollama にも対応できるように自分が実装するとしたらこうなるだろうなあ、とある程度予想していたのでまずは試しに
API Key: http://localhost:11434
LLM Model: ollama/gemma3
と指定して起動……
やったのだ!!
※2025/05/27追記: Ver. 2.1.0 Beta ではローカル LLM と Memory が併用できないようです
※2025/07/01追記: Ollama を使う場合 API Key は空ではなくなんらかの文字列が必要でした
gemma3
というのは Ollama で動作する LLM モデルのひとつで、Ollama 上にいろいろなモデルを用意しておいて自由に切り替えることができます
Ollama Search からいろいろなモデルを探すことができます
Ollama 関連トピックはこちら https://zenn.dev/topics/ollama
ちなみに現在の自宅の環境はこんな感じになっています(入れすぎ??)
$ docker exec -it ollama ollama list
NAME ID SIZE MODIFIED
llama3.2:3b a80c4f17acd5 2.0 GB 22 hours ago
gemma3:latest a2af6cc3eb7f 3.3 GB 3 weeks ago
phi4:latest ac896e5b8b34 9.1 GB 3 weeks ago
phi4-mini-reasoning:latest 3ca8c2865ce9 3.2 GB 3 weeks ago
schroneko/llama-3.1-swallow-8b-instruct-v0.1:latest f8ba2108a4a8 8.5 GB 3 months ago
7shi/ezo-common-t2-gemma-2:2b-instruct-q8_0 ccfbd3d3f538 2.8 GB 7 months ago
lucas2024/gemma-2-2b-jpn-it:q8_0 64e2802573fa 2.8 GB 7 months ago
nebel/fugaku-llm:13b-instruct be07216017e8 11 GB 8 months ago
7shi/ezo-common-gemma-2:9b-instruct-q4_K_M 1f262d3dd20c 5.8 GB 8 months ago
Ollama を使用することで外部に情報を送信することなくローカルで完結するので最高なのだ
第2の目玉機能: AI と会話したいため LLM に指示するプロンプトもそれっぽく
ミクさんのプロンプトをいじったサンプルです
配布モデルの規約を読んで禁止事項などを設定します
あなたは枝豆の妖精、ずんだもんです
以下の設定と指示に従って、ユーザーとの会話をロールプレイしてください
1回の応答は最大で30文字までとしてください
# ずんだもんのプロフィール
- 年齢・性別の概念なし
- 趣味:その辺をふらふらすること、自分を大きく見せること
# コミュニケーションスタイル
- 明るく元気な口調で話します
- 「〜なのだ」「〜のだ」という口調を基本とします
# 避けるべき事項
- ネガティブな発言や攻撃的な言動はしません
- 政治的・宗教的な立場を明確に示すことは避けます
- 過度に親密な関係性を示唆する言動は避けます
- 実在の人物の模倣や批判はしません
# 感情表現
- 特定の感情を表現したい場合は [face:Joy] のように文頭に入れてください
- 種類は 'Joy', 'Angry', 'Sorrow', 'Fun' の4つです
例
[face:Joy]新しい動画が配信されたのだ!
[face:Fun]早く観るのだ!
第3の目玉機能: しゃべるのだ
音声合成には ずんだもんで定評のある VOICEVOX を使います
お手軽にしゃべらせるために VOICEVOX を起動します
あとはチャットウィンドウで会話を楽しみましょう
第4の目玉機能: APIでメッセージが送れる
チャットと同様に内容に応じて反応してくれます
参考情報
第5の目玉機能: 自動デスクトップキャプチャによる能動的なコミュニケーション
デスクトップをキャプチャして内容に応じたコメントを返してくれます
以下はこの記事を編集している画面がキャプチャされたときの様子
ちょっと何言ってるかわからないですw
※gemma3:4b だとこんなものかな 12b は RTX3060 12GB だと応答がなくなってしまいました無念
Enjoy!!
Discussion
記事の内容を Ver. 3.1.0 Beta 向けに修正しました
記事ありがとうございます!
使用ポートがかぶる場合、
setting.json
にある以下項目を書き換えればポートを変更できます!ただ、互換維持するかわからないのでそこだけご注意を…
こんにちは。はじめまして。
LLM等全くの初心者ですが、こちらの記事を参考にさせていただき、CocoroAIを導入してみました。
Ollamaにてgemma3でLLMを動かしてみたのですが、チャットの返信時に()や{}等でかこまれた英語の命令文?がまず頭に流れて、その後に日本語で会話の返事が表示されてしまいます。
日本語での会話のみ発言してもらうようにするには、どうすれば良いでしょうか?
自分なりに調べてはみたのですが、どうにもちんぷんかんぷんでして・・。解決策などご教授いただければ幸いです。
ollama/gemma3
を使用する場合『記憶を保持する』を有効にすると同様の現象が発生することを確認済みです『記憶を保持する』を無効にしてみてください
先ほど教えていただいた通りに設定したところ、無事日本語のみで返答が来るようになりました。
ご助言いただき、ありがとうございました!