Faça o deploy do seu assistente de voz Xiaozhi com IA em nuvem usando ESP32S3 + reSpeaker
Objetivo: Fazer o ESP32S3 funcionar com o reSpeaker XVF3800 e executar o assistente Xiaozhi aproveitando modelos grandes em nuvem. Código-fonte do projeto: https://github.com/Seeed-Projects/Xiaozhi_Esp32S3_reSpeaker Seeed-Projects: https://github.com/Seeed-Projects
O reSpeaker XVF3800 é uma matriz circular profissional de 4 microfones baseada no chip XMOS XVF3800. Ele oferece captação de voz confiável em ambientes ruidosos com recursos que incluem modos duplos, captação em campo distante de 360° (até 5 m), cancelamento de eco acústico (AEC), controle automático de ganho (AGC), direção de chegada (DoA), desreverberação, formação de feixe e supressão de ruído. Com suas robustas capacidades de captura e redução de ruído, o Xiaozhi ganha um "ouvido" muito melhor.

Parte 1: Preparação de firmware de hardware do reSpeaker
Esta seção é voltada para o próprio hardware reSpeaker XVF3800. O firmware USB padrão não oferece suporte a saída I2S, portanto você deve gravar um firmware I2S dedicado para usá-lo com hosts como o XIAO ESP32S3.
Observação: O firmware I2S usa I2C DFU (não USB DFU). Se o dispositivo já tiver firmware I2S, mas se comportar de forma anormal, primeiro entre no "modo de segurança" e então use USB DFU para recuperar ou alternar o firmware. O modo de segurança oferece suporte a ambos USB DFU e I2C DFU. Consulte as referências oficiais:
1.1 Preparação
Hardware
- reSpeaker XVF3800 USB 4-Mic Array
- Cabo de dados USB Tipo-C (energia + dados)
- Computador: Windows / macOS / Linux
- Se integrado com XIAO ESP32S3, garanta soldagem adequada para conexões de I2S / I2C / alimentação
Software (instalar dfu-util)
Windows:
- Baixe e descompacte um binário
dfu-util(por exemplo,D:\dfu-util-0.11-binaries\win64\). - Adicione o diretório que contém
dfu-util.exeao PATH. - Verifique com
dfu-util -V. - Se
dfu-util -lretornarLIBUSB_ERROR_NOT_SUPPORTED, use o Zadig para substituir o driver do dispositivo por WinUSB.
macOS (Homebrew):
brew install dfu-util
dfu-util -l
Linux (Debian / Ubuntu / Raspberry Pi OS):
sudo apt update
sudo apt install dfu-util
sudo dfu-util -l
Baixar o firmware I2S
- Acesse o repositório de firmware: https://github.com/respeaker/reSpeaker_XVF3800_USB_4MIC_ARRAY/tree/master/xmos_firmwares
- Baixe um arquivo
.bincom nome começando comi2s(por exemplo,respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin).
1.2 Conectar e entrar no modo DFU
Observação sobre a fiação
- Use a porta USB-C próxima ao conector de fone de ouvido de 3,5 mm (o lado XMOS) ao conectar ao computador; NÃO use a porta do lado XIAO.
Entrar no modo de segurança (recomendado)
Use isto quando: o firmware atual é I2S, mas você quer USB, o firmware está corrompido ou o firmware errado foi gravado.
- Remova completamente a alimentação.
- Mantenha pressionado o botão "Mute" onboard.
- Enquanto o mantém pressionado, reconecte a alimentação.
- Quando o LED vermelho começar a piscar, solte o botão — o dispositivo agora está em modo de segurança.
1.3 Gravar o firmware I2S usando dfu-util
Confirmar que o dispositivo está visível
# Linux / Raspberry Pi OS
sudo dfu-util -l
# macOS / Windows
dfu-util -l
A saída esperada contém Found DFU: [2886:001a] ... alt=1, name="reSpeaker DFU Upgrade".
Comando de gravação
# Linux / Raspberry Pi OS (replace path)
sudo dfu-util -R -e -a 1 -D /path/to/respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin
# macOS / Windows (no sudo)
dfu-util -R -e -a 1 -D /path/to/respeaker_xvf3800_i2s_dfu_firmware_v1.0.x.bin
Parâmetros: -R (reset/reiniciar), -e (apagar), -a 1 (escrever no Upgrade alt), -D (arquivo de firmware).
1.4 Verificação e solução de problemas
Verificar firmware
Após a gravação, o dispositivo será reiniciado automaticamente e o firmware I2S deverá estar ativo. Você pode verificar lendo os dados de áudio do dispositivo com o ESP32S3 como host I2S.
Perguntas frequentes (FAQ)
- P:
dfu-util -lnão mostra o dispositivo?- Verifique o cabo USB e a porta (é obrigatório usar o conector do lado XMOS).
- Se o dispositivo estiver executando atualmente firmware I2S, entre no modo de segurança antes de gravar.
- Usuários Windows: garanta o driver WinUSB via Zadig.
- P: Erro durante a gravação?
- Tente um cabo USB ou porta de host diferente e tente novamente no modo de segurança.
- P: Sem áudio após a gravação?
- Verifique se a configuração do host I2S (taxa de amostragem, canais) corresponde às configurações do firmware.
Parte 2: Ajustes de adaptação de software do Xiaozhi
Esta seção aborda as alterações de código para fazer o projeto Xiaozhi oferecer suporte ao reSpeaker XVF3800.
2.1 Visão geral das alterações
Principais alterações:
- Adicionado um wrapper de barramento I2C compartilhado para gerenciar centralmente o master I2C e evitar conflitos.
- Adicionada sondagem de hardware durante a inicialização: sondar o XVF3800 via I2C antes do início da aplicação.
- Desacoplada a configuração em nível de placa: usar macros
config.hpara pinos e endereços para facilitar a portabilidade. - Atualizações de build: incluir os novos arquivos fonte de BSP na compilação.
2.2 Principais locais de alteração de código
A. Novo: barramento I2C compartilhado
- Arquivos:
main/shared_i2c_bus.h/main/shared_i2c_bus.c - Finalidade: Fornecer
shared_i2c_master_bus_get()que usa a API de master I2C do ESP-IDF com pull-ups internos ativados por padrão.
B. Novo: inicialização do hardware de áudio do reSpeaker
- Arquivo:
main/audio_bsp.c - Função:
audio_hardware_init() - Lógica: Adquirir o barramento I2C compartilhado, chamar
i2c_master_probe()para detectarXVF3800_I2C_ADDR(0x2C) e imprimir logs de sondagem.
C. Alteração: ordem de inicialização
- Arquivo:
main/main.cc - Alteração: Chamar
audio_hardware_init()antes deApplication::GetInstance().Start().
D. Alteração: build e configuração da placa
CMakeLists.txt: adicionaraudio_bsp.ceshared_i2c_bus.càs fontes de compilação.boards/xiao-esp32s3-sense/config.h:- Adicionar
I2C_SDA_PIN(5),I2C_SCL_PIN(6). - Adicionar
XVF3800_I2C_ADDR(0x2C). - Completar configurações de pinos e largura de bits de I2S.
- Adicionar
Parte 3: Compilar, gravar e fazer deploy
Esta seção orienta na compilação do firmware adaptado e na gravação dele no ESP32S3.
3.1 Confirmar conexões de hardware
Garanta as conexões entre o ESP32S3 e o reSpeaker XVF3800:
- Linhas de áudio I2S conectadas corretamente.
- Linhas de controle I2C conectadas: ESP32S3 GPIO5 (SDA) / GPIO6 (SCL) ao XVF3800.
3.2 Selecionar o alvo de compilação
idf.py set-target esp32s3
3.3 Menuconfig
idf.py menuconfig
Ajustes necessários:
- Selecionar placa:
Xiaozhi Assistant -> Board Type -> Seeed Studio XIAO ESP32S3 Sense. - Evitar conflitos de pinos: se o I2S usar GPIO43/44, altere a saída do console para USB:
Component config -> ESP System Settings -> Channel for console output -> USB Serial/JTAG. - Configurações de flash:
Serial flasher config -> Flash size -> 8 MBePartition Table -> Custom partition CSV file -> partitions/v1/8m.csv.
3.4 Compilar e gravar
idf.py build
idf.py flash
3.5 Monitorar logs e verificar
idf.py monitor
Parte 4: Configuração de rede e ativação
Após a gravação, o dispositivo precisa de configuração de rede e vinculação à nuvem para usar recursos de conversa com IA.
4.1 Conectar ao hotspot do dispositivo
- Use seu celular para encontrar o SSID Wi-Fi chamado
Xiaozhi-XXXXXX. - Abra um navegador e acesse
http://192.168.4.1.
4.2 Configurar o Wi-Fi
- No portal cativo, aguarde ~5 s pela varredura de rede.
- Escolha seu Wi-Fi de 2,4 GHz (hotspot do iPhone: ative "Max Compatibility").
- Digite a senha e clique em "Connect".
- Após "Login successful", o dispositivo será reiniciado em ~3 segundos.

4.3 Adicionar o dispositivo ao backend de gerenciamento
- Obtenha o ID do dispositivo: depois que o dispositivo estiver online, acorde-o dizendo "Hello Xiaozhi" e ouça o código de verificação de 6 dígitos.
- Acesse https://xiaozhi.me e crie uma conta / faça login.
- Na seção "Agents" ou de gerenciamento de dispositivos, selecione "Add device", insira o ID de dispositivo de 6 dígitos e envie.

Depois de concluído, seu dispositivo reSpeaker–Xiaozhi deve estar pronto e operacional.
E não se esqueça de alterar o idioma de saída para a sua preferência nas configurações!

Suporte Técnico e Discussão sobre o Produto
Agradecemos por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.