- 【日本語訳】PokéLLMon: A Human-Parity Agent for Pokémon Battles with Large Language Models
- 【Dockerでワンパン】PokéLLMonを動かしてみる
- 「PokéLLMon」をAIで実況してみた【Style-Bert-VITS2】
近年、ゲームの実況はただの趣味から一つのカルチャーへと進化しました。特に、AI技術を駆使してゲームの実況を行うことは、視聴者に新鮮な体験を提供します。この記事では、戦術バトルゲームで人間並みのパフォーマンスを達成した最初のLLM体現エージェント「PokéLLMon」と、感情豊かな音声生成に特化した「Style-Bert-VITS2」を使用して実況を行う過程を紹介します。
PokéLLMonとは?
PokéLLMonは、テキストで説明されたフィードバックを戦闘から即時に摂取して、生成ポリシーを反復的に洗練する「インコンテキスト強化学習」、外部知識を活用して幻覚を抑制し、エージェントがタイムリーかつ適切に行動することを可能にする「知識拡張生成」、そして強力な対戦相手に直面した際のパニックスイッチング現象を緩和する「自己一貫性のあるアクション生成」の3つの鍵戦略を取り入れています。オンラインでの人間プレイヤーとの対戦では、PokéLLMonは人間レベルの戦闘パフォーマンスと戦略を実演し、ラダー競技での勝率は49%、招待バトルでの勝率は56%を達成しました。
Style-Bert-VITS2とは?
Style-Bert-VITS2は、Bert-VITS2のv2.1とJapanese-Extraをベースにした、入力されたテキストの内容に基づいて感情や発話スタイルを自由に制御できる音声を生成する技術です。この進化したバージョンにより、実況者はゲームの状況やキャラクターの感情に合わせて、よりリアルで感情豊かな実況を行うことが可能になります。
実況のやり方
PokéLLMonの戦闘ログを再生する
最初のステップは、PokéLLMonによって生成された戦闘ログを確認することです。これにより、実況に必要な内容の理解が深まります。
PokeLLMon\battle_log\pokellmon_vs_ladder_player\win\Gen8RandomBattle-2024-01-25-dragonbucher-pokellm.html
戦闘ログがない人はこちらから動かしてみましょう。
OBS Studio でキャプチャー
OBS Studioを使用して画面をキャプチャし、実際のゲームプレイ映像を録画します。これが、実況のビジュアル基盤となります。
実況スクリプトを作成する
ChatGPTを利用して生成された戦闘ログを入力とし、実況スクリプトを作成します。日本語モードだと英語が苦手なので、カタカナに変換することで「Style-Bert-VITS2」が話しやすいスクリプトが作成できます。
実況スクリプトの作成会話
Person:
- 下記はLLMで構築したBotとのポケモンバトルのログです
男性アナウンサーとして日本語で実況してください
# ポケモンバトルログ
[Gen 8] Random Battle
Rated battle
Species Clause: Limit one of each Pokémon
HP Percentage Mod: HP is shown in percentages
Sleep Clause Mod: Limit one foe put to sleep
Illusion Level Mod: Illusion disguises the Pokémon's true level
Battle started between dragonbucher and PokeLLM!
dragonbucher sent out Incineroar!
Go! Dragonite!
[The opposing Incineroar's Intimidate]
Dragonite's Attack fell!
Turn 1
Battle timer is ON: inactive players will automatically lose when time's up. (requested by dragonbucher)
dragonbucher has 120 seconds left.
☆dragonbucher: ok what are thes pokem on
Dragonite used Earthquake!
It's super effective!
(The opposing Incineroar lost 37% of its health!)
The opposing Incineroar used Knock Off!
(Dragonite lost 32.7% of its health!)
The opposing Incineroar knocked off Dragonite's Heavy-Duty Boots!
Turn 2
Dragonite used Earthquake!
It's super effective!
(The opposing Incineroar lost 37% of its health!)
The opposing Incineroar used Knock Off!
(Dragonite lost 46.5% of its health!)
Turn 3
dragonbucher withdrew Incineroar!
dragonbucher sent out Landorus!
Dragonite used Earthquake!
It doesn't affect the opposing Landorus...
Turn 4
Dragonite, come back!
Go! Seismitoad!
The opposing Landorus used Rock Slide!
It's not very effective...
(Seismitoad lost 15.6% of its health!)
ChatGPT:
- 皆さん、こんにちは!そしてポケモンバトルの世界へようこそ!今日はdragonbucherとPokeLLMの間で繰り広げられる熱い戦いをお届けします。それでは、早速試合の実況を始めましょう!
バトルがスタートし、dragonbucherがIncineroarを繰り出します!対するはPokeLLMのDragonite!戦場の空気が緊張で張り詰めます。
【ターン1】
試合のタイマーが作動し、非アクティブなプレイヤーは時間切れで自動的に負けとなる設定になっています。dragonbucherには120秒の制限時間があります。
DragoniteがEarthquake(じしん)を使用!これが効いていますね、Incineroarの体力が37%も減少しました!しかしIncineroarも反撃、Knock Off(はたきおとす)でDragoniteのHeavy-Duty Bootsを弾き飛ばし、Dragoniteの体力を32.7%削ります。
【ターン2】
Dragonite、再びEarthquake!Incineroarの体力がさらに37%減少します。しかしIncineroarは容赦なくKnock OffでDragoniteを攻撃、Dragoniteの体力は46.5%まで低下。
【ターン3】
ここでdragonbucherがIncineroarを引っ込め、Landorusを送り出します。DragoniteのEarthquakeは、Landorusには効果がありません...!
【ターン4】
Dragonite、交代です!Seismitoadの出番です!しかし、LandorusのRock Slide(いわなだれ)はSeismitoadにそれほど効果がなく、体力は15.6%の減少にとどまりました。
これまでの戦いは非常に戦略的で、どちらのトレーナーも勝利を目指して全力を尽くしています。続きはどうなるのか、非常に楽しみですね!
Person:
- 英語表記は避けてカタカナにして
ChatGPT:
- みなさん、こんにちは!そしてポケモンバトルのセカイへようこそ!きょうはドラゴンブッチャーとポケエルエルエムのあいだでくりひろげられるあついたたかいをおとどけします。それでは、さっそくしあいのじっきょうをはじめましょう!
バトルがスタートし、ドラゴンブッチャーがインシネロアをくりだします!たいするはポケエルエルエムのドラゴナイト!せんじょうのくうきがきんちょうではりつめます。
【ターン1】
しあいのタイマーがさどうし、ひあくてぃぶなプレイヤーはじかんぎれでじどうてきにまけとなるせっていになっています。ドラゴンブッチャーには120びょうのせいげんじかんがあります。
ドラゴナイトがジシンをしよう!これがきいていますね、インシネロアのたいりょくが37%もげんしょうしました!しかしインシネロアもはんげき、ハタキオトスでドラゴナイトのヘビーデューティブーツをはじきとばし、ドラゴナイトのたいりょくを32.7%さくります。
【ターン2】
ドラゴナイト、ふたたびジシン!インシネロアのたいりょくがさらに37%げんしょうします。しかしインシネロアはようしゃなくハタキオトスでドラゴナイトをこうげき、ドラゴナイトのたいりょくは46.5%までていか。
【ターン3】
ここでドラゴンブッチャーがインシネロアをひっこめ、ランドロスをおくりだします。ドラゴナイトのジシンは、ランドロスにはこうかがありません...!
【ターン4】
ドラゴナイト、こうたいです!セイスミトードのでばんです!しかし、ランドロスのイワナダレはセイスミトードにそれほどこうかがなく、たいりょくは15.6%のげんしょうにとどまりました。
これまでのたたかいはひじょうにせんりゃくてきで、どちらのトレーナーもしょうりをめざしてぜんりょくをつくしています。つづきはどうなるのか、ひじょうにたのしみですね!
Person:
- 漢字は漢字のままにしいて
ChatGPT:
- 皆さん、こんにちは!そしてポケモンバトルの世界へようこそ!今日はドラゴンブッチャーとポケLLMの間で繰り広げられる熱い戦いをお届けします。それでは、早速試合の実況を始めましょう!
バトルがスタートし、ドラゴンブッチャーがインシネロアを繰り出します!対するはポケLLMのドラゴナイト!戦場の空気が緊張で張り詰めます。
【ターン1】
試合のタイマーが作動し、非アクティブなプレイヤーは時間切れで自動的に負けとなる設定になっています。ドラゴンブッチャーには120秒の制限時間があります。
ドラゴナイトがジシンを使用!これが効いていますね、インシネロアの体力が37%も減少しました!しかしインシネロアも反撃、ハタキオトスでドラゴナイトのヘビーデューティブーツを弾き飛ばし、ドラゴナイトの体力を32.7%削ります。
【ターン2】
ドラゴナイト、再びジシン!インシネロアの体力がさらに37%減少します。しかしインシネロアは容赦なくハタキオトスでドラゴナイトを攻撃、ドラゴナイトの体力は46.5%まで低下。
【ターン3】
ここでドラゴンブッチャーがインシネロアを引っ込め、ランドロスを送り出します。ドラゴナイトのジシンは、ランドロスには効果がありません...!
【ターン4】
ドラゴナイト、交代です!セイスミトードの出番です!しかし、ランドロスのイワナダレはセイスミトードにそれほど効果がなく、体力は15.6%の減少にとどまりました。
これまでの戦いは非常に戦略的で、どちらのトレーナーも勝利を目指して全力を尽くしています。続きはどうなるのか、非常に楽しみですね!
Style-Bert-VITS2で読みあげる
Google Colabのノートブックを使用して、作成したスクリプトをStyle-Bert-VITS2で読み上げます。このステップにより、感情豊かな音声実況が実現します。
ダビングリゾルブで音声と動画を結合する
最後に、ダビングリゾルブを使用して、Style-Bert-VITS2で生成した音声とOBS Studioでキャプチャした動画を結合します。これにより、視覚と聴覚を刺激する魅力的な実況動画が完成します。
生成動画
まとめ
「PokéLLMon」を用いた戦術バトルゲームの実況と、「Style-Bert-VITS2」での感情豊かな音声生成を組み合わせることで、視聴者に新たなエンターテイメント体験を提供できます。この革新的なアプローチは、ゲーム実況の未来を形作る可能性を秘めています。ぜひ、この方法を試してみて、ゲームの世界を新しい角度から楽しんでみてください。
コメント