見出し画像

AIキャラ・AIVtuber向けVTubeStudio設定と使い方

今回はAIキャラクターやAIVtuberのLive2Dモデルを動かすVTubeStudioの設定やAPI等の使い方をまとめます。

AIキャラクターやAIVtuberは、リップシンクやモーション設定、ホットキーの発火等の実装がVTuberとは異なります。

そこで実際にうちのAIキャラクター用途で設定しているVTubeStudioの内容を共有していこうと思います!

あと、AIキャラ関係なく単純に私が使っていくなかで知ったツールのTipsなども残しているので参考にしてみてください。

※本記事の最終更新:2025/10/23


リップシンク

VTuberさんはカメラトラッキングなどでリップシンクも表現すると思いますが、AIキャラの場合は仮想マイクデバイスの音声(ボイス)をもとに口パクするのがおすすめです。

VB-Cableという仮想マイクのインストール方法は下記サイトが分かりやすかったので共有します。

セットアップできたら、AIキャラの音声(ボイス)をその仮想デバイスから出力するように設定します。例:CABLE Input

画面ダブルクリック > 設定 > 左上の設定アイコン > リップシンク設定(マイク)

そして、VTubeStudioを開いて「リップシンク設定(マイク)」の「マイクを使う」をONにしましょう。

マイクはAIキャラのボイスが出力されるCABLE Outputにすることで、その音声をVTubeStudio側で受け付けるようになります。
※リップシンクの種類はマイクロリップシンクであることを確認して、もし違う場合は変更してください

そして口パクの設定もします。

画面ダブルクリック > 設定 > 左上の人型設定アイコン
Mouth SmileとMouthOpenの項目を探す
(※モデルによって違う場合あるのでその場合は制作者に確認)

・Mouth Smile:INをVoiceFrequencyPlusMouthSmileにします。

・MouthOpen:INをVoiceVolumePlusMouthOpenにします。

これでAIキャラクター側のボイス出力がVB-Cableを通じてVTubeStudioでもそのマイク音声に連動して口パクされるようになるというわけです。


モーション

画面ダブルクリック > 設定 > 左上の人型設定アイコン > 待機モーション

モーションはVTuberのようなカメラをもとにしたトラッキングが現状難しいので、待機モーションを使用するアプローチを紹介します。

自然に見せるには少し長めの待機モーションを用意してループさせたり、複数のモーションを用意してプログラムで切り替えたりなどが考えられます。

動きが激しかったり主張が強すぎるモーションだとループしている感じが見て取れてしまうので、大袈裟ではない自然な仕草とかを上手く収録するのがおすすめです(難しいところですが)。

下記の記事がとても参考になるので共有します。


ホットキー自動発火(API)

次にVTubeStudio APIを活用したホットキー発火を紹介します。
主にAIキャラの表情変化やモーション変化など動的な変化表現で使ったりできそうです。

まず、VTubeStudio側でAPIの起動をONにします。

画面ダブルクリック > 設定 > 左上の設定アイコン > API設定箇所

(デフォルトだと)WebSocketsが8001ポートで起動します。

プログラム側を書いていきましょう。(下記はPythonを使用)

import asyncio
import json
import websockets


class VTubeStudioAPI:
    API_NAME = "VTubeStudioPublicAPI"
    API_VERSION = "1.0"

    def __init__(self, host="localhost", port=8001):
        self.uri = f"ws://{host}:{port}"
        self.plugin_info = {
            "pluginName": "Test Plugin",
            "pluginDeveloper": "Test Developer",
        }

    async def __aenter__(self):
        self.websocket = await websockets.connect(self.uri)
        await self.authenticate()
        return self

    async def __aexit__(self, *_):
        if hasattr(self, "websocket"):
            await self.websocket.close()

    async def _send_request(self, message_type, data=None):
        payload = {
            "apiName": self.API_NAME,
            "apiVersion": self.API_VERSION,
            "requestID": message_type.lower(),
            "messageType": message_type,
            "data": data,
        }
        await self.websocket.send(json.dumps(payload))
        return json.loads(await self.websocket.recv())

    async def authenticate(self):
        # 認証トークンの要求
        auth_response = await self._send_request(
            "AuthenticationTokenRequest", self.plugin_info
        )

        # 認証の実行
        if token := auth_response.get("data", {}).get("authenticationToken"):
            await self._send_request(
                "AuthenticationRequest",
                {**self.plugin_info, "authenticationToken": token},
            )

    async def get_hotkey_list(self):
        return await self._send_request("HotkeysInCurrentModelRequest")

    async def trigger_hotkey(self, hotkey_id):
        return await self._send_request("HotkeyTriggerRequest", {"hotkeyID": hotkey_id})


