Virtual Avatar Connect 公式サイト

配信支援アプリ、AI疑似人格共演者、音声認識、画像認識、字幕、翻訳、読み上げなどなど

いましばらく、公式ウェブサイトの見栄えが塩辛めの状態となりますが、近日中に映えデザインにアップデートいたします。なかのひとのリソース(&なかのひともゲーム遊びたい都合🤣)ご理解頂ければ幸いです。

「VRM制御」にも対応予定ですが現在は未実装で、 Issue-#5 が関連タスクとなっています。こちらの機能にご期待頂いている皆様&わたし自身はもう少々お待ち頂ければ幸いです。🙇🏼‍♀️

🤔このアプリは何?

📅今後の機能追加の予定

📂ダウンロード

📖使い方

とりあえず簡易版の使い方ガイドを掲載します。きれいでかっこいいやつは数日…お待ち下さい。🙏

🎨スクショ

ただいま撮影準備中です🙇🏼‍♀️(雰囲気は開発のなかのひとの Twitch 配信で見られるかもしれません👀)

🚧開発プロジェクト

VACはMITライセンスのオープンソースソフトウェアです。開発にご協力頂ける方は GitHub ( https://github.com/usagi/virtual-avatar-connect ) へどうぞ!

※不具合報告やご要望は GitHub の Issues へ頂ければ幸いです。🙇🏼‍♀️


🔼 🔽 使い方 1. ダウンロードとインストール

手順

†1: 例えばこういうファイルです:

†2: お使いのブラウザによっては「ブロック・一般的ではないファイル」または他の警告が表示され、ファイルのダウンロードに追加の操作が必要な場合があります。右上の方にある小さな▶をクリックすると「ダウンロードを続行」できます。

†3: デスクトップやマイドキュメントでも構いませんし、"C:\Virtual-Avatar-Connect"や"D:\ProgramData\Virtual-Avatar-Connect"でも構いません。よくわからない場合はとりあえずデスクトップにでも展開して使ってみて下さい。展開されたファイル中の "virtual-avatar-connect.exe" が VAC の実行ファイルです。お好みでショートカットも作成してお使いになると便利かもしれません。

お使いの環境によっては .exe の部分が表示されていないかもしれません。ファイルの拡張子を表示する方法などで検索してお使いの環境でのファイル操作についてお調べ下さい。🙏)

🔼 🔽 使い方 2. お試し起動と動作確認

手順

参考:

設定ファイルや必須フォルダーの構成に問題がなく無事に起動に成功すると、②のような "クロイガメン" が表示されます。

環境によってはウィンドウの枠などの様子が異なるかもしれません。

初期配布に付属の設定では前回までの動作状態の一部が保存される設定になっていますが、初回起動時はまだファイルが存在しないため "WARN" (警告)が表示されますが、問題ありません。

🔼 🔽 使い方 3. 「音声認識」→(テキスト)→「テキスト表示」

手順

†1: 「音声認識(1回)」は ON にすると1回(1文)だけ音声認識が動作します。音声から認識されたテキストは横長の部分に表示されます。

†2: 初めて音声入力へアクセスする際にブラウザーがマイクの使用許可を表示する場合があります。許可すると音声入力が可能になります。

音声入力を行う言語を変更したい場合は「認識言語」の入力欄を "ja-JP" から "en-US" や "fr-FR" に変更します。(言語と地域のコードはISO396ISO3166の組み合わせです。)

†3 手順では紹介していませんが「音声認識(常時)」を ON にした場合は OFF にするまでずっと音声を認識し続けます。 動作試験や、特定のタイミングでのみ音声入力したい場合は「音声認識(1回)」を使い、配信中に全自動で入力し続けたい場合などは「音声認識(常時)」を使うと便利です。

†4 また、「認識結果を自動入力」を ON にすると、認識されたテキストが自動的に VAC チャンネルへ送信されるようになります。手動で送信したい場合は POST ボタンを使用します。 初期状態では送信先のチャンネルは user が設定されています。入力画面からの送信先は POST ボタンの左側の入力欄から任意に送信先のチャンネルを変更できます。

VAC は入力画面などから入力された《コンテント》を《チャンネル》へ流し、《プロセッサー》で処理し、出力画面や音声合成エンジンへ送出します。 出力画面では特定の《チャンネル》の《コンテント》を表示できます。手順にはありませんが、ここで試したくなった場合は出力画面を表示した状態で、 入力画面の POST ボタンの左側の送信先チャンネル設定を title あるいは description に変更した状態でテキストを送信してみましょう。👀

🔼 🔽 使い方 4. 「画像認識」→(テキスト)→「テキスト表示」 // 入力画面でお手軽編

手順

†1:「画像認識(1回)」のチェックを ON にした状態の入力画面の画面下部の画像認識機能の様子。

†2: 画像認識でテキストが認識完了した状態の様子。(この例で使ったのは Arknights というゲームのとあるイベントの会話の一節です。)

