2Dアバターと3Dアバター
ダウンロードできる2つのエージェントを使うと、キャラクターとペルソナに、返信のストリーミング中に反応するアニメーションのアバターを付けられます。2D Avatars(2Dアバター)は、PNGTuber風のスプライトかメッシュアバターを表示します。3D Avatars(3Dアバター)は、VRM、MMD PMX、GLB、FBXのモデルを表示します。表情は返信に合わせて変わり、口はテキストか音声合成に合わせて動きます。
Live2Dのモデルには対応していません。Live2Dのライセンスでは、無料のオープンソースアプリであっても個別の契約が必要です。また、そのランタイムをMarinara Engineに同梱することもできません。
アバターエージェントのインストール
どのインストールでも、両方のエージェントがAgent Organizer(エージェント管理)のRoleplay(ロールプレイ)とGame(ゲーム)のフィルターにあります。Marinara Engine 2.5.1以降が必要です。それより古いEngineではインストールが拒否されます。2つは別々のダウンロードなので、必要なほうだけをインストールしてください。どちらも、RoleplayとGameのチャットでキャラクターとペルソナに使え、チャット中にAIモデルへ追加のリクエストを送りません。
- Agents → Agent Organizer(エージェント → エージェント管理)を開き、2D Avatarsか3D Avatars、または両方をインストールします。どちらも再起動は不要です。
- アバターはそれぞれ、そのエージェントのページで設定します(アバターの設定を参照)。
- RoleplayまたはGameのチャットでChat Settings → Agents → Misc Agents(チャット設定 → エージェント → その他のエージェント)を開き、エージェントを追加します。
アバターは、Roleplay、ビジュアルノベル、Gameのチャットで、エージェントがオンになっていて対応するエージェントが追加されているときに表示されます。Expression Engineがあってもなくても動きます。アバターは全身スプライトを隠さないので、アバターを代わりに使う場合は全身スプライトを自分でオフにしてください。アバターは全身スプライトが立つ位置に立ち、同じ大きさで表示されます。
アバターの設定
Agents(エージェント)を開き、2D Avatarsか3D Avatarsを開いて、上部近くにあるAvatars(アバター)セクションを使います。
- Character or persona(キャラクターまたはペルソナ)で、アバターを付ける相手を選びます。「(has an avatar)」と付いた名前には、すでにアバターがあります。
- Avatar type(アバターの種類)で、種類を選びます。2D AvatarsではPNGTuber sprites(PNGTuberのスプライト)とMesh avatar(メッシュアバター)を選べます。3D AvatarsではVRM model(VRMモデル)、MMD PMX model(MMD PMXモデル)、GLB or FBX model(GLBまたはFBXモデル)を選べます。
- 下にあるその種類のセクションで設定します。スプライトを使うかファイルをインポートし、感情ごとの表情を選びます。削除もここで行います。
- Preview(プレビュー)で確認します。Try a face(表情を試す)で感情を切り替え、Talk(話す)で口を動かします。まだ表示するものがない場合、プレビューには見本のアバターが表示されます。
- Show this avatar in chats(チャットでこのアバターを表示)をオンにします。
Show this avatar in chatsは、設定済みのアバターを削除せずにオンとオフを切り替えます。アバターか使用できるスプライトを設定するまでは、オフのままです。プロフィール画像だけでは2Dアバターは作られません。
Movement(動き)には、すべての種類に共通する3つのスイッチがあります。Lip sync(リップシンク)は口を動かし、Blinking(まばたき)は数秒ごとにまばたきさせ、Idle motion(待機中の動き)は待っている間に呼吸と体の揺れを表現します。キャラクターに複数の種類のアバターがある場合は、Show this one(これを表示)でチャットに使う種類を選びます。チャットでその種類のエージェントがオフのときは、エージェントがオンになっている別の種類を表示します。種類を削除すると、そのファイルが削除されます。スプライトは残ります。
チャットでアバターの大きさと位置を変える
- Chat Settings → Agents(チャット設定 → エージェント)を開き、Avatars(アバター)を開きます。
- 一覧でアバターを選び、そのサイズスライダーを使います。
- アバターを動かすにはArrange(配置)を選びます。マウスや指でドラッグするか、アバターにフォーカスを合わせて矢印キーを使います(<kbd>Shift</kbd>を押しながらだと大きく動きます)。
- Done(完了)を選びます。アバターは置いた場所にとどまり、クリックは再びチャットの操作に使われます。Reset(リセット)を選ぶと、すべてのアバターが元の位置に戻ります。
3DアバターにはFraming(映す範囲)もあります。Portrait(ポートレート)は頭と肩を映します(デフォルト)。Half body(半身)は腰まで、Full body(全身)はモデル全体を映します。アバターの大きさは変わらず、縦に長い範囲を選ぶほど、モデルのより多くの部分が映ります。2Dアバターには映す範囲の設定はありません。
配置はこのデバイス上でそのチャットごとに保存されます。ほかのデバイスとは同期しません。Expression Engine自身のArrangeボタンでもアバターを動かせます。
アバターのファイルの保存場所
インポートしたファイルは、保存する前に検査されます。サイズの上限は、サーバーの通常のアップロード上限だけです。ファイルは、データフォルダーのavatar-models/<character or persona>/<id>/の下に、設定を記録したavatar.jsonと並んで保存されます。バックアップとプロファイルのエクスポートには、このフォルダーも含まれます。キャラクターやペルソナを削除すると、そのアバターも削除されます。SettingsのDanger ZoneでCharacters(キャラクター)、Personas(ペルソナ)、Media & Assets(メディアとアセット)のいずれかをすべて消去した場合も同じです。キャラクターカードのエクスポートにアバターが含まれることはありません。
グループチャット
グループチャットには、保存済みでオンになっており、対応するエージェントもオンのアバターを持つ参加者が全員表示されます。人数に固定の上限はありません。Individualモードでは、返信しているキャラクターが話し、感情を表します。Merged (Narrator)モードでは、話者タグや名前で話者を示したせりふが、対応するキャラクターを動かします。音声がオンのときは、再生中の声のキャラクターに口パクが従います。
2Dアバター: PNGTuberのスプライトとメッシュアバター
2D Avatarsは、2種類のアバターのどちらかを表示します。PNGTuber sprites(PNGTuberのスプライト)は、表情を切り替え、口を開け、まばたきする平面の画像です。Mesh avatars(メッシュアバター)は、頭、目、口がなめらかに動くイラストです。どちらも、キャラクターかペルソナを選んでから、このエージェントのページで設定します。
PNGTuberのスプライト
表情スプライトを持つキャラクターやペルソナは、それらをPNGTuberのアバターに使えます。スプライトが表情になります。ポートレートのスプライトがあればそれを使い、なければ全身のスプライトを使うため、1つのアバターで両者が混ざることはありません。プレビューしてから、Show this avatar in chats(チャットでこのアバターを表示)をオンにするか、Use my sprites(自分のスプライトを使う)で保存してください。
- 口パク用とまばたき用の画像。 表情の名前に、口を開けた画像なら
_talk、目を閉じた画像なら_blinkを付けたスプライトを追加します。たとえばhappy_talkやhappy_blinkで、両方ならhappy_blink_talkです。_talking、_speak、_mouth_open、_blinking、_eyes_closedも使えます。これらの画像がない表情でも、話している間は跳ねます。 - 感情ごとの表情。 Neutral、Happy、Angry、Sad、Relaxed、Surprisedのそれぞれに表示する表情を選びます。Resting face(平常時の表情)にはNeutralの表情が使われます。後から追加したものも含め、すべてのスプライトが選択肢に並びます(最大64個の表情)。PNGTuber Plusからインポートしたアバターでは、そのアバター自身の表情だけが並びます。Expression Engineやゲームマスターが手持ちのスプライトを選んだ場合は、その表情がそのまま表示されます。
- その他の感情。 Face for each feeling(感情ごとの表情)の下にあるMore feelings(その他の感情)を開くと、より細かい23の感情にも表情を選べます。これらは6つの感情の下に分類されています(下の表)。別の表情を選ぶまでは、それぞれが属する主な感情の表情を使います。
fearやamusementのようにこれらの感情の名前を付けたスプライトや、scaredやlaughingのようにその感情を表す単語の名前を付けたスプライトは、設定しなくてもその感情に使われます。 - 動き。 Hop while talking(話している間に跳ねる)とHop height(跳ねる高さ)で、弾む動きを設定します。Time between blinks(まばたきの間隔)は平均値です。毎回のまばたきは少し早まったり遅れたりします。端末で動きを減らす設定をオンにしている場合、アバターは跳ねたり呼吸したりしませんが、表情と口は変わります。
- スプライトはそのまま表示されます。 背景付きで描かれたスプライトは背景ごと表示され、ファイルが変更されることはありません。背景のない表情が必要な場合は、アバターから作る表情を使ってください。
- Use my spritesは、スプライトを表情として保存します。表情を選んだり動きを変えたりしたときも保存されます。Update from sprites(スプライトから更新)は、後から追加したスプライトを取り込み、選んだ表情はそのまま残します。インポートした後に自分のスプライトへ戻すには、Remove(削除)を選びます。
| その他の感情の分類先 | 感情 |
| Neutral | Curiosity |
| Happy | Admiration, Amusement, Desire, Embarrassment, Excitement, Gratitude, Optimism, Pride |
| Angry | Annoyance, Disapproval, Disgust |
| Sad | Disappointment, Grief, Nervousness, Remorse |
| Relaxed | Approval, Caring, Love, Relief |
| Surprised | Confusion, Fear, Realization |
Import PNGTuber Plus save(PNGTuber Plusのセーブをインポート)は、PNGTuber Plusで保存したアバター(.saveファイル)を読み込みます。各コスチュームが1つの表情になり、その口パクとまばたきのレイヤーが口パク用とまばたき用の画像になります。コスチュームは、angry eyes.pngのような画像の名前をもとに感情と対応付けられます。名前で対応付けられなかった感情には、表情を選んでください。引き継がれないものもあります。
- 揺れ、ドラッグ、回転、伸縮はインポートされません。アバターは各レイヤーを静止した状態で表示します。
- アニメーションするレイヤーは、最初のフレームだけを表示します。
- とても古いセーブには、作者のコンピューター上にある画像のパスしか含まれていません。先に新しいPNGTuber Plusで保存し直してください。
- とても大きなアバターは、スマートフォンでもすべての画像を保持できるように、2048ピクセルまで縮小されます。
セーブのインポートには、サーバー側の画像処理が必要です。一部のAndroid(Termux)のインストールには画像処理がないため、その場合はその旨のメッセージとともにインポートが拒否されます。
メッシュアバター
メッシュアバターは.mavatarファイルです。Marinaraでスプライトから作ることも(メッシュアバターの作成を参照)、Mesh Avatar Studioで作ることもできます(Mesh Avatar Studioを参照)。追加するにはImport .mavatar file(.mavatarファイルをインポート)を、差し替えるにはReplace file(ファイルを置き換える)を選びます。待機中の動きがオンのとき、アバターは自分で呼吸し、あたりを見回します。まばたきもし、口は返信に合わせて動きます。ファイルに描かれた口の形があればそれを使い、なければ簡単な口の形を描きます。
Look for each feeling(感情ごとの見た目)で、各感情で表示するものを選びます。6つの感情のどれか、またはSmile(笑顔)、Shy(照れ)、Half-closed eyes(半目)、Wink(ウインク)から選べます。
ファイルはインポート時にすべて検査されます。壊れたファイル、なめらかに動かすには細かすぎるファイル、展開するとアップロード上限を超えるファイルは、短い理由とともに拒否されます。アバターに必要な部分だけを残すため、ファイル内の元のイラストは保存されません。イラストの権利は作者にあるので、共有する前にライセンスを確認してください。
メッシュアバターにはWebGL2が必要です。現在のブラウザーは対応しています。WebGL2がない場合や、ブラウザーがメモリーを節約するためにグラフィックスを止めた場合は、代わりにPNGTuberの設定かスプライトが表示されます。
3Dアバター: VRMモデル
3D Avatarsは、VRoid Studio、BlenderのVRMアドオン、Unity向けのUniVRMが書き出す形式であるVRMモデルを表示します。VRM 1.0とVRM 0.xのファイルのどちらも使えます。モデルがまだない場合は、無料アプリのVRoid Studioで作ってください。
- 3D Avatarsを開き、キャラクターかペルソナを選びます。
- VRM model(VRMモデル)の下でImport VRM(VRMをインポート)を選び、
.vrmファイルを選びます。 - The author's terms(作者の利用条件)を読みます。これはモデルファイルに含まれる情報で、誰がそのモデルをアバターとして使えるか、商用利用、改変、性的な表現や過度に暴力的な表現が許されるかを示します。VRM 1.0では、作者のクレジット表記が必要か、ファイルを共有してよいかも示します。ファイルにあるライセンスのリンクも開いてください。Marinaraは利用条件を表示しますが、守らせる仕組みはないので、自分で守ってください。
- Faces and mouth shapes(表情と口の形)で、各表情(Neutral、Happy、Angry、Sad、Relaxed、Surprised)、各口の形(A、I、U、E、O)、まばたきに、モデルのどの表情を使うかを確認します。Set by the model(モデルで設定済み)は、モデルが標準のVRMの表情を持っていることを示します。Guessed from its name(名前から推測)は、モデル独自の表情のうち名前が一致するものがあったことを示します。空の表情は何も変えないため、空の表情が割り当てられるのはNeutralだけです。推測が合っていないと思ったら、別の表情かNone(なし)を選んでください。
- 必要に応じて、Idle animation(待機アニメーション)に、待っている間にモデルが再生する
.vrmaファイルを追加します。追加しない場合、モデルは呼吸しながらゆっくり揺れます。
Replace model(モデルを置き換える)では待機アニメーションが残ります。VRMのアニメーションはどのVRMモデルにも合うからです。Remove model(モデルを削除)は、モデルと待機アニメーションの両方を削除します。
チャット中、モデルはこちらを見て、まばたきの表情があれば自分でまばたきし、考えているときや聞いているときは首をかしげます。VRM 1.0のモデルには、表情を見せている間は口を動かさないものがあります。そのようなモデルが話している間は、口が動けるように表情を弱めて表示します。動きを減らす設定がオンのときも表情と口は変わりますが、モデルは揺れ、呼吸、待機アニメーションの再生を止めます。
うまくいかなかった場合は、インポート時に理由が表示されます。よくある原因は次のとおりです。
- 圧縮されたモデル。 Dracoやmeshoptの圧縮、またはKTX2のテクスチャーは読み込めません。圧縮をオフにしてエクスポートし直してください。
- 通常の3Dモデル。 VRMのデータを持たない
.glbや.gltfには、表情も人型の骨格もありません。リグ入りの.glbはGLB or FBX model(GLBまたはFBXモデル)としてインポートするか(GLBとFBXのアバターを参照)、VRMへ変換してください(Blenderを参照)。 - 不完全なモデル。 VRMが必要とするボーンが欠けているモデル、ファイル内にない部分やファイルの外にあるファイルを参照しているモデルは拒否されます。
大きなモデルは、特にスマートフォンでは読み込みに時間がかかります。
MMDアバター: PMXモデルとVMDモーション
- 3D Avatarsのページで、Avatar type(アバターの種類)のMMD PMX model(MMD PMXモデル)を選びます。
- Import PMX or ZIP(PMXまたはZIPのインポート)を選びます。1つのPMXモデルとその画像を含むZIPを選んでください。モデルのフォルダー構成とファイル名は、日本語の名前も含め、そのまま残してください。画像が不要なモデルは
.pmxファイル単体でも使えます。 - Faces and mouth shapes(表情と口の形)で、各感情、口の形、まばたきに使う表情を選びます。よく使われる英語と日本語の名前は自動で対応付けられます。プレビューを確認し、間違った推測を修正してください。適切な表情がないモデルでも、表示して体を動かすことはできます。
- 必要に応じて、VMD motion(VMDモーション)に、そのモデル用に作られた
.vmdを追加します。Idle motion(待機中の動き)がオンの間に再生され、選んだ表情は引き続きチャットに合わせて変わります。VMDがない場合、モデルはゆっくり揺れます。
画像の不足、安全でないパス、破損したファイルは、保存済みのモデルを置き換える前に拒否されます。設定画面には先頭の256個の表情名が表示され、それより多い場合は警告されます。PMXを置き換えると以前のVMDは削除されるため、新しいモデル用のモーションを追加してください。MMDモデルを削除すると画像とモーションも削除されますが、ほかの種類のアバターは残ります。動きを減らす設定はアニメーションを止めますが、表情とリップシンクは維持されます。
対応しているのは、PMX 2.0モデルと、互換性のあるPMX 2.1モデルです。画像はPNG、JPEG、BMP、TGAに対応し、.sphと.spaも使えます。PMX 2.1の新しい機能の一部には対応しておらず、インポート時に理由が表示されます。PMDモデル、VPDポーズ、カメラやライトのモーションには対応していません。物理演算は行わないため、髪や服の見え方がMikuMikuDanceと異なることがあります。画像パスが256個を超えるモデル、パスが長すぎるモデル、画像のメモリー使用量が多すぎるモデル、リグが複雑すぎるモデルは拒否されます。特にスマートフォンでは、手元のモデルで確認してください。
MMDアバターにはWebGL2が必要で、ほかのアバターと同じ一時停止、フレームレート、映す範囲の設定を使います。モデルは自分のEngineからのみ読み込みます。作者のライセンスと利用条件を守ってください。インポートや再生では、AIサービスに何も送信しません。
GLBとFBXのアバター: リグ入りのモデル
- 3D Avatarsのページで、Avatar type(アバターの種類)のGLB or FBX model(GLBまたはFBXモデル)を選びます。
- Import GLB or FBX(GLBまたはFBXをインポート)を選び、リグ入りのキャラクターの
.glbか.fbxファイルを1つ選びます。
通常のモデルには、どのボーンが体のどこに当たるかを示すVRMのデータがないため、インポートではボーンを名前で対応付けます。Mixamo、Unity、VRoid、Unreal、Blender、3ds Max、Maya HumanIK、Character Creator、DAZのリグは、認識できる名前を使っています。このセクションには、体のボーンがいくつ対応付けられたかが表示されます。モデルには、少なくとも腰、背骨、頭、左右の上腕と前腕が必要です。足りない場合、インポートはモデルを拒否し、足りないボーンを表示します。3Dアプリでそのボーンの名前を変えるか、Mixamoでモデルにリグを入れてください。Aポーズで立っているモデル、後ろを向いているモデル、センチメートル単位で作られたモデルは、自動で姿勢を直し、向きを変え、大きさを合わせます。
表情は、モデルのブレンドシェイプ(シェイプキーやモーフターゲット)から作ります。Faces and mouth shapes(表情と口の形)では、よく使われる名前が自動で対応付けられます。対象は、VRoid、VRChat、Oculusの口の形(aa、A、viseme_aa、Fcl_MTH_A)、開いたあご(mouthOpen、jawOpen)、感情(happy、Joy、mouthSmile)、まばたき(blink、またはARKitのeyeBlinkLeftとeyeBlinkRightのような左右の組)です。プレビューを確認し、間違った推測を修正してください。ブレンドシェイプのないモデルでも、体は動き、話すときにはうなずきます。
対応しているのは、すべてを埋め込んだバイナリー形式のglTF(.glb)と、バイナリー形式またはASCII形式のFBX 2014(7.4)以降です。FBXはEmbed Media(またはEmbed Textures)をオンにしてエクスポートしてください。そうしないと、モデルが画像なしで表示されます。Draco、meshopt、KTX2の圧縮は読み込めません。また、ほかのファイルが別にある.gltfは使えません。.glbとして保存したVRMは、VRM model(VRMモデル)のほうでインポートしてください。モデル独自のアニメーション、物理演算、ポーズの編集には対応していません。作者の利用条件を守ってください。インポートや再生では、AIサービスに何も送信しません。
Get a 3D model
キャラクターやペルソナにVRMモデルがない場合は、VRoid Studioで作ります。VRoid Studioはpixivの無料アプリで、Windows、macOS、iPadで使えます。VRoid Studioで作ったモデルは自由に使えますが、一部の組み込みアイテムや購入したテクスチャーには独自の利用条件があります。VRoid Studioのモデルには6つの表情、5つの口の形、まばたきが入っているので、表情とリップシンクがすぐに動きます。
3D Avatarsのページで、キャラクターかペルソナを選びます。Get a 3D model(3Dモデルを手に入れる)の下にあるRead the guide(ガイドを読む)はこのセクションを開き、Copy prompt(プロンプトをコピー)はその見た目の説明をコピーします。
- VRoid Studioをダウンロードしてインストールします。
- 必要に応じて、Copy promptを選んで画像生成ツールに貼り付け、できた絵を参考にします。VRoid Studioにはプロンプトを入力する欄はありません。
- VRoid Studioで新しいモデルを作成します。キャラクターに最も近い髪、顔、目、体、服装を選び、形と色を調整して似せていきます。
- モデルをVRM(1.0または0.0)としてエクスポートします。求められたら、モデルの情報と利用条件を入力します。
- Agentsで3D Avatarsを開き、キャラクターかペルソナを選んで、VRM model(VRMモデル)の下にあるImport VRM(VRMをインポート)を選びます。VRoid Studioのモデルなら、表情、口の形、まばたきはすべて最初から埋まっています。
プロンプトは、文章から絵や3Dモデルを作るツール向けにキャラクターを説明するものです。内容は、無地の背景の前で正面を向いてTポーズで立つ、アニメ調の全身のキャラクターです。見た目はAppearance(外見)欄から取ります。Image Appearance Override(画像用の外見指定)のタグがオンの場合はそのタグを、外見がない場合は説明を使います。含まれるのは名前と見た目だけで、カードのほかの内容やチャットの内容は含まれません。プロンプトは英語です。自由に書き換えてください。
ほかのツールで作ったVRMでは、表情が少ないことも、まったくないこともあります。どの表情があるかはFaces and mouth shapesで確認できます。画像から表情付きのVRMを作れるとうたうWebサイトもありますが、2026年10月の時点ではどれも確認できなかったため、このガイドでは推奨していません。削除されたTripoのジェネレーターで以前に作ったモデルも、読み込めて体は動きますが、顔は動きません。
表情と口が返信に合わせて動くしくみ
アバターは自動で反応します。この部分に設定するものはありません。
Roleplayでの表情。 返信がストリーミングされている間、Marinaraは書き終わった文を1つずつ読み、その気分を推測します。表情がちらつかないように、次のようにしています。
- 新しい気分が今の気分よりはっきり強いときだけ、表情を変えます。
- 1つの表情は少なくとも2秒間続きます。
- 落ち着いた文が2つ続いたとき、および返信が終わってから約4秒後に、表情は落ち着いた状態に戻ります。
ストリーミングがオフでも、文ごとの気分は保たれ、返信を話す時間に合わせて表情が順番に変わります。音声合成が返信を読み上げるときは、代わりに声に合わせて表情が変わります(下記参照)。
その他の感情の表情を持つPNGTuberアバターは、喜んでいるときのAmusementのように、より細かい感情も表示できます。同じルールに従い、専用の表情がない感情では、それが属する主な感情の表情が表示されます。Expression Engineとゲームマスターの選択も同じように扱われます。scaredという名前の表情がない場合、アバターはFearを表示します。3Dアバターとメッシュアバターが表示するのは6つの感情だけです。
気分の読み取り方。 チャットのモデルには問い合わせません。チャットの文章が外部のサービスに送られることはありません。
- 組み込みの単語リストは、どの環境でもすぐに答えを出します。いくつかの言語で、気分を表すよく使われる単語を知っています。
- 動かせるコンピューターでは、代わりにmood reader(気分リーダー)という小さな感情モデルが文を読みます。mood readerは36言語を理解します。2D Avatarsか3D Avatarsをオンにした状態で初めてRoleplayのチャットを開いたときに、約300 MBを一度だけダウンロードします。進み具合は、Agents(エージェント)にある各アバターエージェントのページに表示されます。ダウンロードに失敗した場合は、約10分後に再試行します。準備ができるまでは単語リストが答え、ダウンロード後はオフラインでも動きます。使用中は約1 GBのメモリーを使い、10分間使われないとメモリーから解放されます。Lite版、Android、メモリーが3 GB未満のコンピューターでは、単語リストを使い続けます。
Game Modeでの表情。 ゲームマスターが表示する各行には表情が付いていて、話しているキャラクターのアバターがその表情になります。声で行を読み上げているときも同じです。心の声は表情を変えますが、口は動かしません。
Expression Engine。 オンになっている場合、返信の後にExpression Engineが選んだ表情が、その返信の最終的な表情になります。次のメッセージを送った後に選択が届いた場合、その選択は対象の返信にだけ使われます。音声合成を使う場合、その選択は声が終わったときに表示されます。
口。 テキストに合わせて動く場合、口が動くのはせりふ(引用符で囲まれた言葉、[Name]:の行、話者タグ)だけで、地の語りでは動きません。速さはおおよそ話す速さです。誰にも話せないほど速くテキストが表示されると、口の動きは速くなり、さらに先へ飛びます。ストリーミングがオフの場合、返信のせりふは8秒以内に話し終えます。音声合成がせりふを再生するときは、代わりに声が口を動かします。
体。 アバターは、メッセージを送ってから最初の言葉が出るまでは考える動きを、口が動いている間は話す動きを、ほかの誰かが話している間や入力中は聞く動きをし、それ以外のときは休んでいます。
グループチャット。 Individual(個別)のグループでは、返信しているメンバーが話します。メンバーのメッセージをスワイプしたときも同じです。Merged(統合)のグループでは、話者タグがそのキャラクターのせりふと表情を指定します。別のキャラクターの名前がある段落でも同じです。名前で話者を示したせりふも、その話者に従います。タグのない地の語りは、最初に名前が出たキャラクターのものになり、名前が出ない場合は直前のキャラクターのものになります。誰の名前も出ていない段落が表示されている途中では、名前が出るか段落が終わって話者が分かるまで、その段落のせりふは待機します。Individualのグループでストリーミングがオフの場合、現時点ではアバターが動くのは最後のメンバーの返信だけです。
音声合成によるリップシンク
音声合成がRoleplayの返信を読み上げると、話しているキャラクターのアバターが声に合わせて口を動かします。大きな音では口を大きく開け、間では閉じ、「oo」のような音では丸くなり、「s」のような音では歯を見せます。オンにするには、Text to Speech (TTS)の設定のとおりに音声合成を設定してください。設定すると、Auto-play(自動再生)でも、メッセージのSpeak(読み上げ)ボタンでも働きます。ビジュアルノベルのレイアウトでも同じです。
Auto-playがオンで返信が読み上げられるとき、声はふつうテキストが表示されてから数秒後に始まるので、アバターは声を待ちます。
- テキストが表示されている間、アバターはいつもどおりまばたきして動きますが、口は閉じたままで、表情もまだ変わりません。
- 声が始まると、口は声に合わせて動き、声が各文に達するたびに表情が変わります。ただし、Expression Engineがすでに表情を選んでいる場合は除きます。
- 表情は、声が終わってから約4秒後に落ち着いた状態に戻ります。行と行の間の短い途切れでは戻りません。
- 声が失敗した場合や、数秒以内に始まらない場合、アバターは返信の表情と口の動きをテキストから1回再生します。それより後で失敗した場合は、最後の気分を表示してから落ち着いた状態に戻ります。
- 声がないまま30秒たつと、アバターは待つのをやめます。その後で声が始まった場合も、口は声に合わせて動きます。
細かい動作は次のとおりです。
- 話す人。 動く口は、その行を読み上げる声のキャラクターのものです。Voice option(声の割り当て方)が声を選ぶのと同じキャラクターです。各キャラクターの口は、自分のせりふの間だけ動きます。語り手の声で読まれる行や、チャットのキャラクターではない話者では、どの口も動きません。Only read dialogues(せりふだけを読み上げる)がオフの場合、キャラクター自身の地の語りもそのキャラクターの声で読まれ、その口が動きます。
- 一時停止、停止、チャットの切り替え。 声を一時停止または停止すると、口も止まります。返信の読み上げ中に別のチャットへ切り替えると、そこのアバターは動きません。声がまだ再生されている間に戻ると、アバターが再び声に合わせて動きます。
- 音量。 Line volume(この読み上げの音量)が変えるのは声の大きさで、口の開き方は変わりません。
- ペルソナ。 自分のメッセージでは、ペルソナの口は動きません。
- Game Mode。 音声合成とAuto-playがオンの場合、口は自分のキャラクターの声を待ち、その声に合わせて動きます。声がない行はテキストによる動きを続けます。語り手とプレイヤーの声では、どのキャラクターの口も動きません。心の声は読み上げられません。
リップシンクによって声の再生が変わることはありません。Marinaraは口のタイミングを合わせるために各クリップの別のコピーを読むので、SafariやiPhone、iPadを含め、再生はこれまでどおりです。最初のクリップがタイミングの準備より先に始まった場合は、声のタイミングに切り替わるまで、そのテキストで口を動かします。ブラウザーがクリップを読めない場合も声は再生され、口が声に合わなくなるだけです。
スプライトからのアバター作成
2D Avatarsのページでキャラクターかペルソナを選び、Make an avatar from a sprite(スプライトからアバターを作る)を使います。キャラクターやペルソナがすでに持っているスプライトをもとに作ります。結果を保存するまで今のアバターは変わらないので、何度でも試せます。
アバターから作る表情
Make faces from the avatar(アバターから表情を作る)は、背景のない表情を作ります。スプライトがまだないキャラクターやペルソナにも使えます。アバターと画像生成のアカウントが必要です。キャラクターエディターやペルソナエディターと同じスプライト生成が開き、アバターが参照画像になります。
- All faces(すべての表情)で29の感情すべて、Main faces(主な表情)で6つを選べます。表情を自分で選ぶこともできます。追加の感情は、専用の表情ができるまで、それが属する主な表情の行に入ります。
- 表情は何回かに分けて、主な表情から先に描かれます。古いGPT Imageモデルは、1枚の画像に1つの表情を描きます。失敗した画像は1回だけ再試行されます。それでも失敗した場合は、Retry picture(画像を再試行)を表示して実行が止まります。Cancel(キャンセル)を押しても、それまでに作った表情は残ります。
- Expose media prompts before sending(送信前にメディアのプロンプトを表示)がオンの場合は、最初のプロンプトを送る前に、すべてのプロンプトをまとめて確認します。どの表情も目を開けて口を閉じた状態で描かれるので、まばたき用と口パク用の画像で目を閉じたり口を開けたりできます。
- Marinaraは表情を単色の背景の上に描き、その色を取り除いて、キャラクターやペルソナのスプライトとして保存します。新しいスプライトは同じ名前のスプライトを置き換えるので、古いスプライトを残したい場合は、最後の手順で名前を変えてください。
アバターをすでに保存している場合は、名前を変えたものも含め、新しい表情はそれぞれ描かれた感情の表情になります。ほかのスプライトは残ります。作り直した表情には、まばたき用と口パク用の画像がありません。古い画像は新しい表情に合わないためです。まばたき用と口パク用の画像で新しく作ってください。PNGTuber Plusからインポートしたアバターは、自身の表情をそのまま保ちます。
まばたき用と口パク用の画像
アバターが感情に表示する表情ごとに1行があり、Face(表情)の横に、そのEyes closed(目を閉じる)とMouth open(口を開ける)の画像が並びます。保存した画像、追加した_blinkと_talkのスプライト、または新しい画像です。ポートレートのスプライトがある場合は、それだけが使われます。アバターがポートレートと全身の表情を混ぜることはないからです。PNGTuber Plusからインポートした表情のように、自分のスプライトではない表情も画像は表示されますが、新しい画像は作れません。
- Image model(画像モデル)を確認します(デフォルトの画像用のアカウントが自動で選ばれています)。
- 足りない画像を1枚作るにはMake(作る)を、すべて作るにはMake N pictures(N枚の画像を作る)ボタンをクリックします。画像1枚につき、画像のリクエストが1回発生します。SettingsでExpose media prompts before sending(送信前にメディアのプロンプトを表示)をオンにしている場合は、各プロンプトを先に確認して編集できます。
- 新しい画像が1枚ずつ表示されます。よいものにはKeep(残す)を、それ以外にはTry again(もう一度試す)を選びます。Try againは、すでにある画像の描き直しにも使えます。描き直している画像は暗く表示され、スピナーが回ります。Cancel(キャンセル)を押すと、サーバー側でも止まります。Try againが失敗しても前の画像が残ります。残した画像を作り直すには、先にKept(残した)を選んで解除します。
- Save kept pictures(残した画像を保存)を選びます。残した画像はアバターのまばたき用と口パク用の画像になり、常に位置がそろうように、もとになったスプライトのコピーと並べて保存されます。保存する前にスプライトを差し替えた場合は、その画像を作り直してください。
参照画像を受け付ける画像用のアカウントでは、スプライトが唯一の参照画像として、モデルが受け付けるサイズと形で、目か口だけを変えるよう求めるプロンプトとともに送られます。モデルは返す画像を動かしたり、拡大縮小したり、余白を足したりするので、まずスプライトに位置を合わせます。そこから取り出すのは目(まばたき用)か口(口パク用)だけです。それ以外はすべてスプライト自身のピクセルのままなので、アバターが跳ねたように見えることはありません。目が閉じなかった場合、口が開かなかった場合、または位置を合わせられないほど画像がずれていた場合、その画像は失敗し、メッセージが表示されます。もう一度試してください。
Pollinations、Together AI、Horde、DALL-E、参照画像の入力枠がないComfyUIワークフローのように、画像を編集できないアカウントもあります。そうしたアカウントでは、Makeは新しい表情を、そのまばたき用と口パク用の画像と一緒に1枚の画像に描くので、3枚がそろいます。アバターから作る表情と同じ方法です。行にはNew face(新しい表情)と表示されます。Keepを選ぶと表情と2枚の画像がまとめて残り、保存すると新しい表情がその感情の表情になります。スプライト自体は変わりません。この方法には、キャラクターやペルソナの外見か説明が必要です。
メッシュアバターの作成
- Sprite to use(使うスプライト)を選びます。Neutralの全身スプライトがあれば、それが自動で選ばれます。正面を向いた全身または胸から上のスプライトが最適です。
- Chat provider that can see pictures(画像を読めるチャットのプロバイダー)を選びます。The agent's provider(エージェントのプロバイダー)は、2D Avatarsのページで設定したものを使い、なければデフォルトのエージェント用のアカウントを使います。そのモデルは画像を受け付けるものでなければなりません。
- Make mesh avatar(メッシュアバターを作る)を選びます。チャットモデルが顔の位置を見つけ、Marinaraがスプライトをそのまま使ってアバターを組み立てます。Cancelで中止できます。
- プレビューを確認します。輪郭線が目、眉、口に重なっていれば正しくできています。Save as mesh avatar(メッシュアバターとして保存)を選ぶか、Discard(破棄)を選んで別のスプライトやモデルで試します。
生成されたメッシュアバターは頭、目、眉、口を動かし、自分のまぶたと口でまばたきし、話します。髪は頭と一緒に動きます。手、髪の毛の1房、垂れ下がるアクセサリーにはリグが入っていません。小さなスプライトは、口が顔に合うように拡大したコピーから組み立てます。大きなスプライトの大部分を顔が占める場合は、速く済むように縮小したコピーを使います。
まばたき用と口パク用の画像では、スプライトは画像用のアカウントに送られます(フォールバックの画像用アカウントが設定されていて、それが参照画像を受け付ける場合は、そちらにも送られます)。メッシュアバターでは、チャットモデルに送られます。画像を編集できないアカウントに送られるのはプロンプトだけで、そこには外見が含まれます。プロンプトは2D Avatarsエージェントに含まれています。Expose media prompts before sendingをオンにすると、各プロンプトを読んで変更できます。デバッグモードをオンにすると、すべてのプロンプトがサーバーのログに書き込まれます。
自分でモデルを作る
キャラクターやペルソナは、何も描かずに表情スプライトをPNGTuberのアバターに使えます。スプライトからのアバター作成では、まばたき用と口パク用の画像を加えたり、メッシュアバターを作ったりできます。自分でモデルを作るなら、次のツールのどれかを使ってください。ファイルはすべてAgents(エージェント)にあるエージェントのページでインポートし、Show this avatar in chats(チャットでこのアバターを表示)をオンにします。
| 作りたいもの | ツール | できるもの |
| PNGTuberのスプライト | 任意のお絵描きアプリで描いてから、キャラクターのSpritesタブへ | スプライト |
| レイヤーとコスチュームを持つPNGTuberのスプライト | PNGTuber Plus | .saveファイル |
| メッシュアバター | Mesh Avatar Studio | .mavatarファイル |
| 3Dモデル | VRoid Studio、またはVRM Add-on for Blenderを入れたBlender | .vrmファイルと、任意で.vrmaの待機アニメーション |
自作のスプライト
- 感情ごとに1枚ずつ絵を描きます。すべて同じサイズにし、キャラクターを同じ位置に置いてください。それぞれに感情の名前を付けます。
neutral、happy、angry、sad、relaxed、surprisedです。smile、cry、calm、shockのように、感情を表す単語を含む名前も使えます。任意のその他の感情には、amusement、fear、gratitudeのような名前を付けます。 - 口を動かすには、口を開けた同じ絵を描き、名前に
_talkを付けます(例:happy_talk)。まばたきさせるには目を閉じて_blinkを付けます。両方の場合は_blink_talkを付けます。 - SpritesタブのFacial Expressions(表情)に絵を追加します。各ファイル名が、そのスプライトの名前になります。キャラクターのスプライトを参照してください。
- Agentsで2D Avatarsを開き、キャラクターかペルソナを選んで、Show this avatar in chatsをオンにします。
PNGTuber Plus
- アバターを別々のレイヤーで組み立てます。開いた口は話している間だけ、閉じた口は黙っている間だけ表示されるように設定します。閉じた目はまばたき中だけ、開いた目はまばたきしていない間だけ表示されるように設定します。
- 感情ごとに、目か口を差し替えるコスチュームを作り、その画像に感情の名前を付けます(例:
angry eyes.png、happy_mouth.png)。より細かい感情も同じで、たとえばfear eyes.pngのように名前を付けます。コスチューム1が平常時の表情になります。 - アバターを保存すると、
.saveファイルができます。 - Agentsで2D Avatarsを開き、キャラクターかペルソナを選んでから、PNGTuber sprites、Import PNGTuber Plus saveの順に選びます。名前で対応付けられなかった感情には、表情を選んでください。
Mesh Avatar Studio
- 背景が透明な、正面を向いた頭と肩の絵から始めます。Mesh Avatar StudioはNode.jsを使って自分のコンピューターで動き、Claude CodeやCodexなどのコーディングエージェントが絵にリグを入れます。手順はREADMEで説明されています。
- 必要なら、Drawn variantsで描いた目と口を追加します。Marinaraは、口の形
mouth_a、mouth_i、mouth_o、mouth_a_halfと、閉じた目eyes_closed_0、eyes_closed_1を使います。どのメッシュアバターにも6つの感情が組み込まれているので、名前を付ける必要はありません。 - Export .mavatarを選びます。プロジェクトのフォルダーを自分でZIPにしないでください。
- Agentsで2D Avatarsを開き、キャラクターかペルソナを選んでから、Mesh avatar、Import .mavatar fileの順に選びます。
VRoid Studio
- VRoid Studioでキャラクターを作ります。その表情、口の形、まばたきは標準のVRMの表情なので、自動で認識されます。
- VRM(1.0または0.0)としてエクスポートします。求められたら、モデルの情報と利用条件を入力します。
- Agentsで3D Avatarsを開き、キャラクターかペルソナを選んで、Import VRMを選びます。
BlenderとVRM Add-on for Blender
- BlenderのPreferencesにあるGet Extensionsから、VRM Add-on for Blenderをインストールします。4.2より前のBlenderでは、代わりにAdd-onsでアドオンのZIPファイルをインストールします。
- モデルに人型のアーマチュアを付け、VRMのボーンを割り当てます。アドオンで自動的に割り当てることもできます。
- アドオンのVRMパネルで表情を設定します。VRM 1.0ではExpressions、VRM 0.xではVRM 0.x Blend Shape Proxyを使います。各表情は、シェイプキーかマテリアルを動かすものでなければなりません。空の表情は何も変えないため、インポートではNeutralにしか使われません。
SmileやShockのように名前が分かりやすいカスタムの表情も対応付けられます。
- 表情: Happy、Angry、Sad、Relaxed、Surprised。VRM 0.xでは最初の4つをJoy、Angry、Sorrow、Funと呼びます。驚きのプリセットはないので、
Surprisedという名前のカスタムの表情を追加してください。 - 口の形: Aa、Ih、Ou、Ee、Oh(VRM 0.xではA、I、U、E、O)。
- まばたき: Blink。
- File → Export → VRM (.vrm)でエクスポートします。待機アニメーションを作るには、アーマチュアにアニメーションを付けてFile → Export → VRM Animation (.vrma)を使います。アドオンがアニメーションをエクスポートできるのはVRM 1.0に設定したモデルだけなので、アニメーションが必要な場合は手順3でVRM 1.0を選んでください。
- Agentsで3D Avatarsを開き、キャラクターかペルソナを選んで、Import VRMを選びます。アニメーションは、Idle animation(待機アニメーション)のAdd animation(アニメーションを追加)で追加します。
エクスポートで避けること
- 圧縮。 Dracoやmeshoptの圧縮と、KTX2のテクスチャーは読み込めません。上で紹介したVRMのエクスポートでは使われませんが、Blenderの通常のglTFエクスポートにはDracoの選択肢があり、モデルの最適化ツールは3つとも追加することがあります。圧縮をオフにしてエクスポートし直してください。
- 通常のglTF。 通常の
.glbには、表情と骨格を名前で示すVRMのデータがありません。GLB or FBX model(GLBまたはFBXモデル)としてインポートするか、.vrmをエクスポートしてください。 - 分かれたファイル。 テクスチャーやデータが別のファイルに分かれているモデルは使えません。1つの
.vrmファイルとしてエクスポートしてください。 - PNGTuber Plusの追加効果。 揺れ、ドラッグ、アニメーションは引き継がれません。各レイヤーは静止した状態で表示され、アニメーションするレイヤーは最初のフレームを表示します。
パフォーマンスとデバイス
各種類のアバターの描画コードは、その種類のアバターが初めて表示されたときにだけダウンロードされます。そのため、アバターのないチャットでは余分なものは何も読み込みません。
| スマートフォン | デスクトップ | |
| 同時に描画するアバター | 固定の上限なし | 固定の上限なし |
| 話している間の毎秒フレーム数 | 30 | 30 |
| 待機中の毎秒フレーム数 | 20(スマートフォンの負荷が高いときは15) | 30 |
| 鮮明さ(ピクセル比) | 最大1.5× | 最大2× |
チャットには、設定済みでオンのアバターがすべて、キャラクターの順に、続いて自分のペルソナが表示されます。画面に合わせて大きさと配置を調整してください。タブが非表示のとき、ウィンドウがバックグラウンドにあるとき、Appearanceの設定を開いているとき、チャットが画面外にあるときやパネルやエディターに覆われているときは、アバターの描画を止めます。Reduce Ambient Animations & Effects(周囲のアニメーションと効果を減らす)か端末の動きを減らす設定がオンのときも、アバターは表情を変え、口を動かしますが、呼吸、揺れ、待機中のポーズは省きます。
関連ガイド
- エージェント: チャットを支えるAIヘルパー
- ダウンロードできるエージェント一覧