
ゲーム内のストーリーパートにおける「キャラクターの表情」は、それを設定するとなると極めて膨大な作業になってしまいます。
従って、キャラが話すセリフに適合した表情をAIが自動的に選出する……という仕組みを導入したほうが、ゲーム制作のペースも早くなります。では、具体的にどうやって?
この記事ではCEDEC 2023で行われた講演「AIによる自然言語処理・音声解析を用いたゲーム内会話パートの感情分析への取り組み」から、ストーリーパートでのキャラの表情設定について書き起こしたいと思います。AIを使って表情の割り当て作業を自動化する取り組みを、株式会社Cygames開発運営支援 ゲームエンジニアの立福寛氏が解説しました。
◆AIツールで工数を削減

AIツールを作成したきっかけは、スクリプトチームからの相談でした。

ゲーム内のストーリーパートのスクリプト作成に手間がかかり、シナリオと音声からキャラの表情を自動的に設定したいという相談です。言い換えれば、今まではこの作業にそれ相応のマンパワーをかけていたという意味でもあります。
「結果的に、AIツールを作成することでクリプトチームの工数を削減することに成功しました」

ストーリーパートは、①まずシナリオを執筆した後に②それに従う音声を収録、③コマンドツールを使ってスクリプトのひな形を出力したのちに④スクリプトチームがキャラの表情設定やエフェクトを追加します。今回は④の作業を効率化するためのツール開発です。
そもそも、「ストーリーパートのスクリプト」とは何でしょうか?

「それは、ゲーム中のストーリーパートの制御を行うものです。登場するキャラクター、セリフ、表情などを指定し、同時に背景や音声も指定します。今回はキャラの表情の部分をAIで求めることになりました」
◆仕様について
次に、キャラの感情を設定するシナリオについて。

仕様を挙げると、
1行=スマホゲームのストーリーパートの1単位
対象は会話文のみ、いわゆる「地の文」は対象外
感情は「句読点・記号区切り」で設定(最低限の長さは考慮)
文章の全ての部分に感情が割り当てられる
となっています。さらにキャラの基本感情は5種類に設定します。

標準
喜び
悲しみ
怒り
照れ
それ以外にも、表情を以下3種類に分類したケースも調べます。
標準
ポジティブ(喜び・照れ)
ネガティブ(悲しみ・怒り)
AIを利用した感情分析は、2種類のタッチから実施します。「自然言語処理による感情分析」と「音声解析による感情分析」です。ここで結果を書いてしまうと、「自然言語処理による感情分析」がより高い精度を発揮しました。記事でもこの部分に話を絞りたいと思います。
◆3種類の手法
「自然言語処理による感情分析」の中にも、さらに細かい手法の違いがあります。
固有表現抽出タスク
文章分類タスク
質問応答タスク
まず試したのは固有表現抽出タスク。これは単語や文章に属性を割り当てるタスクで、たとえばキャラのセリフ「はい。よろしくお願いします!」の場合は「はい。」に標準の感情を割り当て、「よろしくお願いします!」に喜びの感情を割り当てます。確かに、これなら単語毎に正しい感情を振り分けられるのではないでしょうか?

ところが、BERTで学習して精度を計測したところ期待した精度は出なかったとのこと。

「正解率が悪過ぎて、具体的な精度を求めるレベルに達していませんでした」
文章の一部にしか属性が割り当てられないというケースが相次ぎ、固有表現抽出タスクはこの場には向いていないということが明らかになります。