VACの標準の入力画面でのお手軽ばーじょんの画像認識機能では、画像の「クリップボードからの貼り付け」と「ファイルのドラッグ・アンド・ドロップによる貼り付け」に対応しています。

プレイ中のゲーム画面からスクショをさっとクリップボードへ撮影し、クリップボードからそのまま VAC へ貼り付けられるようになっています。 読み方のわからない漢字やことばをテキスト化して検索しやすくしたり、VAC へ入力して AI 疑似人格に調べて貰ったり、音声合成で読み上げて貰ったり、とっさに使えて便利かもしれません。

あらかじめ認識させたい「ウィンドウのタイトル」や「会話などで繰り返し表示される文字がでてくる領域」がある場合は、 次の【使い方 5. 「画像認識」→(テキスト)→「テキスト表示」 // プロセッサー編】で紹介する「プロセッサー版」の画像認識機能を使うと便利な場合もあります。

もし、画像認識の結果が悪い場合は、認識させたい文字の言語が「認識言語」の入力欄に設定されているか確認して見て下さい。 日本語なら "jpn" 英語なら "eng" フランス語なら "fra" のように設定します。この機能の言語コードの一覧は「lang code」と書かれたリンクをクリックすると表示できます。

🔼 🔽 使い方 5. 「画像認識」→(テキスト)→「テキスト表示」 // プロセッサー編

今回は 《Screenshot》 Processor と 《OCR》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

手順

†1: テキストエディターを使います。特に普段使っているテキストエディターが無い場合は、Windows の「メモ帳」でファイルを編集できれば十分です。

†2: 成功するとウィンドウから撮影されたスクショが "ss.png" として保存され、この画像から認識されたテキストが標準の出力画面のサブタイトル的な部分に表示されます。

少し惜しい感じになる場合もありますが、画像からの文字列認識は必ず人間が読めるように読み取れるとは限りません。いまのところ「だいたいうまくが」くらいには成功しますので、便利な使い所を見つけてみて下さい。

《Screenshot》 Processor にはウィンドウ内の特定の領域だけをスクショする設定、1度の実行で複数の領域のスクショを撮影する設定などがあります。 詳しくは「使い方 X. ふろく: VAC の仕組みと用語」の Processor の 《Screenshot》 の項目をご覧下さい。

《OCR》 Processor にはウィンドウ内の特定の領域だけをスクショする設定、1度の実行で複数の領域のスクショを撮影する設定などがあります。 詳しくは「使い方 X. ふろく: VAC の仕組みと用語」の Processor の 《OCR》 の項目をご覧下さい。

🔼 🔽 使い方 6. (テキスト)→「音声合成」 // OS-TTS編

今回は 《OS-TTS》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《OS-TTS》は Windows 11 などの OS に標準で付属している音声合成エンジンを使用してテキストを音声に変換します。

手順

お使いの環境で《OS-TTS》から使用できる音声合成の一覧を確認したい場合は、コマンドラインで `./virtual-avatar-connect --test-os-tts` を実行すると表示とサンプル音声の再生が行われます。また version 0.2.0 からは http://127.0.0.1:57000/status へアクセスすることでも《OS-TTS》の音声合成の一覧を確認できます。

Windows 11の場合は設定 時刻と言語 > 音声認識から音声合成エンジンの管理を行えます。使いたい言語の音声パッケージを導入しましょう。

🔼 🔽 使い方 7. (テキスト)→「音声合成」 // CoeiroInk編

今回は 《CoeiroInk》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《CoeiroInk》は https://coeiroink.com/ で公開されている「無料で使えるAIトークソフト」です。

手順

お使いの環境で《CoeiroInk》で使用できる音声合成の話者やスタイルの一覧を確認したい場合は、コマンドラインで `./virtual-avatar-connect --coeiroink-speakers` を実行すると確認できます。また version 0.2.0 からは http://127.0.0.1:57000/status へアクセスすることでも《CoeiroInk》の音声合成の一覧を確認できます。

🔼 🔽 使い方 8. (テキスト)→「音声合成」 // 棒読みちゃん編

今回は 《Bouyomichan》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《Bouyomichan》は https://chi.usamimi.info/Program/Application/BouyomiChan/ で公開されている「漢字を含む日本語の文章を音声合成で読み上げるツール」です。

手順

《Bouyomichan》で設定できる主なパラメーターは次の通りです。

🔼 🔽 使い方 9. (テキスト)→「言語翻訳」→「テキスト表示」 // GAS編

今回は 《GAS-Translation》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《GAS-Translation》は Google Apps Script で翻訳 のように個人で使う程度なら誰でもおおむね実質無料枠だけで十分に使えるGoogle Apps Scriptを使用した翻訳サービスをVAC連携で使用可能にするプロセッサーです。

手順

成功すると 2-ch-mix 出力画面は以下のような字幕が出力されます。

🔼 🔽 使い方 10. (テキスト)→「AI疑似人格」→「テキスト表示」 // OpenAI編

