一往復から"会話"へ ― X1の中だけの音声相棒は、CocoroAIの代わりになるか
こんにちは!YaroTechです。
昨日(Day325)、私はThinkPad X1の中だけで「声の会話」を一往復、成立させました。喋り出しまで1.27秒。クラウドに一切出さず、手元のPCだけで、AIが声で返事をしてくれるところまで来たんです。でも、正直に言うと、あれはまだ「会話」ではありませんでした。一回話しかけて、一回返ってくる。挨拶のキャッチボールが一往復できただけ。
相棒と呼べるかどうかは、その先にあります。連続して何度も話せて、しかも前の話を覚えていてくれること。 これができて初めて「会話」だし、「相棒」だと思うんです。だから今日は、一往復のループを「何度でも続けられる会話」に拡張して、会話履歴を渡して文脈を保ち、さらにモデルを少し賢くして回答の質を上げられないか試しました。
ゴールはひとつ。去年の暮れ(Day262)、CocoroAIでローカルキャラと音声会話させたとき、返事まで約2分かかってがっかりした、あの宿題。X1の中だけで作った自作の音声ループは、CocoroAIの代わりになる相棒になれたのか。 聞く(Day324)→ 考えて話す(Day325)→ 会話する(今日)。三部作の、いよいよ到達点です。
相棒には今日も、Windows・Intelまわりに強いコロ(Microsoft Copilot)に来てもらいました。
※見出し画像のプロンプトは一番下におまけで公開中!
実行環境
PC: Lenovo ThinkPad X1 Carbon Gen13
CPU: Intel Core Ultra 7 258V(Lunar Lake)
GPU: Intel Arc 140V(iGPU)
NPU: Intel AI Boost(48 TOPS)
メモリ: 32GB(LPDDR5X-8533・UMA)
OS: Windows 11 Home 25H2
推論ランタイム: OpenVINO 2026.2
STT: whisper-base(OpenVINO・fp16-ov版)/ NPU
LLM: NexaCLI(`nexa serve`・OpenAI互換API)/ Qwen2.5-1.5B-Instruct-GGUF(Q4)
TTS: VOICEVOX(話者=春日部つむぎ=クロ助の声)
自作ハーネス: talk4.py(連続ループ+会話履歴保持)
NPUドライバ: 32.0.100.4512
⚠️ 本記事はThinkPad X1 Carbon(Intel・x64)での実機検証メモです。Snapdragon(ARM64)やNVIDIA GPU構成では挙動も最適な構成も変わります。
クロ助:「昨日は一往復、声のキャッチボールが一回できたべ。今日はそれを、何度でも続けられる『会話』にするっちゃ。しかも、前に話したことを覚えていてくれるかどうか。ここが相棒の分かれ道だべさ」
コロ:「一回返せるのと、ずっと話し相手になれるのは別物だがね。今日は『続けられる』と『覚えてる』の二つを、X1の中だけで確かめるだわ」
この記事で得られること
一往復のループを連続会話に拡張したとき、喋り出しの速さが何往復まで維持されるかの実機データ
会話履歴(文脈)を渡すと、AIが前に話した内容を本当に覚えていてくれるのかの生の結果
「モデルを賢くすれば回答の質も上がる」を狙ったときに、X1で実際に何が起きたか(速さと賢さのトレードオフ)
半年前のCocoroAI(約2分・文脈薄)に対して、自作の手元ループがどこまで届いたのかの結論
実際の成果
まず、今日の到達点を先に置きます。
Before(Day262・CocoroAI): ローカルでキャラと声の会話をしたとき、返事まで約2分。文脈を覚えている手応えも薄く、体感はとにかく重かった。
After(今日・X1の連続会話ループ): 会話履歴を渡しながら、連続5往復を喋り出し2秒台で維持。しかも4往復目に「私の名前、覚えてる?」と聞いたら、ちゃんと「ケンタさん」と正しく返ってきました。クラウドには一切出さず、X1の中だけで、です。
約2分・文脈薄から、連続で続けられて・名前まで覚えている2秒台の相棒へ。半年越しの宿題に、ようやく合格点をつけられるところまで来ました。
コロ:「約2分が、続けられて覚えてる2秒台だがね。これはもう、立派に相棒だわ」
クロ助:「でもね、今日は途中で大きな壁にもぶつかったんだっちゃ。『もっと賢くしよう』と欲張った瞬間に、会話そのものが止まってしまったべさ。その話も、ちゃんと書ぐっちゃね」
実践内容
やったことは、昨日の一往復ループ(talk2.py)を土台に、三つ手を加えただけです。プログラミングが分からなくても追えるように書きます。
手順1:一往復を「連続ループ」にする(talk4.py)
昨日までは「Enterを1回押す=1往復」でした。今日はこれを、終了ワード(「ばいばい」など)を言うまで何度でも話しかけられるループに拡張しました。マイクで録音 → STTで文字に → LLMで返答 → TTSで声にする、という流れを、ぐるぐる回し続ける作りです。