async def main():
    async with VTubeStudioAPI() as vts:
        print("VTubeStudioに接続しました")

        # ホットキー一覧の取得と表示
        hotkeys_response = await vts.get_hotkey_list()
        available_hotkeys = hotkeys_response.get("data", {}).get("availableHotkeys", [])

        if not available_hotkeys:
            print(
                "ホットキーが見つかりません。VTubeStudioでホットキーを設定してください。"
            )
            return

        while True:
            # ホットキー一覧を表示
            print("\n--- 利用可能なホットキー ---")
            for i, hotkey in enumerate(available_hotkeys):
                print(f"{i+1}: {hotkey['name']}")
            print("q: 終了")

            # ホットキーの選択と実行
            choice = input("\n実行するホットキーの番号を選択してください: ")
            if choice.lower() == "q":
                print("プログラムを終了します。")
                break
            try:
                idx = int(choice) - 1
                if 0 <= idx < len(available_hotkeys):
                    selected_hotkey = available_hotkeys[idx]
                    await vts.trigger_hotkey(selected_hotkey["hotkeyID"])
                    print(f"「{selected_hotkey['name']}」を実行しました。")
                else:
                    print("無効な番号です。")
            except ValueError:
                print("無効な入力です。番号か 'q' を入力してください。")


if __name__ == "__main__":
    asyncio.run(main())

VTubeStudioでホットキーに登録してあるものをプログラムから実行できる簡単なコードをサンプルとして用意してみました。

こちらを実行すると…

VTubeStudio側に認証の画面が表示される

上記のような表示がVTubeStudio側で表示されました。
これを許可します(実行後の最初だけ必要)

そうするとターミナル側でVTubeStudioに登録されているホットキーが表示されるので、選択実行すると該当のホットキーが発火します。

こんな感じでプログラムからホットキーを操作出来たりするので、AIキャラの回答に合わせてキー発火するような処理を実装すれば、感情とリンクした表情変化や動きの変化なども実装できます。


Tips

ここからはAIキャラ独自というよりVTubeStudioを使ってきた経験からのTipsを共有していきます。
なのでVTuberさんなども参考になる内容かなと。

OBSに投影(Spout2)

画面ダブルクリック > 設定 > 左上のカメラアイコン > Spout2設定

OBSにモデルを映すにはいくつか方法がありますが、Spout2を個人的におすすめします。

ウィンドウキャプチャや画面共有でも投影自体は可能ですが、ウィンドウを縮小すると投影が非表示になったり、VTubeStudioの設定項目が映ってしまう等のリスクがあるからです。

他にも、負荷が低い/高速・軽量、透過が簡単・綺麗などSpout2のメリットは多数あります。

Spout2ではセットアップすれば上記の課題が改善されてとてもスマートなOBSのキャラ投影が実現します。

Spout2のインストールとOBSセットアップは上記をご覧ください。
簡単にまとめると、
①VTubeStudioでSpout2をON
プラグインページからインストール
③OBSソース追加でSpout2 Captureを選択してVTubeStudioを投影

VTubeStudioの背景設定からColorPickerを選択、透過(OBS)をON
SpoutSenders

Composite mode

Poll time for new senders

VTubeStudioSpout

Default

fast
OBSのSpout2設定項目はこちらを参考に

こんな感じでセットアップは意外と簡単ですし、一度設定すれば今後はVTubeStudioを起動するだけでOBSに投影されます。

VTubeStudio以外にもSpout2の投影が可能なツールはあるので、入れておいて損はないツールかと思います。無料ですし。


VTubeStudio複数起動

複数AIキャラを表示したいときや、VTuberがAIキャラと一緒に映りたい際に、VTubeStudioを複数立ち上げることができます。

設定の「VTubeStudioを複数起動」をクリックするだけです。
VTubeStudio Window 2として新しいウインドウで立ち上がります。

配信パートナーAI形式で配信をしてみたいVTuberさんなどは参考にお試しください!


Steam画面を立ち上げない起動方法

VTubeStudioを初期のショートカットから立ち上げるとSteamウインドウが勝手に立ち上がってしまいます。

こんな感じ

特にSteam画面を表示させる必要ないので、VTubeStudioウインドウだけを立ち上げる方法を探しました。

C:\Program Files (x86)\Steam\steamapps\common\VTube Studio階層にあるstart_without_steam.batを開くことでこの課題は解決します。

なので、start_without_steam.batをデスクトップなどにショートカットを作っておくと便利です。


さいごに

今回はAIキャラやAIVtuber向けVTubeStudioの使い方やTipsを共有してみましたがいかがだったでしょうか?

VTubeStudioはLive2Dモデルを動かすツールとして非常に優れており、AIキャラクターにおいてもVTuber同様に色んな表現ができるかと思います。

本記事を参考に挑戦してみてください!

また、VTubeStudio以外にもPNGtuber形式など、AIキャラやAIVtuberのビジュアル表現は多種多様なので他の記事も参考にどうぞ。

以上!それでは👋

いいなと思ったら応援しよう!