# Donguriko Live（AI配信アバター）

> 配信コメントにローカルAIが返事をして、Live2Dアバターが自分の声で喋る自動配信ボット。

- 制作: [ワカメ](https://wakame.dev/)（個人で企画・開発）
- ステータス: 制作済み
- 制作期間: 制作済み
- カテゴリ: AI, Video, Tool
- 使用技術: Node.js, Ollama / gemma4（ローカルLLM）, IrodoriTTS（音声合成）, Live2D, OBS, わんコメ, WebSocket, CUDA
- 担当: 企画・キャラクター設計, 配信パイプライン構築, リップシンク実装, 自動トーク・メモリ機能の実装, ツール呼び出しの実装, 安全フィルターの方針づくりと実装, ローカル完結構成の設計

## 概要

配信中のコメントにAIキャラクター「どんぐりこ」が自動で返事をする、AItuber向けの配信ボットです。コメントはわんコメのWebSocketから受け取り、ローカルのOllama（gemma4:e2b）で返答文を生成、IrodoriTTSで音声化して、OBSに映したLive2Dモデルが喋ります。音声はリファレンス音声からボイスデザインし、シードを固定することでキャラクターの声を毎回そろえています。生成したWAVの音量エンベロープを解析して口の開きに変換し、オフセットを調整してリップシンクさせました。コメントが3分止まると用意した話題からAIが自分で話し始める自動トーク、直近3ターンの会話に加えてMarkdownファイルに書いた設定や覚えておきたいことを読み込むメモリ機能、時刻と天気を答えるツール呼び出しも組み込んでいます。人前でAIに喋らせる以上、危ないコメントへの備えがいちばん大事だと考え、安全フィルターを別に作りました。全角と半角、カタカナとひらがな、記号や空白の違いをならしてから判定し、コメントを読む前とAIが返事を出した後の両方で確認します。「死にたい」などのつらい気持ちのコメントには、AIに返事を作らせず、決まった言葉で相談窓口を案内します。このときコメント本文も名前も画面に出さず、記憶にも残しません（晒さないため）。同じ内容を連投されても読み上げ回数を絞り、荒らしに使われないようにしています。LLMと音声合成はどちらもローカルのGPUで動かしているため、生成まわりに従量課金は発生しません。

## YouTube Data API を使わずにコメントを拾う

配信のコメントに反応させる場合、YouTube Data API を使うのが定番ですが、APIには利用枠があり、長時間の配信では枠を気にしながら回すことになります。

Donguriko Live はコメントの取得をコメントビューアー（わんコメ）側に任せ、そこから受け取る構成にしました。YouTube Data API を使わないため、配信時間を気にせず回せます。

## 返答も音声もローカルで完結させる

返答の生成はローカルで動かしているOllama上のGemmaモデル、読み上げは同じPC上のirodori-TTSが担当します。クラウドのAPIを呼ばないので、コメント1件ごとの課金がなく、長時間の配信でも費用が増えません。

読み上げた音声の音量をそのままLive2Dモデルの口の開き具合に渡しているため、しゃべっている間だけ口が動きます。音声と口の動きを別々に作ると必ずずれるので、音量を唯一の入力にしました。

## 配信前の手順をダブルクリック1回にまとめる

この構成は、Ollama・irodori-TTS・コメントビューアー・配信ボットと、起動するものが4つあります。配信のたびに順番に立ち上げると、どれか1つの起動漏れで配信中に気付くことになります。

そのため起動用のバッチファイルを用意し、それぞれが起動しているかを確認して、立ち上がっていなければ起動したうえで配信ボットを動かすようにしました。動作確認だけを行うテスト用の起動も分けてあります。

OBSに読み込ませるURLは、空いているポートを自動で探してから実際のURLを画面に表示します。ポートが埋まっていて起動できない、という配信直前のトラブルを避けるためです。横型と縦型それぞれのURLを用意し、ブラウザで開いたときだけ手動で読み上げさせる入力欄が出ます。

## 成果

- YouTubeでテスト配信を21回以上実施（直近は約6時間半の配信）
- コメント受信から返答生成・音声合成・アバター表示までを自動化
- リファレンス音声とシード固定でキャラクターの声を統一
- 音量エンベロープ解析によるリップシンクを実装
- 無音時の自動トークとMarkdownベースのメモリ機能を実装
- 安全フィルターを入口と出口の両方に実装（表記ゆれをならして判定）
- つらい気持ちのコメントには、AIを通さず相談窓口を案内し、本文と名前は表示しない設計
- LLMと音声合成をローカルGPUで動かし生成コストをゼロに

## リンク

- [GitHub](https://github.com/bluewakame/donguriko-live)
- [動画](https://www.youtube.com/watch?v=6boF67SDHLM)

## 関連動画

- [【テスト配信21】AITuberがYouTubeコメントに返信するテスト配信](https://www.youtube.com/watch?v=6boF67SDHLM): AI配信アバター「どんぐりこ」が、YouTubeのコメントに音声で返事をしている配信の記録です。返答の生成も音声合成も手元のPCで動かしていて、約6時間半そのまま流しています。

## このサイトについて

- [ワカメの詳細プロフィール](https://wakame.dev/ai-profile/index.html.md)
- [llms.txt](https://wakame.dev/llms.txt)