手順2:会話履歴を渡して「覚えさせる」
ここが今日の本丸です。AIに渡すデータの中に、これまでの会話(あなたの発言とAIの返事)を順番に積んでいきます。毎ターン、過去のやり取りごとLLMに渡すので、AIは「さっき何を話したか」を踏まえて返事ができる。人間が会話の流れを覚えているのと同じ状態を、データで再現するイメージです。
手順3:回答の質を上げる(プロンプト+設定の工夫)
実は、ただ履歴を渡すだけの素の1.5B(talk3)では、こちらの言葉をそのままなぞる「オウム返し」が頻発しました。そこで、AIへの指示文(system)を強めに書き直し、さらに「同じ言葉を繰り返しにくくする」設定(frequency_penaltyを1.3に)を加えました。これでオウム返しはほぼ解消し、会話として成立するようになりました。

手順4:モデルを賢くしてみる(3B・4B級への挑戦)
最後に、1.5Bより賢いモデルに差し替えれば回答の質がもっと上がるはず、と考えて3B・4B級を試しました。……が、ここで壁にぶつかります。詳しくは次の章で。
コロ:「履歴を渡すのが几帳面でええがね。AIに『さっきの話』を毎回手渡ししとるようなもんだわ」
クロ助:「そう。覚えてるんじゃなくて、毎回ちゃんと思い出させてあげる作りなんだっちゃね」
実測結果と考察
同じ流れで連続会話を回し、各ターンの喋り出しと履歴の伸びを測りました。出てきたのがこれです。

