L2VT

 L2VTは、レジェメントが開発している自作ソフトです。自分の喋った言葉を音声認識に読み取らせ、その認識結果テキストを用いて合成音声に代わりに喋ってもらったり字幕を表示したりできます。セリフの出力タイミングが管理されており、「ゆっくり実況」や「ずんだもん解説」などに近いライブを行うことが可能です。

仕様

◆ 特徴

○ マルチプラットフォーム/クロスプラットフォーム

○ インストール不要。ポータブルでPC間移動が可能

○ 管理された出力タイミング


◆ 現在対応している機能(Ver0.1.0.0)

・音声認識(Web Speech API SpeechRecognition)

・手動セリフ入力

・OBS出力・連携(WS5・WS4両対応。字幕、口パク、一定間隔テキスト)

・VOICEVOX出力(音声合成、再生)

・棒読みちゃん出力(再生要求)

・フィルター機能

・ユーザープラグイン、ユーザーフィルター(開発言語はJavaScriptとPython)


◆ 動作環境

○ 最近のブラウザ(Chrome、Edge、Firefoxで動作確認済み)

○ WindowsのPC、またはPython3.11が使用可能なUnix系OSのPC・スマホ

新環境での初起動:インターネットが必要

音声認識(WSAPISR):ChromeまたはEdgeで、インターネットが必要

・Unix系:Python3.11.x、pip、PortAudioの事前導入が必要

 現在、Unix系ではどの音声出力デバイスでも音声を再生できない可能性が高いです。

利用規約

L2VT利用規約

・本ソフトウェアは本利用規約に同意した人のみ利用することができます。

・管理者は、本利用規約を予告なく利用者の同意なしに変更することができます。

