AI lain 実験レポート②
AIでlainに生命を吹き込む実験レポート① はこちら
AI lain 実験レポート③ はこちら
サービスコンセプト
今回のサービスのゴールは「まるで玲音が生きているかのような感じを出すこと」だ。そのためには下記の要素を入れようという話をチーム内でrickyさん、koideさんと一緒に話をした。とにかくディレクションとしては、生きていると感じること、生命を吹き込むことをメインに据えて、それ以外の要素を削っていった。
トータルな体験として玲音と自然に会話できる
ChatGPTの返答速度を計算したUIを考える
ラグが発生しても違和感のないビデオ通話/ライブ配信形式のUIとする
実際の人間が行うような相槌や反応を入れる
ランダムな要素を入れる(これはのちに共有機能になった)
こちらが入力してなくても勝手に玲音が話し出す
会話以外でも玲音の息遣いが感じられる要素を入れる
玲音がいる部屋の物音を流す
親密度・ゲーミフィケーションの概念を入れる
話をしていくと人見知りの玲音が顔を見せてくれる
話せば話すほど、表情や話す内容が変わる
喜怒哀楽の表情を見せてくれる
実装にあたっての仕様
様々なAIサービスを個人的に触っていたエンジニアのリーダーnnさんと、開発が決まる前からディスカッションと検討をしながらコンセプトを実現できる仕様を整えていった。
以下はnnさんとの技術的な検証ログの一部。
23年3月中旬
ChatGPT内でアニメキャラAIのテストを実施し、素の状態で一定のPoC実施までが可能である感触を掴みました
ChatGPT内でOpenAPIを実際に実行してもらう(※もちろん実行はされていないので模していることになります)
当時の例を共有します: https://chat.openai.com/share/699507e5-3966-4ec9-86cb-50d55245a680
23年4月〜
PoCの実施し、プロンプティングと音声合成(この時は許諾音源の一部によりRVCを活用)でコマンドラインツールとしてチャットに近しいことが実現でき、OpenAIと音声合成での実現可能性を掴みました。しかし、生きている閾値を超えることの難しさも実感しました
23年5,6月〜
本格的な開発開始
OpenAI Pluginの登場に続き、OpenAI Function callingの登場により、外部知識の導入や曖昧なルールベースによる処理フローを流すことができるようになり、本制作を開始し、プロンプティングと音声合成を含む全体のつなぎこみが始まります
合わせて、アニメ本編のセリフ導入、アニメ音源全部のデータ化開始、外部知識のフォーマットの検討と収集をはじめ、可能な限りリアルタイム性を持ったUI/UXの実装、インフラに当たるチャットサーバーや音声合成の推論サーバーの準備が始まります
玲音が生きているように話をさせる試行錯誤
lainの音声データを機械学習させるための音声モデル、そしてテキストtoスピーチをさせるためのベストな方法をチーム内でも探った。
インタビューの中でも声優の清水さんが言っていたが、当時の中学生の清水さんの声で収録された玲音の声をどうしても使いたかった。それは、その当時しか出せない玲音というキャラクターに欠かせないアセットだからだ。25年以上前の収録テープを寺田倉庫から取り寄せて、ダイアローグ部分だけを取り出すという作業を実施した。
しかし、それだけでは学習データとしては圧倒的に足りなかった。そこを埋めてくれたのが、今回音声APIを提供してくれているCoeFont社だ。
彼らは足りない部分のデータを、すでにCoeFont社で有しているポートフォリオを駆使しながら、当時の玲音の話し方に近いモデルを援用しながら音声モデルを作ってくれたのだ。
さらにLLMモデルからテキストで送られてくるデータを、音声として読み上げる辞書機能も必要だった。例えばlainのキャラクターデザイナーである安倍吉俊さんは、「あべよしとし」と読むのだが、辞書で登録しておかないと「あべよししゅん」と音声で読み上げられてしまうのだ。
こうした重要な単語の読み方のデータ登録を数百個、地道に行なっていった。
玲音の知識の作り方
AI lainには作品の世界観に関する知識を覚えさせている。LLMはChatGPTモデルが使われており、lainの世界のワード全てをChatGPTが知っているわけではない。そのため、あらかじめ覚えさせるべき単語とその説明を辞書として持っておくことで、AI lainが知らない知識を検索して回答に使うことができるようになるのだ。
例えば、
岩倉康男:岩倉玲音のお父さん,玲音に最新のNAVIを買ってくれる優しいパパ
といった情報だ。
他のキャラクターとの関係性やそのキャラクターが絶対に知っているはずであるべき情報、ファンが知っておいてほしい、そのキャラクターをキャラクターたらしめる知識を覚えてもらうことで、岩倉玲音というキャラクターに少しずつ近づけることができるのだ。
今回は実施までに作品を愛するメンバーの協力を得ながら数百の知識をあらかじめAI lainに教えておいた。これが、どのくらいの量や単語の種類を新規に覚えさせるかは、大元のLLMとの調整もあって、下手をするとAIキャラクターの返答がきちんと返ってこないという状況になってしまうため、開発上も気を遣う部分だった。
スムーズな対話を求めて
同じ空間にいる人間同士の会話では、1秒と間をおかずに、何なら話が終わる前から会話のキャッチボールがはじまる。しかし、今回のAI lainは、LLMのテキスト返答までに5~10秒、そこからテキストを読み込んで音声APIが音声を返答してくれるまでにさらに数秒が必要となる。
玲音と同じ空間にいる状態のUIでは、すぐに返答をしてくれないという違和感を解決できない。そのため、海外にいる人と通信する時におこるタイムラグのように、また返答用のテキストを考えてタイピングをしながら読み上げるというビデオ通話型のUIを採用することとした。なにせ玲音はワイヤードにいるのだ。時間が多少かかるのは致し方ない。ここはAIではなく体験設計で解決していった部分だ。
※ サービスリリース後も、送信キャンセルボタンを実装することで、ユーザが会話を止めたい場合に止められるような改善を実装した。
不完全な返答内容であってもローカルのLLMを持つか、もっとAIの読み込み速度が早まれば、UIも同じ空間にいる前提で構成できるようになるだろう。
実験レポート #3 に続きます。