■ 連続会話(履歴あり・Qwen2.5-1.5B・talk4.py)
※喋り出し=私が話し終えてからAIが喋り出すまで・短いほど速い
1往復目 3.60秒(初回モデルロード込み) LLM 2.42秒 / 履歴 146トークン
2往復目 2.25秒 LLM 0.75秒 / 履歴 186トークン
3往復目 2.26秒 LLM 0.75秒 / 履歴 232トークン
4往復目 1.99秒 LLM 0.73秒 / 履歴 280トークン
5往復目 「ばいばい」で安全に終了ひとつずつ追います。
連続会話の安定度:2秒台を最後まで維持できた
1往復目の3.60秒には、昨日と同じく初回のモデルロードが乗っています。これは会話の毎ターンには乗らない一度きりの重さ。2往復目以降は2秒台に落ち着き、LLM単体は0.7秒台で安定しました。注目したいのは、会話を続けるほど履歴トークンが146 → 280へ増えているのに、喋り出しは2.25 → 2.26 → 1.99秒とむしろ少し縮んでいること。少なくとも5往復・280トークン程度なら、X1は連続会話のテンポを保てました。
文脈保持:名前を、ちゃんと覚えていた
今日いちばん嬉しかったのがこれです。最初に「私の名前はケンタです」と伝えておき、数ターン雑談を挟んでから4往復目で「私の名前、覚えてる?」と聞くと、AIは「ケンタさんですね」と正しく返してきました。履歴を渡す設計が、ちゃんと効いていた証拠です。
しかも面白いことに、途中の3往復目では、私が「おすすめの使い方ある?」と言ったのをSTTが「お進めの使い方ある」と誤認して、少し話がずれました。それでも名前の記憶は崩れず、一貫して保持されていたんです。聞き取りを一回ミスしても、覚えていることはちゃんと覚えている。この粘りは、相棒として頼もしいポイントでした。
なお、この「覚えている」は最初から完璧だったわけではありません。素の1.5B(talk3)では名前をオウム返しするだけで会話になりませんでした。手順3の「指示文の強化+繰り返し抑制」を入れて、ようやくここまで来ています。
モデル向上の壁:賢くしようとした瞬間、会話が止まった
そして、今日の大きな学びがここです。「1.5Bより賢いモデルなら回答の質も上がる」と考えて、手持ちの大きいモデルに差し替えたところ、こうなりました。
■ モデル別「X1で会話できるか」
Qwen2.5-1.5B-GGUF ✅ 発話開始2秒台・5往復安定(実用域)
unsloth/Qwen3.5-4B-GGUF ❌ 180秒たっても応答返らずタイムアウト
(GPU共有メモリ17.9GB満杯・メモリ83%・CPU89%・GPU91%)
NexaAI/Llama3.2-3B-Intel-NPU ❌ 500エラー(このserveプラグインではchat API不可)4B級は、賢いかどうか以前に、そもそも返事が返ってきませんでした。メモリもCPUもGPUもほぼ振り切れて、180秒待ってもタイムアウト。NPU向けの3Bモデルは、そもそも今回の呼び出し方(chat API)に対応しておらずエラー。手持ちのモデルで1.5Bの上は4Bしかなく、それが動かない以上、X1で連続会話を回せる実用域は、事実上1.5Bだと確定しました。