・"管理者"とは、本ソフトウェアの作者・権利者のことであり、レジェメント(ニコニコ:https://www.nicovideo.jp/user/32513714/、YouTube:https://www.youtube.com/c/Lejemento)のことです。

◆許諾内容

・商用/非商用にかかわらず無料で利用することができます。

・本ソフトウェアと組み合わせて利用するソフトウェア、プログラム、その他を作ることができます。

◆義務内容

・クレジット表記を行うこと。インターネット上では、インターネット検索エンジンやサービス内検索に認識される場所に他文字列と区別して少なくとも「L2VT」と記載する。

◆禁止事項

・法人として利用すること(今後解除予定)。

・本ソフトウェアの全てまたは一部または改造されたものを、形態にかかわらず管理者の許可なく再配布すること。

・本ソフトウェア内の他権利者のソフトウェアについて、そのライセンスに反する行為。

・公序良俗に反する行為。

・管理者が逸脱利用と判断する、行為。

◆免責事項

・本ソフトウェアは何の保証もなく提供されます。

・本ソフトウェアによるいかなる損害・不利益について、管理者は一切の責任を負いません。利用者の自己責任です。

・本ソフトウェアには、不具合の修正、改善、要望の反映などが行われる保証はありません。

以上

○変更履歴

 まだありません。


 L2VTを使った配信や動画では、タイトルか説明文に少なくとも「L2VT」と記載するようお願いします。

利用規約に同意している方のみダウンロードできます。ダウンロードはこちら

セットアップ

 Clientが初起動できるまではインターネットが必要です。別のPCに移動してから初めて起動する時も同様です。

① 前述のOneDriveから「L2VT_x_x_x_x.zip」をダウンロードします。

② 解凍します。中の「L2VT」フォルダがこのソフトのフォルダです。移動させる時はこのフォルダごと移動してください。

③ 「L2VT」フォルダ内のランチャー、Windowsなら「launcher_win_embedded.bat」を、Unix系なら「launcher_unix_installed.sh」を起動します。するとOSのシェルでL2VTのServerが起動するはずです。

④ Serverに「server: Start the servers. ~」と表示されたら、ブラウザからURL「http://127.0.0.1:13300/client」を開きます。するとL2VTのClientが起動するはずです。初起動時は利用規約の画面が表示されます。

⑤ ブラウザのズーム機能でUIの大きさを調節してください。 


・Serverは起動できたのにURLにアクセスしてもClientが開かない

 13300番ポートが空いていない場合、他の番号でClientがホストされます。URLの"13300"を、Serverに表示されている「HTTP:xxxxx」の番号にして開いてください。

・初起動時に利用規約の画面が表示されず進めない

 ブラウザによってポップアップがブロックされている可能性が高いです。ブラウザの設定で「http://127.0.0.1:13300」または現在のポート番号のアドレスのポップアップを許可してから、再起動してみてください。

・Windowsでファイアウォールの警告が出る

 Serverはインターネット通信を行う時があるので表示されます。表示された場合、少なくとも「プライベート ネットワーク (ホーム ネットワークや社内ネットワークなど)」は許可してください。でないと正常に動作できません。

説明

 L2VTは、OSのシェルで動作しClientを使えるようにする「Server」と、ブラウザ上で動作し主な処理を行う「Client」の2つでできています。どちらか一方だけでは動作できません。ユーザーが操作するのはClientです。

 L2VTのServerは複数同時に起動する事はできません。また、1つのServerでClientを複数起動する事もできません。一対です。

◆ 起動・再起動・終了

・L2VTを起動する時は、ランチャーからServerを起動し、ブラウザで「~/client」を開いてClientを起動してください。「http://127.0.0.1:13300/client」はブックマークに登録しておくといいでしょう。

・L2VTを再起動する時は、ブラウザで開いているClientのページを更新してください。それでServerも再起動されます。

・L2VTを終了する時は、ClientのブラウザタブとServerのシェルをそれぞれ閉じてください。いちおう、Serverのシェルは「Ctrl+C」で閉じるのが正規の終了方法です。

・L2VTの起動処理中とセリフ(SAID)出力中は、PCをスリープしたり休止状態にしたりしないでください。正常な処理ができなくなる可能性があります。

◆ Clientの操作

・音声認識や手動によって入力されたセリフ(SAID)は、タスクリストに追加されて追加順で出力されていきます。

・「Set」ボタンで表示/非表示が切り替えられる設定タブ(album)で、設定を行ったり各種情報を見たりできます。

・設定タブでは、"Apply"ボタンを押すことで変更した設定が反映・保存されます。"Cancel"ボタンで現在の設定が、"Defaults"ボタンでデフォルトの設定が設定欄に入力されます(反映・保存は"Apply"ボタンを押さないと行われません)。

・設定の反映に再起動が必要な項目にはアイコンがあります。

・素のL2VTには音声認識機能しかないので、用途に合わせて内蔵プラグインを有効にし使用してください。

・「不具合報告・要望などを送る」ボタンからGoogleフォームでフィードバックを送ることができます。何かあればぜひお願いします。

・「Act」ボタンで音声認識のON/OFFができます。が、このボタンは今後削除する予定です。

・「Act」ボタンと「Set」ボタンの間の入力欄からセリフを手動入力できます。

使い方:音声認識

・「音声認識をON/OFFにする」ボタンで音声認識を開始/終了できます。

・マイクの使用許可を求めるブラウザの表示が出たら、許可してください。

・「continuous(継続的な結果を返す)を有効にする」にチェックを入れると、マイクに喋った言葉をある程度まとめて認識するようになります。レスポンスが少し遅くなりますが、発言を中途半端な所で区切られにくくなります。

・フィルターは、音声認識の認識結果テキストをSAIDに追加する前に通されます。結果が空文字列""またはnullの場合、SAIDは追加されません。

・フィルターに、Chromeなら「WSAPISR_jp_Chrome.js」を、Edgeなら「WSAPISR_jp_Edge.js」を設定してください。これは、認識結果を正規化し、一般的に伏字にすべきなのに伏字にされない単語を伏字にします。

使い方:フィルター

 フィルターは、文字列(テキスト)に対して置換や除去、正規表現などを行うための仕組みです。入力欄の右側が使用できるフィルターの一覧で、左側が利用するフィルター入力欄です。上のフィルターから順に処理を行い、最終的な結果が組み込み先機能で使用されます。

・「試」ボタンを押すと、現在入力中のフィルター設定を手動入力欄に入力されているテキストで試します。

・「新」ボタンを押すと、フィルターファイルとフォルダを再読み込みします。全てのフィルター入力欄で共通です。

・フィルターは、内部追加フィルター、L2VTフォルダの「sys-filters」「user-filters」の中にあるファイルフィルターが使用できます。

・入力欄に書かれた有効でない名前は、入力欄からフォーカスが外れた時に太字にならず赤く表示されます。

・フィルターが組み込み先機能によって使用される時に指定されたフィルターが有効でない場合、文字列は素通りします。

・フィルターに通した結果がnullの場合、組み込み先機能によってそれ以降の処理はキャンセルされます。フィルターの途中でnullが返された場合、フィルターの処理はそこで終わり結果はnullとなります。


◆ ファイルフィルター/フィルターファイル

・ファイルフィルターにはJavaScriptファイル「~.js」とJSONファイル「~.json」の2種類が使用できます。

・JavaScriptファイルは、文字列1つを引数にし文字列またはnullを返す関数「filter」をexportしてください(「sys-filters」のフィルターを参考にしてください)。

・JSONファイルは、「"置換前":"置換後"」の集まりからなるオブジェクトを記述してください。先頭から順に置換処理が行われます。

・ファイルは「user-filters」に追加してください。L2VT起動中に追加・上書きした際は、「新」ボタンで読み込むことができます。

使い方:プラグイン選択

・プラグインはL2VTの起動・再起動時に上から順番に読み込まれます。

・一番左のボタンはそのプラグインが現在読み込まれていると点灯します。プラグインの設定項目まで飛ぶボタンです。

・チェックの有無がプラグインを読み込むか読み込まないかです。

・プルダウンメニューは、バージョン違いのどれを使用するかを選びます。

VOICEVOX出力プラグイン「_sysvoicevox」を有効にする時は、必ずServer音声再生プラグイン「_audiosyspyaud」も有効にし先に読み込まれるように(順番を上に)してください

使い方:OBSプラグイン

・OBSで字幕を表示したり、簡易的に立ち絵を口パクさせたりできます。また、録画と配信の開始・終了をL2VTのログにも表示できます。

・「OBSと接続」の接続ボタンを押すか、「Client起動時に自動で接続を試みる」を有効にした状態でL2VTを起動するとOBSと接続を試みます。

・「OBS WebSocket 5 を使用する」を有効にしているとOBS Studio v28以降に標準搭載のobs-websocket 5で、無効にしているとOBS Studio v27以前に主に使用されていたobs-websocket 4接続を行います。設定反映にはL2VTの再起動が必要です。

・各出力機能はデフォルトでOFFになっているので使用するものはONにしてください。

・対象アイテム項目の「存在確認」ボタンは、現在入力欄に入力されている名前でOBSにアイテムの存在を確認します。存在確認だけならApplyは不要です。

かんたん口パク出力は、SAID出力中に指定したアイテムの表示/非表示を切り替えます。

・かんたん口パク出力は、アイテム名に加えてそのアイテムが存在するシーンの名前も設定が必要です。

一定間隔任意テキスト更新機能は、一定間隔で任意の関数を実行してその返値をOBSのテキストに出力する機能です。

・"リセット関数"はL2VT起動時と「関数の値をリセット」のボタンを押した時に、"更新関数"は設定した更新間隔ごとに実行されます。

・それぞれの関数には実行時に、L2VTのシステムグローバル変数"g"と自由に使えるObject変数"obj"が渡されます。現在、objはリセット関数実行時に初期化されません。

既知の不具合・今後の予定

◆ 既知の不具合

・OBSプラグインで、自動再接続を有効にした状態で誤ったWSパスワードで接続しようとすると絶え間なく接続を試行してしまう

・Unix系で_audiosyspyaudで、どの音声出力デバイスでも音声を再生できず出力がフリーズしてしまう?


◆ 今後の予定

・AssistantSeika出力プラグイン

・ゆかりねっとコネクターNEO入出力プラグイン

・ブラウザ音声再生プラグイン

・UIの大きさの変更

・Actionシステムの削除

・Client画面下部の変更。手動入力欄や音声認識アイコンを独自実装でなくす

連絡先

レジェメント

X/Twitter:https://twitter.com/Lejemento

ニコニコ:https://www.nicovideo.jp/user/32513714

YouTube:https://www.youtube.com/c/Lejemento

 たまにニコニコ生放送とYouTubeでこのソフトを使った配信をしています。