白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

ローカルLLMで遊ぶの楽しいよね

こんばんは。
ずいぶん久しぶりになってしまいました。

気が付けば新年度ですね。
と思ったらもう初夏みたいな日もあってよくわかりません。

ローカルLLMがいい感じになってきた

最近qwen-3.5とかgemma4とかの割と小さいサイズのローカルLLMの精度が上がってきているみたいです。
私のPCのグラボはVRAM12GBなので、qwen-3.5だと9Bのモデルまでは割とすんなり動きます。
しかもこれらのモデルはマルチモーダルに対応しているので、画像をインプットにすることもできます。

そんなわけである程度の速度、ある程度の精度ならずっとLLMを動かせる環境が手に入ったので何か作ってみます。

ずっとしゃべるよ

画像を渡せてコストも気にしなくていいということで、画面のスナップショットを定期的に撮ってなんか話してもらいます。
最近はAITuberみたいな文脈で似たようなことをしてる人とか、ツールを作ってる人もちらほら見かけますね。
今回出来たものはこんな感じ。

おかずではないと思う。

しゃべりすぎて口パクが動いてないことにあとで気づいた。

キャラとかおしゃべりとかの話

今回はキャラを表示してしゃべる部分はSpriTalkというアプリを使わせてもらいました。
v1.1.0にしたらなぜか体験版扱いになってしまったのが不思議。
booth.pm

4枚の画像を用意するだけでパクパクしてくれてかわいいです。
音声はVOICE BOXを利用しましたが、AivisSpeechとかも対応しているみたい。

画像は元になる画像を1枚作成。顔にマスクして表情差分を作って背景透過って感じです。
ComfyUIでやりましたが、Nano Bananaとかでもがんばればできるんじゃないでしょうかたぶん。

ツールはいろいろ作ってくれてる人がいるので好きなものを使いましょうということでね。
自分でカスタマイズしたい場合は自分で作るのも楽しいと思います。

LLMとかコードとかの話

ローカルLLMはollamaを使って動かしています。サンプルのコードではLM StudioとかCodexとかも対応しています。
この辺りはもうAIエージェントに「こういうこともできるようにして」って言えば勝手にやってくれる感じがします。
SpriTalkとの連携もAPIのスキーマだけ渡したら勝手にできてました。賢いね。

.envでいろいろと設定できるのですが、反応速度をよくするための工夫として、Thinkingは切っておくのがおすすめです。
もちろんThinkingしたほうが精度はいいのですが、どうしてもレスポンス速度が気になります。
あとはCAPTURE_SCALEで画像サイズを調整できます。
0.25とかでも案外認識するので、小さめにすると回答速度が速くなっていい感じです。

キャラ設定はjsonファイルで作るのですが、なんかいくつか設定するところがあってちょっとムズイ。
システムプロンプトと人格だけでいいような気はする。

まじめに画面の解説とかされても面白くないので、こんな設定でしゃべらせてました。
Amazon見てるとなんでも買わせようとしてくる。

  "personality": "明るく観察力が高い。めちゃくちゃパッションで話す。",
  "speechStyle": "すごく早口。",
  "systemPrompt": "あなたは画面を見ながら話すキャラクターです。見えているものをベースにごく短く自然に話してください。",
  "observationPrompt": "画面に見えているものの解説は不要です。とにかくノリと勢いでしゃべってください。",

感情とかも返してもらって表情を出し分けるとかもできるはずなんですが、画像のほうをいろいろ用意する気力がなかったので特に機能していないです。
文字数に関してはプロンプトに入れて収まるようにしてもらってるんですが、超過してぶった切れることもちらほら。この辺は改良の余地がありそうですね。

欲しいものを簡単に作れる時代だなー

開いてるウィンドウとかカメラとかを取得するのにPowerShellを使ってるっぽいんですが、自分でこんなの書ける気がしないですね。
一応コードも置いておきます。ほぼVibe Codingなので遊ぶ場合は自己責任でお願いします。
github.com

それでは。