Introdução geral
O xiaozhi-esp32-server é um novo servidor para o Xiaozhi AI Chatbot (xiaozhi-esp32)Fornece ferramentas para serviços de back-end. Ele é escrito em Python e baseado no protocolo WebSocket para ajudar os usuários a criar rapidamente um servidor para controlar os dispositivos ESP32. Esse projeto é adequado para pessoas que já compraram o hardware do ESP32 e desejam criar o backend por conta própria. Seus recursos são muito práticos, como suporte para diálogo por voz, reconhecimento de vários idiomas e controle de casa inteligente. O projeto é de código aberto no GitHub, atualizado pela última vez em março de 2025, com documentação oficial detalhada e uma comunidade ativa. Observe que ele ainda está em desenvolvimento e não é recomendado para ser usado diretamente em um ambiente de produção.
Lista de funções
- Comunicação WebSocketXiaozhi-esp32: troca dados com o hardware em tempo real usando o protocolo xiaozhi-esp32.
- diálogo de vozO diálogo de despertar, o diálogo manual e as interrupções em tempo real são suportados, e ele hibernará automaticamente se não for usado por um longo período.
- Reconhecimento de intençõesReconhece a intenção do usuário com um modelo grande e também pode chamar funções para executar instruções.
- Suporte a vários idiomasCompreensão de chinês, cantonês, inglês, japonês e coreano com o FunASR por padrão.
- Troca de modelo de idiomaChatGLM: o ChatGLM é usado por padrão, mas também suporta Alibaba Refinement, DeepSeek e assim por diante.
- síntese de falaSuporte a EdgeTTS e Volcano Engine TTS para gerar fala natural.
- modo de memóriaMemória extra-longa: Há três opções: memória extra-longa, resumo local e sem memória.
- Controle de casa inteligentePode se conectar ao HomeAssistant para controlar os aparelhos ligados e desligados.
Usando a Ajuda
Processo de instalação
Para usar o xiaozhi-esp32-server, é necessário preparar o hardware e o ambiente. Aqui estão as etapas:
1. trabalho preparatório
- softwareUm dispositivo ESP32 compatível com o firmware xiaozhi-esp32, consulteLista oficial.
- laptopsCPU de 4 núcleos e 8 GB de RAM são recomendados. Se você usar a API para executar o reconhecimento de fala, 2 núcleos e 2 GB também funcionarão.
- hardwareInstalação do Python 3.10 e do Conda.
2. fazer o download do projeto
- Abra o site https://github.com/xinnan-tech/xiaozhi-esp32-server.
- Clique em "Code" (Código) e selecione "Download ZIP" (Baixar ZIP) para fazer o download.
- Descompacte-o e renomeie a pasta para "xiaozhi-esp32-server".
3. configurando o ambiente do Conda
- Abra a linha de comando e execute:
conda create -n xiaozhi-esp32-server python=3.10 -y
conda activate xiaozhi-esp32-server
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda install libopus -y
conda install ffmpeg -y
- Verifique a saída de cada etapa para garantir que nenhum erro seja relatado.
4. instalação de dependências
- Vá para a pasta do projeto:
cd xiaozhi-esp32-server/main/xiaozhi-server
- Configure uma fonte doméstica e instale-a:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt
5. download do modelo
- Por padrão, o reconhecimento de fala FunASR é usado. Acesse as diretrizes oficiais (consulte o LEIAME) e faça o download dos modelos na pasta "models".
- Procure o arquivo "model.pt" na pasta "SenseVoiceSmall" e faça o download se ele não estiver lá.
6) Modificação da configuração
- Abra o arquivo "config.yaml" e ajuste as configurações:
- modelo de linguagemChatGLM: padrão ChatGLM, pode ser alterado para DeepSeek ou HomeAssistant.
- síntese de falaEdgeTTS padrão, Volcano Engine TTS substituível.
- tempo de silêncio: put
min_silence_duration_ms
Sintonize em 1000 (para conversação lenta). - Salve o arquivo.
7. iniciar o servidor
- Execute na pasta "xiaozhi-server":
python main.py
- Se você vir a mensagem "Server running on port 8000" (Servidor em execução na porta 8000), você foi bem-sucedido.
8. atualização do firmware
- Coloque o endereço do servidor (por exemplo
http://你的IP:8000
) é gravado no firmware xiaozhi-esp32. - manter a mão sobreDiretrizes de compilação de firmwareRecompilar e gravar.
Outras modalidades de implantação
- Implantação rápida do DockerAdequado para iniciantes. Corrida
docker pull xinnan-tech/xiaozhi-esp32-server
Siga as diretrizes para a inicialização. - Execução de código-fonte do DockerDocker: Bom para pessoas que alteram o código. Instale o Docker primeiro e, em seguida, execute o projeto com a documentação oficial.
- Para obter mais detalhes, consulteDocumentação de implantação.
Operação da função
diálogo de voz
- despertaSe o servidor não estiver funcionando, o servidor será ativado: Diga a palavra de ativação (definida no firmware) e o servidor responderá.
- gatilho manualPressione o botão do dispositivo para iniciar um diálogo.
- romperInterrupção durante a conversa: A interrupção durante a conversa é tratada imediatamente pelo dispositivo.
- Para operar: diga "hello" para o dispositivo e ouça a resposta.
reconhecimento multilíngue
- Há suporte para cinco idiomas. A prioridade pode ser ajustada no arquivo de configuração.
- Operação: Diga "Hello" ou "Konichiwa" e o dispositivo entenderá.
síntese de fala
- Quando o TTS está configurado, o texto se transforma em fala.
- Ação: Digite "today's weather" (clima de hoje) com um script de teste e o dispositivo o lerá.
- Toggle: altera a interface TTS no arquivo de configuração.
casa inteligente
- Conecte o HomeAssistantPreencha o token.
- Operação: Diga "turn on the light" e a luz se acenderá.
- Teste: Executar
python performance_tester.py
Verifique a velocidade.
advertência
- reticulação: Para manter a estabilidade, o WebSocket depende de conexões em tempo real.
- garantiaImplementações de redes públicas para abrir a proteção (
auth: enabled: true
). - ajustar os componentes durante o testeAnálise dos registros da linha de comando e correção do problema.
cenário do aplicativo
- casa inteligente
- Conecte-se ao HomeAssistant, diga "turn off air conditioning" (desligue o ar-condicionado) e o ar-condicionado parará.
- assistente de voz
- Coloque-o sobre a mesa, pergunte "tomorrow's weather" e ele lhe dirá.
- prática do idioma
- Conversando em inglês, o dispositivo o ajuda a praticar sua pronúncia.
QA
- E quanto ao reconhecimento de linguagem distorcida?
- Verifique se há "model.pt" em "models/SenseVoiceSmall". Caso contrário, vá paradiretrizFaça o download.
- Erro do TTS dizendo que o arquivo não existe?
- Confirmado.
libopus
responder cantandoffmpeg
. Executar sem carregar.conda install conda-forge::libopus
responder cantandoconda install conda-forge::ffmpeg
.
- E se a resposta for muito lenta?
- Mude para um modelo mais rápido, como AliLLM + DoubaoTTS.
python performance_tester.py
Faça uma medição.
- E se você for lento para falar e for roubado de suas palavras?
- Em "config.yaml", coloque o
min_silence_duration_ms
Alterar para 1000.
- Como você controla os aparelhos?
- Na configuração, selecione HomeAssistant, preencha o token e diga o comando.