Você deve ter ouvido falar do famoso Neurosama, ou Mu Jimeng da China. Você também quer ter sua própria imagem virtual de IA para acompanhá -lo para transmitir, conversar e jogar? O Open Source Zerolan Live Robot está trabalhando para realizar seus sonhos! E isso requer apenas uma placa gráfica de consumo!
O Zerolan Live Robot é um robô de transmissão ao vivo multifuncional (Ai Vtuber), que pode ler automaticamente a barragem na sala de transmissão ao vivo de Bilibili, observar as janelas designadas da tela do computador, entender o conteúdo da tela, manipular personagens de jogos no Minecraft e fazer respostas de bate-papo por voz.
Seus projetos associados Konekominecraftbot, Zerolan-Core, Zerolan-Data, Zerolan-UI.
Observação
Este projeto está sob desenvolvimento contínuo, a versão atual é 2.0 . Você pode seguir a conta Bilibili do desenvolvedor Akagawa tsurumi_channel. Está treinando a AI Cat Girl com base neste projeto e transmitirá o mais recente progresso de tempos em tempos.
A seguir, lista brevemente o que este projeto suporta:
| Itens de suporte | Conteúdo suportado |
|---|---|
| Plataforma de transmissão ao vivo | Bilibili | Contração muscular |
| Big Language Model | Thudm/Glm-4 | Thudm/chatglm3 | QWEN/QWEN-7B-CAT | 01AI/YI-6B-CHAT | Augmxnt/shisa-7b-V1 |
| Modelo de reconhecimento de fala automático | iiC/discurso_paraformer_asr |
| Modelo de síntese de fala | RVC-Boss/GPT-Sovits |
| Modelo de legenda de imagem | Salesforce/Blip-Image-Captioning-Large |
| Modelo de reconhecimento de caracteres ópticos | paddlepaddle/paddleocr |
| Modelo de legenda de vídeo | IIC/Multi-Modal_hitea_video-Captioning_base_en |
| Ferramentas chamáveis externas | Navegador Firefox, Enciclopédia Baidu, Enciclopédia Mengniang |
| Plug-in de jogo | Minecraft |
Cuidado
A versão Zerolan Live Robot 2.0 é incompatível com as versões mais antigas 1.0; portanto, pode ser necessário reconfigurar o ambiente e instalar dependências.
A estrutura Zerolan consiste em robô ao vivo de Zerolan, núcleo Zerolan, dados Zerolan e UI Zerolan. A tabela a seguir descreve brevemente os usos de cada projeto:
| Nome do projeto | usar |
|---|---|
| Zerolan Live Robot | A estrutura de controle do robô de transmissão ao vivo faz respostas de ação através da coleta de dados ambientais e análises abrangentes. |
| Zerolan Core | Os módulos principais que fornecem serviços de inferência de IA para robôs de transmissão ao vivo, como a API da Web baseada em serviço de grandes modelos de idiomas. |
| Dados zerolan | Define o formato de dados para troca entre serviços usando solicitações de rede. |
| Zerolan Ui | A interface da GUI baseada no PYQT6 inclui as principais janelas pop-up e sons rápidos, etc. |
Importante
Esta etapa é uma obrigação !
Por favor, mova -se aqui para concluir a implantação do Zerolan Core, que depende muito desse serviço principal.
Execute o comando, que cria um ambiente virtual e o ativa e instala automaticamente os pacotes de dependência exigidos por este projeto:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt Se você estiver no ramo de desenvolvimento dev , pode ser necessário instalá -lo manualmente:
pip install git+https://github.com/AkagawaTsurunaki/zerolan-ui.git@dev
pip install git+https://github.com/AkagawaTsurunaki/zerolan-data.git@dev Encontre o arquivo de configuração de resources/config.template.yaml , altere -o para config.yaml e modifique -o na configuração necessária de acordo com os comentários no arquivo de configuração.
No item de configuração pipeline , você precisa observar que server_url deve conter o número de protocolo, IP e porta, como http://127.0.0.1:11001 , https://myserver.com:11451 , etc. Este é o endereço de rede em que você implanta Zerolan Core. Cada tipo de modelo pode ter uma porta diferente.
Dica
O servidor pode ter apenas uma porta? Em seguida, tente encaminhar sua solicitação usando o nginx.
No item de configuração service , você deve observar que host deve incluir apenas o endereço IP e port deve incluir apenas o número da porta.
game.platform suporta minecraft , e o campo live_stream suporta bilibili , twitch e youtube .
Dica
Obtenha a documentação que pode ser usada pela tecla API da plataforma de transmissão ao vivo:
Bilibili: Obtenha as informações necessárias para a classe de credencial
Twitch: Twitch Developers - Autenticação
YouTube: obtendo credenciais de autorização
O valor do character.chat.filter.strategy pode ser default .
character.chat.filter.bad_words pode preencher uma série de palavras de filtro.
character.chat.injected_history A matriz deve ser de um número par, ou seja, deve ser o fim da mensagem à qual a IA responde.
character.chat.max_history Especifica quantas mensagens são retidas no máximo, ou seja, o tamanho da janela da mensagem.
character.speech.prompts_dir indica onde seus arquivos de áudio TTS são armazenados e o nome do seu arquivo deve estar no formato de [语言][情感标签]文本内容.wav . Por exemplo [zh][开心]哇!今天真是一个好天气.wav en zh ja "Tags emocionais" são arbitrárias, desde que o modelo de linguagem grande possa ser distinguido; "Conteúdo do texto" é o conteúdo de texto representado pelos vocais neste áudio.
Cuidado
Pode haver um vazamento de memória no navegador Microsoft Edge, para que este projeto não seja suportado.
O valor opcional de external_tool.browser.driver é firefox .
external_tool.browser.profile_dir deve garantir que, sob o controle do selênio, o login da sua conta e outras informações não sejam perdidas. Deixar um programa em branco detectará automaticamente o local (mas não significa que ele definitivamente será encontrado).
Dica
Recomenda -se usar ferramentas de teste de API, como o Postman, antes de começar a testar se a conexão entre o computador executando este projeto e o núcleo Zerolan é normal. O Zerolan Live Robot fornece alguns conselhos quando os erros de conexão do pipeline, que ainda exigem que você solucione problemas manualmente.
Use o comando a seguir para executar o programa principal do Zerolan Live Robot:
python main.pyObservação
Esta etapa é opcional .
Este projeto e Konekominecraftbot implementam um conjunto de interfaces que podem controlar os robôs nos jogos do Minecraft deste projeto. Se precisar, vá aqui para ver os detalhes.
A versão mais antiga do Zerolan Live Robot 1.0 usou uma pesquisa simples por segundo para ler as informações do ambiente das listas de cache em cada módulo de serviço. Na versão mais antiga do Zerolan Live Robot 2.0, foi transformada em um padrão de design orientado a eventos .
Neste projeto, o robô é executado durante o envio e processamento de uma série de eventos. Em outras palavras, sem um evento, o robô não responderá.
Cada Event de evento contém um nome de evento, que é essencialmente uma string. Todos os nomes de eventos usados neste projeto são definidos em common.enumerator.EventEnum , e você também pode expandir e adicionar seus próprios nomes de eventos. Vamos tomar o evento de processar a voz de entrada do usuário como exemplo, seu evento é chamado EventEnum.SERVICE_VAD_SPEECH_CHUNK .
emitter é um objeto global usado para lidar com o envio de eventos e a execução do ouvinte. emitter sempre tem o tópico principal. No entanto, vários threads serão executados ao mesmo tempo durante todo o sistema em execução, porque cada thread pode ter sua própria instância de EventEmitter.
Use o decorador @emitter.on(EventEnum.某个事件) para registrar rapidamente um ouvinte. O ouvinte pode ser uma função síncrona ou uma função assíncrona. Quando precisamos enviar um evento, podemos usar o método assíncrono emitter.emit(EventEnum.某个事件, *args, **kwargs) .
Por exemplo, quando o sistema detectar uma voz humana, o evento SERVICE_VAD_SPEECH_CHUNK será enviado e todos os ouvintes que registram este evento serão chamados para executar algum processamento:
@ 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 ) # 发送自动语音识别事件O ouvinte aqui é on_service_vad_speech_chunk , que é essencialmente uma função que será chamada quando SERVICE_VAD_SPEECH_CHUNK ocorre e aceita vários parâmetros. Os parâmetros aqui são completamente especificados pelo remetente do evento.
O pipeline é uma importante implementação da comunicação com o Zerolan Core. O uso de pipelines é muito simples. Você só precisa passar em um objeto de configuração para obter um objeto de tubulação disponível. Em seguida, ligue para o método predict ou stream_predict no objeto de pipeline para usar o modelo de IA no núcleo zerolan.
Tomando o modelo de idioma grande como exemplo, especifique o endereço do servidor de destino (o endereço do seu portão aberto do Zerolan Core), passe no objeto LLMPipelineConfig para LLMPipeline para estabelecer o pipeline.
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )Isso deve obter uma resposta do modelo.
Se você deseja saber mais detalhes da implementação, pode verificar a definição de dados nos dados Zerolan, que também pode precisar ser entendidos em combinação com a implementação do pipeline e o conteúdo no arquivo app.py no zerolan core. Simplificando, eles são todos baseados em HTTP.
| Módulo | efeito | Conteúdo suportado |
|---|---|---|
| navegador | Controle do navegador baseado em selênio | Navegador do Firefox aberto, pesquisar e fechar o navegador |
| dispositivo | Microfone, captura de tela, controle do alto -falante | Testado apenas no Windows |
| filtro | Bloqueador de diálogo | Filtro de correspondência simples |
| jogo | Plugin de controle de jogo | Veja Konekominecraftbot para obter detalhes |
| Live_stream | Leitura de barragem da plataforma de transmissão ao vivo | Bilibili, Twitch, YouTube |
| Vad | Detecção de áudio de voz humana | Mecanismo de detecção de áudio com base no limite de energia |
Após a startup, o log mostra "Em seu contexto, o endereço solicitado é inválido".
Solução: Verifique se a configuração do host está correta no arquivo de configuração. Se você deseja apenas acesso nativo, especifique '127.0.0.1' .
Este projeto usa licença do MIT, não use este software para fins ilegais.
Sinta-se à vontade para desfrutar da fonte aberta!
MIT Licença
Copyright (C) 2024 Akagawatsurunaki
E -mail : [email protected]
Github : Akagawatsurunaki
Bilibili : Akagawa tsurumi_channel