Возможно, вы слышали о знаменитой Neurosama, или Mu Jimeng из Китая. Вы также хотите иметь свой собственный виртуальный изображение ИИ, чтобы сопровождать вас, чтобы жить трансляцией, общаться и играть в игры? Робот с открытым исходным кодом Zerolan Live работает, чтобы реализовать ваши мечты! И для этого требуется только потребительская видеокарта!
Zerolan Live Robot-это многофункциональный робот в прямом эфире (AI VTUBER), который может автоматически читать заграждение в живой комнате Bilibili Live, наблюдать за обозначенными окнами экрана компьютера, понимать его содержимое экрана, манипулировать персонажами игровых в 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-чат | 01ai/yi-6b-чат | AUGMXNT/SHISA-7B-V1 |
| Модель автоматического распознавания речи | IIC/SPEECT_PARAFORMER_ASR |
| Модель синтеза речи | RVC-BOSS/GPT-SOVITS |
| Модель субтитров изображения | Salesforce/Blip-Image-Captioning-Large |
| Оптическая модель распознавания персонажей | PaddlePaddle/Paddleoc |
| Видео -субтитры модель | iic/multi-modal_hitea_video-captioning_base_en |
| Внешние образные инструменты | Бруузер Firefox, энциклопедия Baidu, Энциклопедия Mengniang |
| Game Plugin | Шахтерское ремесло |
Осторожность
Версия Zerolan Live Robot 2.0 несовместима с более старыми версиями 1.0, поэтому вам может потребоваться реконфигурировать окружающую среду и установить зависимости.
Фреймворк нулевого робота состоит из живого робота нулевого, данных нулевого ядра, нулевых данных и Zerolan UI. В следующей таблице кратко описывается использование каждого проекта:
| Название проекта | использовать |
|---|---|
| Zerolan Live Robot | Структура управления роботом в прямом эфире дает ответы действий путем сбора данных о экологических данных и всестороннего анализа. |
| Zerolan Core | Основные модули, которые предоставляют услуги по выводу искусственного интеллекта для роботов в прямом эфире, такие как веб-API на основе услуг крупных языковых моделей. |
| Данные нули | Определяет формат данных для обмена между службами, используя сетевые запросы. |
| Zerolan UI | Интерфейс GUI на основе PYQT6 включает в себя верхние всплывающие окна и звуки приглашения и т. Д. |
Важный
Этот шаг необходим !
Пожалуйста, перейдите сюда, чтобы завершить развертывание Zerolan Core, которое в значительной степени зависит от этой основной услуги.
Запустите команду, которая создает виртуальную среду и активирует ее, а затем автоматически устанавливает пакеты зависимостей, необходимые для этого проекта:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt Если вы находитесь в филиале dev Development, вам может потребоваться установить его вручную:
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 , измените его на config.yaml , а затем измените его на конфигурацию, которая вам нужна в соответствии с комментариями в файле конфигурации.
В элементе конфигурации pipeline необходимо отметить, что server_url должен содержать протокол, IP и номер порта, такие как http://127.0.0.1:11001 , https://myserver.com:11451 и т. Д. Это сетевой адрес, где вы развертываете ядро Zerolan. Каждый тип модели может иметь другой порт.
Кончик
Может ли на сервере есть только один порт? Затем попробуйте переслать ваш запрос, используя Nginx.
В элементе конфигурации service необходимо отметить, что host должен включать только IP -адрес, а port должен включать только номер порта.
Поле game.platform поддерживает minecraft , а поле live_stream поддерживает bilibili , twitch и youtube .
Кончик
Получите документацию, которая может использоваться с помощью ключа API платформы в прямом эфире:
Bilibili: Получите информацию, необходимую для класса учетных данных
Twitch: Twitch Developers - Аутентификация
YouTube: получение учетных данных авторизации
Значение character.chat.filter.strategy может быть default .
character.chat.filter.bad_words может заполнить серию фильтров.
character.chat.injected_history Массив должен быть равномерное число, то есть это должен быть конец сообщения, на который реагирует ИИ.
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 предназначен для того, чтобы под контролем селена ваша учетная запись и другая информация не будут потеряны. Оставить пустую программу автоматически обнаружит местоположение (но это не означает, что она определенно будет найдена).
Кончик
Рекомендуется использовать инструменты тестирования API, такие как почтальон, прежде чем начать проверять, является ли соединение между компьютером, управляющим этим проектом и ядром Zerolan нормальным. Robot Zerolan Live дает некоторые советы при ошибках подключения трубопровода, которые все еще требуют от вас устранить устранение неполадок вручную.
Используйте следующую команду, чтобы запустить основную программу Zerolan Live Robot:
python main.pyПримечание
Этот шаг необязательно .
Этот проект и Konekominecraftbot внедряют набор интерфейсов, которые могут контролировать роботов в играх Minecraft из этого проекта. Если вам это нужно, пожалуйста, перейдите сюда, чтобы просмотреть детали.
Старая версия Zerolan Live Robot 1.0 использовала простой опрос на второй для чтения информации об окружающей среде из списков кэша в каждом сервисном модуле. В более старой версии Zerolan Live Robot 2.0 он был превращен в модель дизайна , управляемый событиями .
В этом проекте робот работает во время отправки и обработки серии событий. Другими словами, без события робот не будет отвечать.
Каждое Event содержит имя события, которое по сути является строкой. Все названия событий, используемые в этом проекте, определены в common.enumerator.EventEnum , и вы также можете расширить и добавить свои собственные имена событий. Давайте возьмем событие обработки ввода пользователя в качестве примера, его событие называется EventEnum.SERVICE_VAD_SPEECH_CHUNK .
emitter - это глобальный объект, используемый для обработки отправки событий и выполнения прослушивателя. emitter всегда имеет главную нить. Тем не менее, несколько потоков будут работать одновременно в течение всей работы системы, потому что каждый поток может иметь свой собственный экземпляр EventEmitter.
Используйте Decerator @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. Использование трубопроводов очень просто. Вам нужно только передать объект конфигурации, чтобы получить доступный объект трубопровода. Затем вызовите метод predict или stream_predict в объекте Pipeline, чтобы использовать модель AI в нулевом ядре.
Принимая большую языковую модель в качестве примера, укажите адрес целевого сервера (адрес вашего открытого порта нулевого ядра), передайте объект LLMPipelineConfig в LLMPipeline для установления трубопровода.
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )Это должно получить ответ от модели.
Если вы хотите узнать больше деталей реализации, вы можете проверить определение данных в данных Zerolan, что также может быть понято в сочетании с реализацией конвейера и содержимым в файле app.py в ядре Zerolan. Проще говоря, все они основаны на HTTP.
| Модуль | эффект | Поддерживаемый контент |
|---|---|---|
| браузер | Контроль браузера на основе селена | Браузер Firefox открыт, поиск и закрыть браузер |
| устройство | Микрофон, скриншот, управление динамиками | Протестировано только в Windows |
| фильтр | Блокатор диалога | Простой соответствующий фильтр |
| игра | Плагин управления игрой | См. Conekominecraftbot для деталей |
| live_stream | Платформа для чтения живой вещательной платформы | Билибили, Twitch, YouTube |
| вал | Обнаружение звука голоса человеческого голоса | Механизм обнаружения звука на основе порога энергии |
После запуска журнал показывает «в своем контексте, запрашиваемый адрес недействителен».
Решение: Проверьте, является ли конфигурация host правильной в файле конфигурации. Если вы хотите только натуральный доступ, укажите '127.0.0.1' .
В этом проекте используется лицензия MIT, пожалуйста, не используйте это программное обеспечение для незаконных целей.
Не стесняйтесь наслаждаться открытым судом!
MIT Лицензия
Авторские права (с) 2024 Акагавацурунаки
Электронная почта : [email protected]
GitHub : Akagawatsurunaki
Билибили : akagawa tsurumi_channel