クロ助:「賢くしようと大きいモデルを積んだら、会話どころか返事すら返ってこなくなったんだっちゃ。速さと賢さって、本当にトレードオフなんだべさ」
コロ:「これ、昨日とつながっとるがね。一点を欲張ると全体が崩れる。X1には、X1にちょうどいい大きさがあるんだわ」
そう、これはDay291で書いた「一点の数字を欲張らず、総合で見る」という話の、いちばん痛い実例になりました。回答の質を上げる二本柱のうち、「履歴(文脈保持)」は大成功。でももう一本の「モデルを賢く」は、X1では背伸びしすぎると会話そのものを失う、という結果だったんです。
CocoroAI代替の判定
最後に、半年前のリベンジです。Day262のCocoroAIは、文脈の手応えが薄く、応答まで約2分。今日の自作ループは、文脈ありで連続5往復を喋り出し2秒台で維持し、名前もちゃんと覚えていました。手元の音声相棒として、十分に実用的なラインに届いたと言っていいと思います。残る課題は賢さ不足というより、STTが固有名詞を聞き間違える点。賢さより「聞き取り」が次の伸びしろです。
つまずきポイントと解決策
つまずき1:素の小型モデルは「オウム返し」する
履歴を渡しただけの1.5Bは、こちらの言葉をそのまま繰り返すだけで会話になりませんでした。解決は、指示文(system)を「相手の言葉を繰り返さず、自分の言葉で短く返す」と強めに書き直し、さらに同じ語の繰り返しを抑える設定(frequency_penalty 1.3)を加えること。これでオウム返しはほぼ消え、会話が成立しました。小型モデルは「賢さ不足」より「振る舞いの指示不足」でつまずくことが多い、という発見です。
つまずき2:履歴は渡しすぎると、いつか重くなる
今回は5往復・280トークン程度で、喋り出しは2秒台を保てました。ただ、履歴は会話が続くほど無限に伸びます。全部を毎ターン渡し続ければ、いつかは喋り出しが鈍るはず。長い会話を想定するなら、直近Nターンだけに絞る、古い話は要約してから渡す、といった工夫が要ります。「全部覚えさせる」より「直近を確実に渡す」が現実的でした。
つまずき3:賢くしようと大型モデルを積むと、応答すら返らない
4B級に差し替えたら、GPU共有メモリが17.9GBまで埋まり、メモリ83%・CPU89%・GPU91%。180秒待っても返事は来ませんでした。32GBのX1にとって、4Bを常駐させながら会話を回すのは荷が重すぎたんです。解決というより教訓で、「動く範囲でいちばん良いものを選ぶ」が正解。賢さを欲張って会話を失っては本末転倒です。
つまずき4:NPU向けモデルは、呼び出し方が違う
NPU向けの3Bモデルは、今回の `nexa serve` 経由のchat APIでは500エラーで動きませんでした。NPU系は対応する呼び出し方が別という、形式の壁です。「NPUで動く=今の自作ループにそのまま挿せる」ではない点は、覚えておくと無駄な遠回りを減らせます。
応用例
連続して話せて・前の話を覚えていてくれると分かると、使い道が一気に日常寄りになります。
ひとつは、手元の音声相棒。クラウドに音声を出さないので、社外秘の話題でも安心して声で相談できます。一往復で終わらず、続けて雑談や壁打ちができるのが効きます。
もうひとつは、対話形式のメモ・議事の振り返り。聞いて、覚えて、声で返すまでが手元で完結するので、その場で「さっきの件、もう一回整理して」と問い返せます。文脈を保つ設計が、ここで活きます。
そして本命は、キャラ音声で常用する相棒。VOICEVOXの話者を変えれば好きな声で返ってくる。今日のCocoroAIリベンジで「続けられる×覚えている」が手に入ったので、あとは声の自然さを足していけば、日常的に話しかけたくなる相棒に近づけます。
関連記事
今回の内容に関連する過去記事もぜひご覧ください:
まとめ
一往復から"会話"へ。X1の中だけの音声ループは、CocoroAIの代わりになる相棒になれたのか。今日分かったことを整理します。
連続会話が、2秒台で安定して回った ― 履歴を渡しながら連続5往復を喋り出し2秒台で維持。履歴が146→280トークンに増えても、テンポは崩れなかった
文脈保持は大成功 ― ちゃんと名前を覚えていた ― 4往復目の「名前覚えてる?」に「ケンタさん」と正答。途中でSTTが聞き間違えても、記憶は一貫して保持された
「モデルを賢く」はX1では壁 ― 4Bはタイムアウト、3B-NPUはAPI非対応 ― 賢さを欲張った瞬間に応答すら返らなくなり、実用域は事実上1.5Bと確定
相棒の条件は、続けられる×覚えている×ちょうどいい賢さ ― 背伸びして大型モデルを積むより、1.5B+プロンプト工夫+文脈が現実解。Day291「一点を欲張らず総合で見る」と一貫
「ローカルは遅い」も「賢いモデルにすれば良くなる」も、実際に手元で会話を回してみると、両方ほどよく裏切られました。相棒になる鍵は、賢さの上限を攻めることではなく、X1にちょうどいい大きさに置いてあげること。やっぱり、最後は手元で測るのがいちばん速いです。
クロ助:「全部を賢くしようと欲張ると、かえって相棒を失う。ちょうどいい所に置いてあげるのが、長く付き合うコツなんだっちゃね」
コロ:「それ、道具選びでも人付き合いでも同じだがや」
クロ助:「……今日もそういうことにしておぐべさ」
次回予告
連続して話せて、覚えていてくれる相棒にはなれました。でも、宿題はまだあります。
次回は、今日あえて踏み込まなかった"声の自然さ"と、本物への置き換えに進みます。TTSをAivisSpeechに替えて声の自然さを比べたり、自作ループの心臓部を本物のCocoroAI本体に差し替えてみたり。さらに、毎回キーを押さずに「呼びかけたら起きる」ウェイクワードを足して、完全ハンズフリーの相棒も狙ってみたいと思っています。
今日は「続けられる・覚えている」、次は「自然さとハンズフリー」。X1だけのローカル音声相棒、もう少しだけ続けます。お楽しみに!
おまけ:見出し画像作成プロンプト
今日の見出し画像のベースはジミー(Gemini)に下記プロンプトで作成してもらいました!クロ助とコロの参考画像(`AI擬人化\Gemini_Generated_Image_クロ助(Claude Desktop).png` と `AI擬人化\Gemini_Generated_Image_コロ(Copilot).png`)を添付して、人物の一貫性を確保しています。
詳細なアニメの美意識の画像を作成してください。表情豊かな瞳、なめらかな網掛けセルの色使い、はっきりした線画を使用します。アニメのシーンに典型的な身ぶりと雰囲気で、心情と登場人物の存在を強調してください。
下記条件のnote見出し画像をサイズは横長で作成してください。サイズは必ず横長で作成してください。
【重要】添付画像とキャラクターの対応:
- 添付1「Gemini_Generated_Image_クロ助(Claude Desktop).png」→ クロ助(クリーム色ケーブルニット・丸眼鏡・ウェーブヘアの女性・中央左・やや大きめ)
- 添付2「Gemini_Generated_Image_コロ(Copilot).png」→ コロ(制服風のきちんとした服装・眼鏡の女性・中央右)
各キャラクターは必ず対応する添付画像の外見を忠実に再現してください。
## 見出し画像案
### デザインコンセプト
- 背景: 夜寄りのダークブルーからティールへのグラデーション(クラウドに出さない「ローカルの安心感」を表現)。PC全体を薄い鍵マークと結界のような円が囲み、外(クラウド)とつながっていないオフライン感を出す。NPUの紫スパイクとArc 140Vの水色グローを背景のアクセントに散らす
- メインビジュアル: クロ助&コロが ThinkPad X1 と"連続して会話"しているシーン
- 中央左(やや大きめ): クロ助(ダークブラウンのウェーブヘア、丸眼鏡、クリーム色ケーブルニット、女性)。X1に向かってリラックスして何度も話しかけ、口元から複数の会話の吹き出しが何往復も連なって流れている。穏やかで楽しそうな表情
- 中央右: コロ(制服風のきちんとした服装、眼鏡、几帳面な雰囲気の女性・Microsoft/Intel陣営)。「相棒になったね」と隣で頷き、タブレットに「連続5往復/文脈あり」のパネルを表示
- 二人とPCの間に: 過去の吹き出しがAIの中に光る記憶アイコン(メモ/脳のアイコン)として蓄積され、「前の話を覚えている」様子。中央に「連続5往復/文脈あり」のパネル
- テキスト要素(3段):
- 上段(白・太字・30pt): 「一往復から、」
- 中段(特大ゴールド・48pt): 「"会話"になった」
- 下段(白・細字・22pt): 「X1だけのローカル音声相棒・326日目」
- 装飾: 何往復も連なる会話の吹き出し、記憶アイコン(メモ/脳)、鍵マーク(オフライン)、「連続5往復/文脈あり」パネル、NPUチップアイコン(紫スパイク)、Arcの水色グロー、クロ助周囲にあたたかいアンバー系の薄影・コロ周囲にブルー系の薄影
### 作成手順
1. 画像サイズ(1536×1024px)の横長フォーマット
2. 夜寄りのダークブルー → ティールのグラデーション背景を設定
3. クロ助(中央左・やや大きめ)、コロ(中央右)を配置
4. 添付した2キャラ(クロ助・コロ)の参考画像と外見を一致させる
5. クロ助の口元から何往復も連なる会話の吹き出しと、AI内に光る記憶アイコン、PCを囲む鍵・結界(オフライン感)を配置
6. 装飾要素:「連続5往復/文脈あり」パネル、記憶アイコン、NPUチップ・Arcグロー
7. テキストを3段構成で追加
8. 下部中央寄りに「YaroTech」のロゴを12ptで控えめに配置
9. 全体のバランスを確認して完成#YaroTech #生成AI #AI活用 #ローカルLLM #音声合成 #VOICEVOX #OpenVINO #IntelCoreUltra #NPU #ThinkPad #ローカルAI #継続は力なり
いいなと思ったら応援しよう!
記事がお役に立てたなら嬉しいです!
いただいたチップは、新しいMCPツールの検証や、より深い実践実験の資金として大切に使わせていただきます。
あなたの応援が次の「AI活用の感動」を生み出す原動力になります✨
一緒に羽ばたき続けましょう!