見出し画像

自動生成文からのキャラ自動認識&立ち絵表示システム

みなさんこんにちは初めまして。大曽根と申します。
今回は創作+機械学習 Advent Calendar 2021
の25日目の記事としての投稿です。

まずはデモをご覧ください。


以上です!

流れ

  1. ユーザーが文章(行動など)を入力

  2. UnityからAPIサーバーに送って文章(出来事など)、セリフを生成

  3. キャラクター認識

  4. APIサーバーからUnityに、文章・セリフ・キャラ名などをセットにしたjsonをUnityに送信

  5. Unityでそれらを読み取って表示

という流れです。


キャラクター認識手法

ここで勘の良い方は
「え? セリフからキャラクターの認識なんてできるの?」
思われたことでしょう。
実際、例えば

「え? セリフからキャラクターの認識なんてできるの?」

というセリフだけが生成されても、それがどのキャラクターのセリフかはわからないですよね。

そこで鍵になってくるのが、学習のさせ方です。
具体的にはデータの整形方法です。

通常の小説は、「セリフ」を誰が喋っているかが書かれていません。
読者が文脈から認識しているわけですね(人間すごい)。

そこでヒントになるのがSSです。
SSの場合、
キャラ名「」
の形で書かれていることが多いです。
しかし、これでは

地の文〜〜〜。キャラ名「」
みたいな場合に、キャラ名を抽出するのが少々面倒です。


そこで、セリフの前に【キャラ名】を入れたデータを用意して、学習させることにしました。

【魔法使い】「え? セリフからキャラクターの認識なんてできるの?」

みたいな感じです。

そうすると、生成時にも【キャラ名】「セリフ」といった形で生成されるため、キャラ名を抽出できるというわけですね〜。


あとは認識したキャラ名を、Unity側に送ってあげて、表示するだけ……
なのですが、意外とここが面倒だったり(機械学習というより人手で頑張る系なので割愛します)。


また、同様の仕組みで背景なども表示できます。


なぜ作ったか

元々、自動生成文に絵をつけたいと思っていました。
文→絵を自動生成するのも一つの手なのですが、計算資源がたくさん必要そうだし、精度もキャラクターをちゃんと認識できるほどにはまだならなさそうだと思いました。
そこで、キャラクターの絵や背景は用意しておいたものを使うのが良いかと思い、この流れにしました。
日本はソシャゲとかだとキャラクターの絵は重要なので、用意したものをキチンと出せる方が重要なんじゃないかなと思ったのもあります。
粗いピクセルのキャラクターもそれはそれで好きなんですけどね。


最後に

「自動生成文からのキャラ自動認識&立ち絵表示システム」
のデモを作成しました。

自分は小説執筆支援サイトBunChoを運営しています。

今後サイト上で、この機能を利用したゲームをプレイできるように開発中です。
プレイヤーが各々キャラクターの絵をアップロードしてプレイできると楽しそうだな〜とか考えています。

どうぞお楽しみに!


あとがき

このシステムはUnity用ビジュアルノベルツール「宴」を利用して開発しています。
Excelでシナリオが書けるので、従来のADVを作るなら非プログラマーでも作れそうです。おすすめのアセットです。

筆者のTwitter: https://twitter.com/OsoneHiroyuki


サポートありがとうございます!