당신은 유명한 Neurosama 또는 중국의 Mu Jimeng에 대해 들어 보았을 것입니다. 또한 라이브 방송, 채팅 및 게임을 수행하기 위해 자신만의 AI 가상 이미지를 갖고 싶습니까? 오픈 소스 Zerolan 라이브 로봇은 당신의 꿈을 실현하기 위해 노력하고 있습니다! 그리고 이것은 소비자 그래픽 카드 만 필요합니다!
Zerolan Live Robot은 다기능 라이브 브로드 캐스트 로봇 (AI VTUBER)으로 Bilibili Live Broadcast Room에서 자동으로 Barrage를 읽고 컴퓨터 화면의 지정된 창을 관찰하고 화면 내용을 이해하고 Minecraft에서 게임 캐릭터를 조작하고 감정적인 음성 채팅 응답을 할 수 있습니다.
관련 프로젝트 Konekominecraftbot, Zerolan-Core, Zerolan-Data, Zerolan-UI.
메모
이 프로젝트는 지속적인 개발 중이며 현재 버전은 2.0 입니다. 개발자의 Bilibili 계정 Akagawa Tsurumi_channel을 팔로우 할 수 있습니다. 이 프로젝트를 기반으로 AI Cat Girl을 훈련하고 있으며 때때로 최신 진전을 방송 할 것입니다.
다음은이 프로젝트가 지원하는 내용을 간략하게 나열합니다.
| 지원 항목 | 지원되는 콘텐츠 |
|---|---|
| 라이브 방송 플랫폼 | 빌리 빌리 | 경련 |
| 큰 언어 모델 | thudm/glm-4 | thudm/chatglm3 | Qwen/Qwen-7B-Chat | 01AI/YI-6B-Chat | augmxnt/shisa-7b-v1 |
| 자동 음성 인식 모델 | IIC/SPEEL_PARAFORMER_ASR |
| 음성 합성 모델 | rvc-boss/gpt-sovits |
| 이미지 자막 모델 | Salesforce/Blip-Image-Captioning-Large |
| 광학 문자 인식 모델 | 패들 라디/패들로 크 |
| 비디오 자막 모델 | iic/multi-modal_hitea_video-captioning_base_en |
| 외부 호출 도구 | Firefox Browser, Baidu 백과 사전, Mengniang Encyclopedia |
| 게임 플러그인 | 마인 크래프트 |
주의
Zerolan Live Robot 2.0 버전은 이전 버전 1.0과 호환되지 않으므로 환경을 재구성하고 종속성을 설치해야 할 수도 있습니다.
Zerolan 프레임 워크는 Zerolan Live Robot, Zerolan Core, Zerolan Data 및 Zerolan UI로 구성됩니다. 다음 표는 각 프로젝트의 사용에 대해 간략하게 설명합니다.
| 프로젝트 이름 | 사용 |
|---|---|
| Zerolan 라이브 로봇 | Live Broadcast Robot의 제어 프레임 워크는 환경 데이터 및 포괄적 인 분석을 수집함으로써 행동 대응을 만듭니다. |
| 제로 란 코어 | 대형 언어 모델의 서비스 기반 웹 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@dev resources/config.template.yaml configuration 파일을 찾아 config.yaml 로 변경 한 다음 구성 파일의 주석에 따라 필요한 구성으로 수정하십시오.
pipeline 구성 항목에서 server_url 에는 http://127.0.0.1:11001 , https://myserver.com:11451 등의 프로토콜, IP 및 포트 번호가 포함되어 있어야합니다. 이것은 제로 란 코어를 배포하는 네트워크 주소입니다. 각 유형의 모델에는 다른 포트가있을 수 있습니다.
팁
서버에 하나의 포트 만있을 수 있습니까? 그런 다음 Nginx를 사용하여 요청을 전달하십시오.
service 구성 항목에서 host 에는 IP 주소 만 포함되어야하며 port 포트 번호 만 포함해야합니다.
game.platform 필드는 minecraft 지원하며 live_stream 필드는 bilibili , twitch 및 youtube 지원합니다.
팁
라이브 브로드 캐스트 플랫폼 API 키에서 사용할 수있는 문서를 얻으십시오.
Bilibili : 자격 증명 클래스에 필요한 정보를 얻습니다
Twitch : Twitch 개발자 - 인증
YouTube : 승인 자격 증명을 얻습니다
character.chat.filter.strategy 의 값 .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의 이전 버전은 Second in Second를 사용하여 각 서비스 모듈의 캐시 목록에서 환경 정보를 읽었습니다. 구형 버전의 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와의 커뮤니케이션의 중요한 구현입니다. 파이프 라인의 사용은 매우 간단합니다. 사용 가능한 파이프 라인 객체를 얻으려면 구성 객체 만 전달하면됩니다. 그런 다음 파이프 라인 객체에서 predict 또는 stream_predict 메소드를 호출하여 Zerolan Core의 AI 모델을 사용하십시오.
대형 언어 모델을 예로 들어, 대상 서버의 주소 (Zerolan Core Open Port의 주소)를 지정하고 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 라이센스
저작권 (C) 2024 Akagawatsurunaki
이메일 : [email protected]
Github : Akagawatsurunaki
BILIBILI : Akagawa Tsurumi_channel