今回は 《OpenAI-Chat》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《OpenAI-Chat》は ChatGPT や DALL-E でお馴染みの OpenAI が提供する AI サービスをVAC連携で使用可能にするプロセッサーです。

手順

成功すると 2-ch-mix 出力画面は以下のような字幕が出力されます。

ちなみに、2-ch-mixは基本的には同じ発言者の元の内容と翻訳の字幕を出力するように作られています。実際にAI疑似人格と配信を行う際には画面の左右でそれぞれ2-ch-mixを使ったり、上下に吹き出しを出す独自の出力画面を作ったりするとよいかもしれません。

🔼 🔽 使い方 11. (テキスト)→「MODify」→(テキスト) // 内容の加工や変換を行います

今回は 《MODify》 Processor を使用します。Processor は VAC に内蔵された入力と出力の間で流れる内容を変換したり、調整したりする主要な仕組みです。 Processor を自由に組み合わせることでお好みのカスタム設定でVACを楽しめます。

《MODify》は音声合成エンジンの直前に入れて、音声合成エンジンが読み間違えてしまう単語を読み間違えの無いようひらがなに変換する前処理や、 《OCR》の結果から頻出する誤認識を修正したり、配信の字幕やAIの入力に使いたくない単語を伏せ字にしたり、地味に活躍するプロセッサーです。

手順

成功すると 2-ch-mix 出力画面は以下のような字幕が出力されます。

《MODify》の alkana はそこそこの単語をカタカナにしてくれますが、意外と未登録の単語も多いので、もっとしっかりとカタカナにしたい場合は dictionary_files に辞書ファイルを追加してみて下さい。辞書ファイルは「Google 日本語入力」の辞書をエクスポートした.txtファイルも読み込めます。 また、単純な辞書による置換では対応が難しい場合は regex_files に正規表現ファイルを追加してみて下さい。

🔼 🔽 使い方 12. 「出力画面」の作り込み // 複数の出力画面をお好みでカスタムできます

VACの「出力画面」"群"は OBS STUDIO などの配信アプリで表示することを想定した画面です。

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, 画像, 音声, 動画などのファイルを配置して使います。

配布状態のVAC出力画面向けAPIの簡単な使い方(一般的におすすめ)

出力画面からもっと細かく API を使いたい場合は resources/js/output.js や resources/js/api.js を参考にするとよいかもしれません。👀

VAC本体から直接チャンネル出力情報を取得する使い方(⚠️高度な応用をしたい方向け)

WebSocket: ws://127.0.0.1:57000/ へ接続し、受信した payload を JSON デコードします。

REST: http://127.0.0.1:57000/output に POST で body に OutputRequestPayload 構造体を JSON 形式で入れて投げ、応答から JSON 化された OutputResponsePayload を受け取ります。

🔼 🔽 使い方 13. 「入力画面」をお好みに // 複数の入力画面をお好みでカスタムできます

VACの「入力画面」"群"は音声認識や簡易版の画像認識、あるいはキーボードによるチャンネルへの入力を行うユーザーインターフェースとなる画面です。

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, 画像, 音声, 動画などのファイルを配置して使います。

VAC本体へチャンネル入力情報を送信する方法

WebSocket: ws://127.0.0.1:57000/ へ接続し、 InputPayload 構造体をJSON形式の文字列値として送信します。

REST: http://127.0.0.1:57000/input に POST で body に InputPayload 構造体を JSON 形式で入れて投げます。

🔼 使い方 X. ふろく: VAC の仕組みと用語

VACの仕組み

すごーく大雑把に描くとだいたい下図のような具合になっています。

VACの用語

Processor

  • Processor (プロセッサー)は VAC のチャンネルに流れる内容を受け取り、連携アプリと情報をやり取りしたり、内容を加工したり、別のチャンネルへ出力したりする仕組みです。
  • Processor はチャンネルごとにお好みの順序で、お好みの設定で繋げて使用できます。
  • 同じ種類の Processor を1度だけ使うことも、繰り返し繋いで使うことももできます。

VACの使い方の解説ではプロセッサーを《Screenshot》のように表記します。設定ファイルで feature = "Screenshot" と書く部分はこの名前を使います。

AI疑似人格共演者

  • 《OpenAI-Chat》を使い、channel_from にユーザーの音声入力を割り当てるなどして、AIを擬似的な人格を持った共演者として配信などに出演して貰うことを表現しています。
  • 特に、GPT4モデルやCoeiroInkを併用することで、わりと楽しくリアリティーもそこそこな共演者さんに登場して貰えます。但しGPT4はAPI使用料金が高めなのでそこは本当に気をつけて下さい。

実際に開発のなかのひとの Twitch 配信で「Dr.USAGIとケルシー先生のゲームお楽しみ配信」のような形でAI疑似人格共演者を召喚して一緒にゲームプレイ配信をしています。気が向いたらご視聴下さい。👀

⏫トップ
📖使い方