Vielleicht haben Sie von dem berühmten Neurosama oder Mu Jimeng aus China gehört. Möchten Sie auch Ihr eigenes KI -virtuelles Bild haben, um Sie zu Live -Sendungen zu begleiten, zu chatten und Spiele zu spielen? Der Open Source Zerolan Live Robot arbeitet daran, Ihre Träume zu verwirklichen! Und dies erfordert nur eine Verbrauchergrafikkarte!
Zerolan Live Roboter ist ein multifunktionaler Live-Rundfunkroboter (AI VTuber), der das Bilibili-Live-Broadcast-Raum automatisch Lesen lesen kann, die bestimmten Fenster des Computerbildschirms beobachten, den Bildschirminhalt verstehen, Spielfiguren in Minecraft manipulieren und emotionale Voice-Chat-Antworten machen können.
Seine assoziierten Projekte konekonbloMecraftbot, Zerolan-Core, Nullerdaten, Zerolan-UI.
Notiz
Dieses Projekt befindet sich unter kontinuierlicher Entwicklung, die aktuelle Version ist 2.0 . Sie können dem Bilibili -Konto des Entwicklers Akagawa Tsurumi_Channel folgen. Es ist ein Training von AI Cat Girl basierend auf diesem Projekt und wird von Zeit zu Zeit die neuesten Fortschritte übertragen.
Im Folgenden werden kurz aufgeführt, was dieses Projekt unterstützt:
| Support -Elemente | Unterstützte Inhalte |
|---|---|
| Live -Broadcast -Plattform | Bilibili | Zucken |
| Großes Sprachmodell | Thudm/GLM-4 | Thudm/chatglm3 | Qwen/qwen-7b-chat | 01ai/yi-6b-chat | Augmxnt/shisa-7b-v1 |
| Automatisches Spracherkennungsmodell | IIC/real_paraformer_asr |
| Sprachsynthesemodell | RVC-Boss/GPT-SoVits |
| Bilduntertitelmodell | Salesforce/Blip-Image-Captioning-Large |
| Optisches Charaktererkennungsmodell | Paddlepaddle/Paddleocr |
| Video -Untertitelmodell | IIC/multi-modal_hitea_video-captioning_base_en |
| Externe Tools für Anrufe | Firefox -Browser, Baidu Encyclopedia, Mengliang Encyclopedia |
| Game-Plug-In | Minecraft |
Vorsicht
Die Nullan Live Robot 2.0 -Version ist mit älteren Versionen 1.0 unvereinbar. Möglicherweise müssen Sie die Umgebung neu konfigurieren und Abhängigkeiten installieren.
Der Zerolan -Framework besteht aus Zerolan -Live -Roboter, Zerolankern, Zerolandaten und nulanischen UI. Die folgende Tabelle beschreibt kurz die Verwendungen jedes Projekts:
| Projektname | verwenden |
|---|---|
| Zerolan Live Roboter | Der Kontrollrahmen des Live -Rundroboters macht Aktionsreaktionen durch das Sammeln von Umgebungsdaten und eine umfassende Analyse. |
| Nullerkern | Die Kernmodule, die KI-Inferenzdienste für Live-Rundroboter anbieten, wie die servicebasierte Web-API von großsprachigen Modellen. |
| Nullendaten | Definiert das Datenformat für den Austausch zwischen Diensten mithilfe von Netzwerkanforderungen. |
| Nullan UI | Die GUI-Schnittstelle basierend auf PYQT6 enthält Top-Pop-up-Fenster und Eingabeaufforderung usw. |
Wichtig
Dieser Schritt ist ein Muss !
Bitte gehen Sie hierher, um den Einsatz von Zerolan Core zu vervollständigen, der stark auf diesen Kerndienst beruht.
Führen Sie den Befehl aus, der eine virtuelle Umgebung erstellt und aktiviert, und installiert dann automatisch die Abhängigkeitspakete, die für dieses Projekt erforderlich sind:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt Wenn Sie sich in der dev befinden, müssen Sie sie möglicherweise manuell installieren:
pip install git+https://github.com/AkagawaTsurunaki/zerolan-ui.git@dev
pip install git+https://github.com/AkagawaTsurunaki/zerolan-data.git@dev Suchen Sie die Konfigurationsdatei resources/config.template.yaml , ändern Sie sie in config.yaml und ändern Sie sie dann in die Konfiguration, die Sie gemäß den Kommentaren in der Konfigurationsdatei benötigen.
Im pipeline -Konfigurationselement müssen Sie beachten, dass server_url das Protokoll, die IP- und die Portnummer wie http://127.0.0.1:11001 , https://myserver.com:11451 usw. enthalten sollte. Dies ist die Netzwerkadresse, in der Sie Zerolan -Kern bereitstellen. Jeder Modelltyp kann einen anderen Port haben.
Tipp
Kann der Server nur einen Port haben? Versuchen Sie dann, Ihre Anfrage mit Nginx weiterzuleiten.
Im service -Konfigurationselement müssen Sie beachten, dass host nur die IP -Adresse einbeziehen sollte und port nur die Portnummer enthalten sollte.
game.platform unterstützt minecraft und das Feld live_stream unterstützt bilibili , twitch und youtube .
Tipp
Erhalten Sie die Dokumentation, die vom API -Schlüssel der Live -Broadcast -Plattform verwendet werden kann:
Bilibili: Holen Sie sich die für die Anmeldeinformationsklasse erforderlichen Informationen
Twitch: Twitch Developers - Authentifizierung
YouTube: Erhalten von Berechtigungsnachweisen
Der Wert von character.chat.filter.strategy kann default sein.
character.chat.filter.bad_words kann eine Reihe von Filterwörtern ausfüllen.
character.chat.injected_history Das Array muss eine gleichmäßige Zahl haben, dh es muss das Ende der Nachricht sein, auf die die KI reagiert.
character.chat.max_history Gibt an, wie viele Nachrichten höchstens die Größe des Nachrichtenfensters erhalten bleiben.
character.speech.prompts_dir gibt an, wo Ihre TTS -Audio -Dateien gespeichert sind und Ihr Dateiname im Format von [语言][情感标签]文本内容.wav sein sollte. Zum Beispiel [zh][开心]哇!今天真是一个好天气.wav , wo "Sprache" nur zh , en und ja unterstützt; "emotionale Tags" sind willkürlich, solange das große Sprachmodell unterschieden werden kann. "Textinhalt" ist der Textinhalt, der durch den Gesang in diesem Audio dargestellt wird.
Vorsicht
Im Microsoft Edge -Browser kann ein Speicherleck vorhanden sein, sodass dieses Projekt nicht unterstützt wird.
Der optionale Wert von external_tool.browser.driver ist firefox .
external_tool.browser.profile_dir soll sicherstellen, dass unter der Kontrolle von Selen, Ihr Konto anmeldet und andere Informationen nicht verloren gehen. Das Verlassen eines leeren Programms erkennt den Standort automatisch (aber es bedeutet nicht, dass es definitiv gefunden wird).
Tipp
Es wird empfohlen, API -Test -Tools wie Postman zu verwenden, bevor die Verbindung zwischen dem Computer dieses Projekts und nulkindem Kern normal ist. Zerolan Live Robot gibt einige Ratschläge bei Pipeline -Verbindungsfehlern, wodurch Sie immer noch manuell Fehler beheben müssen.
Verwenden Sie den folgenden Befehl, um das Hauptprogramm von Zerolan Live Roboter auszuführen:
python main.pyNotiz
Dieser Schritt ist optional .
Dieses Projekt und KonekonbloMecraftbot implementieren eine Reihe von Schnittstellen, die Roboter in Minecraft -Spielen aus diesem Projekt kontrollieren können. Wenn Sie es benötigen, gehen Sie bitte hierher, um Details anzuzeigen.
Die ältere Version von Zerolan Live Robot 1.0 verwendete eine einfache Umfrage nach Sekunde, um Umgebungsinformationen aus Cache -Listen in jedem Service -Modul zu lesen. In der älteren Version von Zerolan Live Robot 2.0 wurde es einem ereignisgesteuerten Designmuster verwandelt.
In diesem Projekt wird der Roboter während des Sendens und Verarbeitung einer Reihe von Ereignissen ausgeführt. Mit anderen Worten, ohne ein Ereignis wird der Roboter nicht antworten.
Jedes Event enthält einen Ereignisnamen, der im Wesentlichen eine Zeichenfolge ist. Alle in diesem Projekt verwendeten Ereignisnamen sind common.enumerator.EventEnum definiert. Nehmen wir als Beispiel das Ereignis der Verarbeitung von Benutzereingabestimmern. Das Ereignis heißt EventEnum.SERVICE_VAD_SPEECH_CHUNK .
emitter ist ein globales Objekt, mit dem das Senden von Ereignissen und die Ausführung von Listener verarbeitet werden. emitter hat immer den Hauptfaden. Während des gesamten ausgeführten Systems werden jedoch mehrere Threads gleichzeitig ausgeführt, da jeder Thread eine eigene Instanz von EventEmitter hat.
Verwenden Sie den Dekorateur @emitter.on(EventEnum.某个事件) um einen Hörer schnell zu registrieren. Der Hörer kann entweder eine synchrone Funktion oder eine asynchrone Funktion sein. Wenn wir ein Ereignis senden müssen, können wir die asynchrone Methode emitter.emit(EventEnum.某个事件, *args, **kwargs) verwenden.
Wenn das System beispielsweise eine menschliche Stimme erkennt, wird das Ereignis SERVICE_VAD_SPEECH_CHUNK gesendet, und alle Hörer, die dieses Ereignis registrieren, werden aufgerufen, um eine Verarbeitung durchzuführen:
@ 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 ) # 发送自动语音识别事件Der Hörer hier ist on_service_vad_speech_chunk , was im Wesentlichen eine Funktion ist, die aufgerufen wird, wenn SERVICE_VAD_SPEECH_CHUNK auftritt und mehrere Parameter akzeptiert. Die Parameter hier sind vollständig vom Ereignisabsender angegeben.
Pipeline ist eine wichtige Implementierung der Kommunikation mit Nulkern. Die Verwendung von Pipelines ist sehr einfach. Sie müssen nur ein Konfigurationsobjekt übergeben, um ein verfügbares Pipeline -Objekt zu erhalten. Rufen Sie dann die Methode predict oder stream_predict im Pipeline -Objekt auf, um das AI -Modell im Nulkern zu verwenden.
Wenn Sie das große Sprachmodell als Beispiel einnehmen, geben Sie die Adresse des Zielservers (die Adresse Ihres nulanischen Kernports) an und geben Sie LLMPipelineConfig -Objekt an LLMPipeline ein, um die Pipeline festzulegen.
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )Dies sollte eine Antwort vom Modell erhalten.
Wenn Sie weitere Implementierungsdetails wissen möchten, können Sie die Datennatendefinition in Zerolan -Daten überprüfen, die möglicherweise auch in Kombination mit der Implementierung der Pipeline und des Inhalts in der app.py -Datei im Nreian -Kern verstanden werden müssen. Einfach ausgedrückt, sie sind alle HTTP-basiert.
| Modul | Wirkung | Unterstützte Inhalte |
|---|---|---|
| Browser | Browsersteuerung auf Seleniumbasis | Firefox 'Browser öffnen, suchen und schließen Browser |
| Gerät | Mikrofon, Screenshot, Lautsprechersteuerung | Nur unter Windows getestet |
| Filter | Dialogblocker | Einfacher passender Filter |
| Spiel | Game Control Plugin | Weitere Informationen finden Sie unter konekonbloftbot |
| Live_stream | Barrage Reading der Live -Broadcast -Plattform | Bilibili, Twitch, YouTube |
| vad | Audio -Erkennung menschlicher Stimme | Audioerkennungsmechanismus basierend auf der Energieschwelle |
Nach dem Start zeigt das Protokoll: "In seinem Kontext ist die angeforderte Adresse ungültig."
Lösung: Überprüfen Sie, ob die Konfiguration des host in der Konfigurationsdatei korrekt ist. Wenn Sie nur einen nativen Zugriff wünschen, geben Sie '127.0.0.1' an.
Dieses Projekt verwendet die MIT -Lizenz. Bitte verwenden Sie diese Software nicht für illegale Zwecke.
Fühlen Sie sich frei, Open-Souce zu genießen!
MIT -Lizenz
Copyright (C) 2024 Akagawatsurunaki
E -Mail : [email protected]
Github : Akagawatsurunaki
Bilibili : Akagawa Tsurumi_Channel