あなたは有名な脳神道、または中国のムジメンについて聞いたことがあるかもしれません。また、ライブブロードキャスト、チャット、ゲームをプレイするためにあなたに同行する独自のAI仮想イメージを持ちたいですか?オープンソースのZerolan Live Robotは、あなたの夢を実現するために働いています!そして、これには消費者グラフィックカードのみが必要です!
Zerolan Live Robotは多機能ライブブロードキャストロボット(AI Vtuber)であり、Bilibili Live Broadcast Roomで自動的に弾幕を読み、コンピューター画面の指定された窓を観察し、画面の内容を理解し、Minecraftのゲームキャラクターを操作し、感情的な音声チャットの反応を行うことができます。
それに関連するプロジェクトKonekominecraftbot、Zerolan-Core、Zerolan-Data、Zerolan-UI。
注記
このプロジェクトは継続的な開発中で、現在のバージョンは2.0です。開発者のBilibiliアカウントAkagawa Tsurumi_Channelをフォローできます。このプロジェクトに基づいてAI猫の女の子のトレーニングであり、最新の進捗状況を時々放送します。
以下は、このプロジェクトがサポートしているものを簡単に示します。
| サポートアイテム | サポートされているコンテンツ |
|---|---|
| ライブブロードキャストプラットフォーム | ビリビリ|けいれん |
| 大きな言語モデル | thudm/glm-4 | thudm/chatglm3 | qwen/qwen-7b-chat | 01ai/yi-6b-chat | augmxnt/shisa-7b-v1 |
| 自動音声認識モデル | iic/speech_paraformer_asr |
| 音声合成モデル | RVC-BOSS/GPT-SOVITS |
| 画像字幕モデル | Salesforce/blip-image-captioning-large |
| 光学文字認識モデル | パドルパドル/パドドルク |
| ビデオ字幕モデル | iic/multi-modal_hitea_video-captioning_base_en |
| 外部呼び出し可能なツール | Firefox Browser、Baidu Encyclopedia、Mengniang Encyclopedia |
| ゲームプラグイン | Minecraft |
注意
Zerolan Live Robot 2.0バージョンは、古いバージョン1.0と互換性がないため、環境を再構成して依存関係をインストールする必要がある場合があります。
Zerolanフレームワークは、Zerolan Live Robot、Zerolan Core、Zerolan Data、Zerolan UIで構成されています。次の表では、各プロジェクトの使用について簡単に説明します。
| プロジェクト名 | 使用 |
|---|---|
| ゼロランライブロボット | ライブブロードキャストロボットの制御フレームワークは、環境データと包括的な分析を収集することにより、アクション応答を行います。 |
| Zerolan Core | 大規模な言語モデルのサービスベースのWeb APIなど、ライブブロードキャストロボットにAI推論サービスを提供するコアモジュール。 |
| Zerolanデータ | ネットワーク要求を使用して、サービス間の交換のデータ形式を定義します。 |
| Zerolan UI | PYQT6に基づくGUIインターフェイスには、トップポップアップウィンドウとプロンプトサウンドなどが含まれています。 |
重要
このステップは必須です!
ここに移動して、このコアサービスに大きく依存しているZerolan Coreの展開を完了してください。
仮想環境を作成してアクティブにするコマンドを実行し、このプロジェクトで必要な依存関係パッケージを自動的にインストールします。
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt dev部門にいる場合は、手動でインストールする必要がある場合があります。
pip install git+https://github.com/AkagawaTsurunaki/zerolan-ui.git@dev
pip install git+https://github.com/AkagawaTsurunaki/zerolan-data.git@devresources/config.template.yaml configurationファイルを見つけ、 config.yamlに変更し、構成ファイルのコメントに従って必要な構成に変更します。
pipeline構成アイテムでは、 http://127.0.0.1:11001 11001、 https://myserver.com:11451 11451などのserver_url 、IP、およびポート番号が含まれている必要があることに注意する必要があります。これは、ゼロランコアを展開するネットワークアドレスです。各タイプのモデルには異なるポートがある場合があります。
ヒント
サーバーには1つのポートしかありませんか?次に、nginxを使用してリクエストを転送してみてください。
service構成項目では、 host IPアドレスのみを含める必要があり、 portポート番号のみを含める必要があることに注意する必要があります。
game.platformフィールドはminecraftをサポートし、 live_streamフィールドはbilibili 、 twitch 、 youtubeをサポートします。
ヒント
ライブブロードキャストプラットフォームAPIキーで使用できるドキュメントを取得します。
Bilibili:資格情報クラスに必要な情報を取得します
Twitch:Twitch開発者 - 認証
YouTube:認証資格情報の取得
character.chat.filter.strategyの値をdefaultすることができます。
character.chat.filter.bad_words 、一連のフィルターワードを入力できます。
character.chat.injected_history配列は偶数でなければなりません。つまり、AIが応答するメッセージの終わりでなければなりません。
character.chat.max_history 、せいぜい数のメッセージ、つまりメッセージウィンドウのサイズを指定します。
character.speech.prompts_dir TTSオーディオファイルが保存されている場所を示し、ファイル名は[语言][情感标签]文本内容.wavの形式である必要があります。たとえば、 [zh][开心]哇!今天真是一个好天气.wavでは、「言語」はzh 、 en 、およびjaのみをサポートしています。 「感情的なタグ」は、大きな言語モデルを区別できる限り、任意です。 「テキストコンテンツ」とは、このオーディオのボーカルで表されるテキストコンテンツです。
注意
Microsoft Edgeブラウザにはメモリリークがある可能性があるため、このプロジェクトはサポートされていません。
external_tool.browser.driverのオプションの値はfirefoxです。
external_tool.browser.profile_dir 、Seleniumの制御下で、アカウントのログインやその他の情報が失われないようにすることです。空白のプログラムを離れると、場所が自動的に検出されます(ただし、間違いなく見つかるという意味ではありません)。
ヒント
このプロジェクトを実行しているコンピューターとZerolan Coreの接続が正常かどうかをテストし始める前に、PostmanなどのAPIテストツールを使用することをお勧めします。 Zerolan Live Robotは、パイプライン接続エラーの場合にアドバイスを提供します。これには、手動でトラブルシューティングが必要です。
次のコマンドを使用して、Zerolan Live Robotのメインプログラムを実行します。
python main.py注記
このステップはオプションです。
このプロジェクトとKonekomineCraftBotは、このプロジェクトのMinecraftゲームでロボットを制御できる一連のインターフェイスを実装しています。必要な場合は、詳細を表示するにはここに移動してください。
Zerolan Live Robot 1.0の古いバージョンでは、各サービスモジュールのキャッシュリストから環境情報を読み取るために、2番目に簡単なポーリングを使用しました。 Zerolan Live Robot 2.0の古いバージョンでは、イベント駆動型のデザインパターンに変わりました。
このプロジェクトでは、ロボットは一連のイベントの送信と処理中に実行されます。言い換えれば、イベントがなければ、ロボットは応答しません。
各イベントEventには、本質的に文字列であるイベント名が含まれています。このプロジェクトで使用されるすべてのイベント名は、 common.enumerator.EventEnumで定義されており、独自のイベント名を拡張して追加することもできます。ユーザー入力音声を処理するイベントを例にとってみましょう。そのイベントはEventEnum.SERVICE_VAD_SPEECH_CHUNKと呼ばれます。
emitter 、イベントの送信とリスナーの実行を処理するために使用されるグローバルオブジェクトです。 emitterは常にメインスレッドがあります。ただし、各スレッドには独自のインスタンスがeventemitterを持つ場合があるため、システム全体の実行中に複数のスレッドが同時に実行されます。
Decorator @emitter.on(EventEnum.某个事件)を使用して、リスナーをすばやく登録します。リスナーは、同期関数または非同期関数のいずれかにすることができます。イベントを送信する必要がある場合は、非同期メソッドemitter.emit(EventEnum.某个事件, *args, **kwargs)を使用できます。
たとえば、システムが人間の音声を検出すると、 SERVICE_VAD_SPEECH_CHUNKイベントが送信され、このイベントを登録するすべてのリスナーが処理を実行するために呼び出されます。
@ emitter . on ( EventEnum . SERVICE_VAD_SPEECH_CHUNK )
async def on_service_vad_speech_chunk ( speech : bytes , channels : int , sample_rate : int ):
response = ... # 假设这里获得了语音识别的结果
await emitter . emit ( EventEnum . PIPELINE_ASR , response ) # 发送自动语音识别事件ここのリスナーはon_service_vad_speech_chunkです。これは、 SERVICE_VAD_SPEECH_CHUNKが発生し、いくつかのパラメーターを受け入れるときに呼び出される関数です。ここのパラメーターは、イベント送信者によって完全に指定されています。
パイプラインは、Zerolan Coreとのコミュニケーションの重要な実装です。パイプラインの使用は非常に簡単です。利用可能なパイプラインオブジェクトを取得するには、構成オブジェクトを渡すだけです。次にstream_predictパイプラインオブジェクトのpredictメソッドを呼び出して、Zerolan CoreのAIモデルを使用します。
大規模な言語モデルを例として使用して、ターゲットサーバーのアドレス(Zerolan Core Openポートのアドレス)を指定し、 LLMPipelineConfigオブジェクトをLLMPipelineに渡してパイプラインを確立します。
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )これにより、モデルから返信が表示されます。
より多くの実装の詳細を知りたい場合は、Zerolanデータのデータ定義を確認できます。これは、パイプラインの実装とZerolan Coreのapp.pyファイルのコンテンツの実装と組み合わせて理解する必要があります。簡単に言えば、それらはすべてHTTPベースです。
| モジュール | 効果 | サポートされているコンテンツ |
|---|---|---|
| ブラウザ | セレンベースのブラウザコントロール | Firefoxのブラウザが開いている、検索、ブラウザを閉じます |
| デバイス | マイク、スクリーンショット、スピーカーコントロール | Windowsのみでテストされています |
| フィルター | ダイアログブロッカー | 単純なマッチングフィルター |
| ゲーム | ゲーム制御プラグイン | 詳細については、konekominecraftbotを参照してください |
| live_stream | ライブブロードキャストプラットフォームの弾幕読み取り | Bilibili、Twitch、YouTube |
| Vad | 人間の音声オーディオ検出 | エネルギーしきい値に基づくオーディオ検出メカニズム |
起動後、ログは「その文脈では、要求されたアドレスが無効です」を示します。
解決策:構成ファイルでhostの構成が正しいかどうかを確認します。ネイティブアクセスのみが必要な場合は、 '127.0.0.1'を指定します。
このプロジェクトはMITライセンスを使用しています。違法な目的でこのソフトウェアを使用しないでください。
オープンソースをお気軽にお楽しみください!
MITライセンス
Copyright(c)2024 Akagawatsurunaki
Github :Akagawatsurunaki
Bilibili :Akagawa tsurumi_channel