いましばらく、公式ウェブサイトの見栄えが塩辛めの状態となりますが、近日中に映えデザインにアップデートいたします。なかのひとのリソース(&なかのひともゲーム遊びたい都合🤣)ご理解頂ければ幸いです。
「VRM制御」にも対応予定ですが現在は未実装で、 Issue-#5 が関連タスクとなっています。こちらの機能にご期待頂いている皆様&わたし自身はもう少々お待ち頂ければ幸いです。🙇🏼♀️
とりあえず簡易版の使い方ガイドを掲載します。きれいでかっこいいやつは数日…お待ち下さい。🙏
ただいま撮影準備中です🙇🏼♀️(雰囲気は開発のなかのひとの Twitch 配信で見られるかもしれません👀)
VACはMITライセンスのオープンソースソフトウェアです。開発にご協力頂ける方は GitHub ( https://github.com/usagi/virtual-avatar-connect ) へどうぞ!
※不具合報告やご要望は GitHub の Issues へ頂ければ幸いです。🙇🏼♀️
†1: 例えばこういうファイルです:
†2: お使いのブラウザによっては「ブロック・一般的ではないファイル」または他の警告が表示され、ファイルのダウンロードに追加の操作が必要な場合があります。右上の方にある小さな▶をクリックすると「ダウンロードを続行」できます。
†3: デスクトップやマイドキュメントでも構いませんし、"C:\Virtual-Avatar-Connect"や"D:\ProgramData\Virtual-Avatar-Connect"でも構いません。よくわからない場合はとりあえずデスクトップにでも展開して使ってみて下さい。展開されたファイル中の "virtual-avatar-connect.exe" が VAC の実行ファイルです。お好みでショートカットも作成してお使いになると便利かもしれません。
お使いの環境によっては .exe の部分が表示されていないかもしれません。ファイルの拡張子を表示する方法などで検索してお使いの環境でのファイル操作についてお調べ下さい。🙏)
設定ファイルや必須フォルダーの構成に問題がなく無事に起動に成功すると、②のような "クロイガメン" が表示されます。
環境によってはウィンドウの枠などの様子が異なるかもしれません。
初期配布に付属の設定では前回までの動作状態の一部が保存される設定になっていますが、初回起動時はまだファイルが存在しないため "WARN" (警告)が表示されますが、問題ありません。
†1: 「音声認識(1回)」は ON にすると1回(1文)だけ音声認識が動作します。音声から認識されたテキストは横長の部分に表示されます。
†2: 初めて音声入力へアクセスする際にブラウザーがマイクの使用許可を表示する場合があります。許可すると音声入力が可能になります。
音声入力を行う言語を変更したい場合は「認識言語」の入力欄を "ja-JP" から "en-US" や "fr-FR" に変更します。(言語と地域のコードはISO396とISO3166の組み合わせです。)
†3 手順では紹介していませんが「音声認識(常時)」を ON にした場合は OFF にするまでずっと音声を認識し続けます。 動作試験や、特定のタイミングでのみ音声入力したい場合は「音声認識(1回)」を使い、配信中に全自動で入力し続けたい場合などは「音声認識(常時)」を使うと便利です。
†4 また、「認識結果を自動入力」を ON にすると、認識されたテキストが自動的に VAC チャンネルへ送信されるようになります。手動で送信したい場合は POST ボタンを使用します。 初期状態では送信先のチャンネルは user が設定されています。入力画面からの送信先は POST ボタンの左側の入力欄から任意に送信先のチャンネルを変更できます。
VAC は入力画面などから入力された《コンテント》を《チャンネル》へ流し、《プロセッサー》で処理し、出力画面や音声合成エンジンへ送出します。 出力画面では特定の《チャンネル》の《コンテント》を表示できます。手順にはありませんが、ここで試したくなった場合は出力画面を表示した状態で、 入力画面の POST ボタンの左側の送信先チャンネル設定を title あるいは description に変更した状態でテキストを送信してみましょう。👀
†1:「画像認識(1回)」のチェックを ON にした状態の入力画面の画面下部の画像認識機能の様子。
†2: 画像認識でテキストが認識完了した状態の様子。(この例で使ったのは Arknights というゲームのとあるイベントの会話の一節です。)
VACの標準の入力画面でのお手軽ばーじょんの画像認識機能では、画像の「クリップボードからの貼り付け」と「ファイルのドラッグ・アンド・ドロップによる貼り付け」に対応しています。
プレイ中のゲーム画面からスクショをさっとクリップボードへ撮影し、クリップボードからそのまま VAC へ貼り付けられるようになっています。 読み方のわからない漢字やことばをテキスト化して検索しやすくしたり、VAC へ入力して AI 疑似人格に調べて貰ったり、音声合成で読み上げて貰ったり、とっさに使えて便利かもしれません。
あらかじめ認識させたい「ウィンドウのタイトル」や「会話などで繰り返し表示される文字がでてくる領域」がある場合は、 次の【使い方 5. 「画像認識」→(テキスト)→「テキスト表示」 // プロセッサー編】で紹介する「プロセッサー版」の画像認識機能を使うと便利な場合もあります。
もし、画像認識の結果が悪い場合は、認識させたい文字の言語が「認識言語」の入力欄に設定されているか確認して見て下さい。 日本語なら "jpn" 英語なら "eng" フランス語なら "fra" のように設定します。この機能の言語コードの一覧は「lang code」と書かれたリンクをクリックすると表示できます。
今回は 《Screenshot》 Processor と 《OCR》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
コマンドラインでは `./virtual-avatar-connect conf.example-ss-ocr.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-ss-ocr.toml" の中身はこうなっています。👀
†1: テキストエディターを使います。特に普段使っているテキストエディターが無い場合は、Windows の「メモ帳」でファイルを編集できれば十分です。
†2: 成功するとウィンドウから撮影されたスクショが "ss.png" として保存され、この画像から認識されたテキストが標準の出力画面のサブタイトル的な部分に表示されます。
少し惜しい感じになる場合もありますが、画像からの文字列認識は必ず人間が読めるように読み取れるとは限りません。いまのところ「だいたいうまくが」くらいには成功しますので、便利な使い所を見つけてみて下さい。
《Screenshot》 Processor にはウィンドウ内の特定の領域だけをスクショする設定、1度の実行で複数の領域のスクショを撮影する設定などがあります。 詳しくは「使い方 X. ふろく: VAC の仕組みと用語」の Processor の 《Screenshot》 の項目をご覧下さい。
《OCR》 Processor にはウィンドウ内の特定の領域だけをスクショする設定、1度の実行で複数の領域のスクショを撮影する設定などがあります。 詳しくは「使い方 X. ふろく: VAC の仕組みと用語」の Processor の 《OCR》 の項目をご覧下さい。
今回は 《OS-TTS》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
コマンドラインでは `./virtual-avatar-connect conf.example-os-tts.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-os-tts.toml" の中身はこうなっています。👀
2-ch-mix など出力画面についてもっと知りたい場合は「使い方 12. 「出力画面」の作り込み」で紹介するので御覧ください。
Windows 11の場合は設定 時刻と言語 > 音声認識から音声合成エンジンの管理を行えます。使いたい言語の音声パッケージを導入しましょう。
今回は 《CoeiroInk》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
https://coeiroink.com/の「ダウンロード」から CoeiroInk をダウンロードしてお使いの環境に導入します。
できるだけリアルタイムに応答を得たい方は「GPU版」を使うとよいです。
コマンドラインでは `./virtual-avatar-connect conf.example-coeiroink.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-coeiroink.toml" の中身はこうなっています。👀
2-ch-mix など出力画面についてもっと知りたい場合は「使い方 12. 「出力画面」の作り込み」で紹介するので御覧ください。
今回は 《Bouyomichan》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
https://chi.usamimi.info/Program/Application/BouyomiChan/からダウンロードしてお使いの環境に導入し起動します。
例: C:\Program Files (x86)\BouyomiChan\RemoteTalk\RemoteTalk.exe
version 0.2.0 以前のダウンロード用パッケージには "conf.example-bouyomichan.toml" は同梱されていません。必要に応じて作成または、https://github.com/usagi/virtual-avatar-connect/blob/main/conf.example-bouyomichan.tomlからダウンロードしてご用意下さい。
コマンドラインでは `./virtual-avatar-connect conf.example-bouyomichan.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-bouyomichan.toml" の中身はこうなっています。👀
今回は 《GAS-Translation》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
9-1-1. https://script.google.com/にアクセスして「新しいプロジェクト」を作成します。
9-1-2. 以下のコードを貼り付けて「プロジェクトを保存」(💾謎の古代の保存媒体のアイコンを押します)
9-1-3. 「デプロイ」→「新しいデプロイ」
9-1-4. 「種類の選択 ⚙」(この⚙のところをクリック)→「ウェブアプリ」
9-1-5. 「次のユーザーとして実行」が「自分」になっている事を確認
9-1-5. 「アクセスできるユーザー」を「全員」に変更
9-1-6. 「デプロイ」→「デプロイID」(= Script ID)をコピーして取得
以上のGAS翻訳サービスの作り方は「音声認識字幕ちゃん」を100%参考にさせて頂いています。先人に感謝いたします。🙏
version 0.2.0 以前のダウンロード用パッケージには "conf.example-gas-translation.toml" は同梱されていません。必要に応じて作成または、https://github.com/usagi/virtual-avatar-connect/blob/main/conf.example-gas-translation.tomlからダウンロードしてご用意下さい。
コマンドラインでは `./virtual-avatar-connect conf.example-gas-translation.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-gas-translation.toml" の中身はこうなっています。👀
2-ch-mix など出力画面についてもっと知りたい場合は「使い方 12. 「出力画面」の作り込み」で紹介するので御覧ください。
今回は 《OpenAI-Chat》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
10-1-1. https://openai.com/にアクセスして "Log in↗" をクリックします。
10-1-2. "Don't have an accout? Sign up" から "Sign up" をクリックします。
10-1-3. https://platform.openai.com/account/usage でAPI のクレジット残高を確認します。
10-1-4. もし使用可能なクレジットが無ければ https://platform.openai.com/account/billing/overview の "Add to credit balance" からクレジットを購入します。
10-1.5. https://platform.openai.com/account/api-keys で "Create new secret key" から API KEY を作成します。
OpenAIの"ChatGPT"と"API"は別のサービスで支払いも共有されません。OpenAIの有料サービスに初めて登録する方は気をつけて下さい。《OpenAI-Chat》に必要なサービスは"API"のみです。
version 0.2.0 以前のダウンロード用パッケージには "conf.example-openai-chat.toml" は同梱されていません。必要に応じて作成または、https://github.com/usagi/virtual-avatar-connect/blob/main/conf.example-openai-chat.tomlからダウンロードしてご用意下さい。
コマンドラインでは `./virtual-avatar-connect conf.example-openai-chat.toml` です。コマンドラインでの使い方は `--help` で確認できます。
この設定ファイル "conf.example-openai-chat.toml" の中身はこうなっています。👀
《OpenAI-Chat》にはたくさんの設定項目があります。 AIの広範な知識からの回答を得られる助手を召喚したいだけならサンプルの設定だけでも十分に楽しく、あるいは役立つよう動作してくれます。 もっと高度な設定や疑似人格形成を行いたい場合はひとまず付属の conf.toml でコメントされている設定を参考にしてみてください。 実際に開発のなかのひとが Twitch で配信する際に疑似人格ケルシー先生を構成するために使っている設定です。 特に custom_instructions に疑似人格形成のための設定を書くことで、さまざまなAIキャラクターを構成できます。 また、memory_capacity(応答ごとに過去何件分の記憶を擬似的に保持させるか), min_interval_in_secs(応答間隔), force_activate_regex_pattern(強制応答パターン), ignore_regex_pattern(無視パターン) などを適切に設定して AI の応答頻度を調整することも特に GPT4 を使う場合には大事です。 他にも temperature, top_p, n, presence_penalty, frequency_penalty, max_tokens, user などの OpenAI API が受け取れるパラメーターは設定可能にしてあります。
2-ch-mix など出力画面についてもっと知りたい場合は「使い方 12. 「出力画面」の作り込み」で紹介するので御覧ください。
ちなみに、2-ch-mixは基本的には同じ発言者の元の内容と翻訳の字幕を出力するように作られています。実際にAI疑似人格と配信を行う際には画面の左右でそれぞれ2-ch-mixを使ったり、上下に吹き出しを出す独自の出力画面を作ったりするとよいかもしれません。
今回は 《MODify》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。
《MODify》は音声合成エンジンの直前に入れて、音声合成エンジンが読み間違えてしまう単語を読み間違えの無いようひらがなに変換する前処理や、 《OCR》の結果から頻出する誤認識を修正したり、配信の字幕やAIの入力に使いたくない単語を伏せ字にしたり、地味に活躍するプロセッサーです。
コマンドラインでは `./virtual-avatar-connect conf.example-modify.toml` です。コマンドラインでの使い方は `--help` で確認できます。
version 0.2.0 以前のダウンロード用パッケージには "conf.example-openai-chat.toml" は同梱されていません。必要に応じて作成または、https://github.com/usagi/virtual-avatar-connect/blob/main/conf.example-modify.tomlからダウンロードしてご用意下さい。
この設定ファイル "conf.example-modify.toml" の中身はこうなっています。👀
2-ch-mix など出力画面についてもっと知りたい場合は「使い方 12. 「出力画面」の作り込み」で紹介するので御覧ください。
《MODify》の alkana はそこそこの単語をカタカナにしてくれますが、意外と未登録の単語も多いので、もっとしっかりとカタカナにしたい場合は dictionary_files に辞書ファイルを追加してみて下さい。辞書ファイルは「Google 日本語入力」の辞書をエクスポートした.txtファイルも読み込めます。 また、単純な辞書による置換では対応が難しい場合は regex_files に正規表現ファイルを追加してみて下さい。
VAC本体からのチャンネル出力情報はRESTまたはWebSocketで受信でき、両方に対応した簡単なライブラリーもサンプルに含まれています。 おわかりになる方はその辺りから作り込んで頂いても構いませんし、 Vue.js や React などのフレームワークを使っても構いません。 もちろん、素のHTMLやCSS、JS、WASMでサンプルを少しずつ改造したり、コピペしてアレンジ版を作るところから始めるのもよいと思います。
.html ソースの場所 | 動作中のURL | 概要 |
---|---|---|
output/index.html | http://127.0.0.1:57000/output |
標準の出力画面、サンプルでは16:9で画面いっぱいにオーバーレイされる想定でさしあたりタイトルと副題を VAC の title, description チャンネルを受信して更新できるようになっています。 また、出力画面単独でのシーン切り替えのサンプルも含まれていて、画面のクリックで BRB 画面へ切り替えられ、 BRB 画面でも brb チャンネルを受信して状況表示を更新できる仕組みになっています。 ほかに loading シーンの素っ気ないレンプレートも含まれているので、出力画面単独でシーン切り替えしたくなったら参考にして下さい。 |
output/2-ch-mix.html | http://127.0.0.1:57000/output/2-ch-mix |
上下に積み重なるように VAC から受信した2つのチャンネルを表示するパーツ単位の出力画面のサンプルです。 表示する際にURLフラグメントでパラメーターを指定できるように仕込んであります。 例えば /output/2-ch-mix#user;;[Dr.USAGI]`user-en;;[Dr.USAGI(transEN)] のようにURLフラグメントを付けて開くと、 user チャンネルと user-en チャンネルを [Dr.USAGI] と [Dr.USAGI(transEN)] という話者表示のプリフィックス付きで表示します。 他にも文字色の指定、C.V.表示などを行う想定のサフィックス表示にも対応しています。詳しくはソース冒頭の解説をどうぞ。 |
output/*.html | http://127.0.0.1:57000/output/* |
2-ch-mixと同様に、 output/ に .html ファイルがあれば VAC は出力画面として読み込めるように扱います。 例えば、 my-out1.html というファイルを作成して output/ へ配置すれば、 http://127.0.0.1:57000/my-out1 という出力画面として動作します。 少し下で紹介する「配布状態のVAC出力画面向けAPIの簡単な使い方」なども参考に、自分だけの出力画面を作り込んで下さい。 |
resources/**/* | http://127.0.0.1:57000/resources/**/* |
ソースのoutput/ は .html ファイルのみを扱います。他に出力画面から参照させたいファイルがある場合は resources/ へ配置します。 resource/ は出力画面、入力画面いずれからも共通でアクセスできるファイル置き場です。 主に CSS, js, wasm, 画像, 音声, 動画などのファイルを配置して使います。 |
出力画面からもっと細かく API を使いたい場合は resources/js/output.js や resources/js/api.js を参考にするとよいかもしれません。👀
WebSocket: ws://127.0.0.1:57000/ へ接続し、受信した payload を JSON デコードします。
REST: http://127.0.0.1:57000/output に POST で body に OutputRequestPayload 構造体を JSON 形式で入れて投げ、応答から JSON 化された OutputResponsePayload を受け取ります。
VAC本体へのチャンネル入力情報はRESTまたはWebSocketで送信できます。
.html ソースの場所 | 動作中のURL | 概要 |
---|---|---|
input/index.html | http://127.0.0.1:57000/input |
標準の入力画面、上部に音声認識入力、下部に簡易版の画像認識による入力インターフェースを備えています。 |
input/*.html | http://127.0.0.1:57000/input/* |
input/ に .html ファイルがあれば VAC は出力画面として読み込めるように扱います。 例えば、 my-in1.html というファイルを作成して input/ へ配置すれば、 http://127.0.0.1:57000/my-in1 という入力画面として動作します。 少し下で紹介する「配布状態のVAC入力画面向けAPIの簡単な使い方」なども参考に、自分だけの出力画面を作り込んで下さい。 |
resources/**/* | http://127.0.0.1:57000/resources/**/* |
ソースのinput/ は .html ファイルのみを扱います。他に入力画面から参照させたいファイルがある場合は resources/ へ配置します。 resource/ は出力画面、入力画面いずれからも共通でアクセスできるファイル置き場です。 主に CSS, js, wasm, 画像, 音声, 動画などのファイルを配置して使います。 |
WebSocket: ws://127.0.0.1:57000/ へ接続し、 InputPayload 構造体をJSON形式の文字列値として送信します。
REST: http://127.0.0.1:57000/input に POST で body に InputPayload 構造体を JSON 形式で入れて投げます。
すごーく大雑把に描くとだいたい下図のような具合になっています。
VACの使い方の解説ではプロセッサーを《Screenshot》のように表記します。設定ファイルで feature = "Screenshot" と書く部分はこの名前を使います。
実際に開発のなかのひとの Twitch 配信で「Dr.USAGIとケルシー先生のゲームお楽しみ配信」のような形でAI疑似人格共演者を召喚して一緒にゲームプレイ配信をしています。気が向いたらご視聴下さい。👀