En esta guía vamos a convertir una placa esp32-S3 ES3C28P en un asistente de voz utilizando el proyecto open source XiaoZhi AI. esp32s3 El dispositivo podrá:

🎤 Escuchar nuestra voz.
🔊 Responder mediante el altavoz integrado.
🖥️ Mostrar expresiones en su pantalla.
🌐 Conectarse a Internet mediante Wi-Fi.
🤖 Comunicarse con un agente de inteligencia artificial (DeepSeek,Qwen 3.6, GPT 5).
🗣️ Utilizar una palabra de activación.
⚙️ Configurarse desde la plataforma de XiaoZhi.

XiaoZhi está diseñado precisamente como una plataforma de interacción por voz basada en ESP32, con reconocimiento de palabra de activación, audio, pantalla, camara (si lo integras con otros tipos de ESP21) y comunicación con servidores de IA.

1. ¿Qué vamos a utilizar?

Hardware

  • ES3C28P
  • Cable USB de datos.
  • Computadora con Linux, Windows o macOS.
  • Conexión a Internet.

No necesitamos añadir micrófono ni altavoz externos si nuestra placa ya incorpora estos componentes.

Software

  • Git
  • Python 3
  • ESP-IDF
  • XiaoZhi ESP32
  • Cuenta en XiaoZhi

La documentación oficial de Espressif indica que ESP-IDF es el framework oficial para desarrollar aplicaciones para la familia ESP32.

2. Una aclaración importante antes de empezar

Esta guía está realizada específicamente para la placa de modelo : ES3C28P
Revisa que tu placa sea el modelo correcto, acá puedes diferenciarla:
https://www.lcdwiki.com/res/ES3C28P/ES3C28P_ES2N28P_Specification_V1.0.pdf

3. Instalar ESP-IDF

ESP-IDF es el entorno oficial de desarrollo de Espressif que utilizaremos para compilar el firmware de Xiaozhi.

En nuestro caso utilizamos ESP-IDF 6.0.2.

3.1. Instalar las dependencias

Abrimos una terminal y ejecutamos:

1
2
sudo apt update
sudo apt install -y git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

3.2. Crear la carpeta para ESP-IDF

1
2
mkdir -p ~/esp
cd ~/esp

3.3. Descargar ESP-IDF

Clonamos el repositorio oficial:

1
git clone --recursive https://github.com/espressif/esp-idf.git

Entramos en la carpeta:

1
cd ~/esp/esp-idf

Y seleccionamos la versión que utilizaremos:

1
git checkout v6.0.2

Después actualizamos los submódulos:

1
git submodule update --init --recursive

3.4. Instalar las herramientas de ESP-IDF

Desde la carpeta esp-idf ejecutamos:

1
./install.sh esp32s3

Este proceso instala las herramientas necesarias para trabajar con el ESP32-S3, incluyendo el entorno Python utilizado por ESP-IDF.

3.5. Activar ESP-IDF

IMPORTANTE: Cada nueva terminal necesita tener cargado el entorno de ESP-IDF. Ejecutamos:

1
source ~/esp/esp-idf/export.sh

Comprobamos que idf.py está disponible:

1
idf.py --version

Deberíamos obtener una salida indicando la versión de ESP-IDF, por ejemplo:

1
ESP-IDF v6.0.2

Importante: ESP-IDF utiliza su propio entorno Python. Esto permite mantener separadas las herramientas de ESP-IDF del Python del sistema y evita modificar innecesariamente las instalaciones de Python de Linux.

3.6. Comprobar que todo está listo

Ejecutamos:

1
which idf.py

Debería mostrar una ruta perteneciente a la instalación de ESP-IDF.

4. Descargar XiaoZhi

Clonamos el repositorio:

1
git clone https://github.com/78/xiaozhi-esp32.git

Entramos al proyecto:

1
cd xiaozhi-esp32

El proyecto oficial es open source y utiliza ESP-IDF como entorno de desarrollo.

5. Utilizar una versión estable del proyecto

Para evitar que una actualización futura cambie el resultado de nuestra guía, podemos utilizar una versión concreta.

En nuestro caso utilizamos:v2.4.2

Primero:

1
git fetch --tags

Después:

1
git checkout v2.4.2

Comprobamos:

1
git status

6. Configurar el ESP32-S3

Ahora indicamos a ESP-IDF que nuestro microcontrolador es un: ESP32-S3

Ejecutamos:

1
idf.py set-target esp32s3

A continuación:

1
idf.py menuconfig

Aquí configuraremos el proyecto.

7. Configurar la placa en menuconfig

Desde la carpeta del proyecto Xiaozhi ejecutamos:

1
idf.py menuconfig

menuconfig Dentro de menuconfig, debemos ir a:

Xiaozhi Assistant → Board Type → Freenove ESP32-S3 Display 2.8 LCD

Seleccionamos:

Freenove ESP32-S3 Display 2.8 LCD

Esta opción corresponde a nuestra placa ES3C28P y utiliza la configuración:

CONFIG_BOARD_TYPE_Freenove_ESP32S3_DISPLAY_2_8_LCD

Después:

Seleccionamos Freenove ESP32-S3 Display 2.8 LCD.
Presionamos Enter para marcarla.
Presionamos S para guardar.
Confirmamos con Enter.
Presionamos Esc hasta salir de menuconfig.

8. Compilar XiaoZhi

Ahora podemos compilar:

1
idf.py build

Si todo está correcto aparecerá algo similar a:

Project build complete.

Además, se mostrarán los archivos que ESP-IDF utilizará para instalar el firmware.

9. Conectar la ES3C28P

Conectamos la placa mediante USB.

Linux debería crear un dispositivo similar a:

1
/dev/ttyACM0

Podemos comprobarlo:

1
ls /dev/ttyACM*

En nuestro caso fue:

1
/dev/ttyACM0

10. Instalar el firmware

Con la placa conectada ejecutamos:

1
idf.py -p /dev/ttyACM0 flash

ESP-IDF se encargará de escribir el firmware en la memoria del ESP32-S3. Este proceso va a demorar un poco así que ve por un café. ☕

11. Comprobar que XiaoZhi arrancó

Una vez terminado el proceso, reiniciamos la placa.

Si todo salió correctamente veremos que la pantalla cobra vida y escucharemos el sonido de inicio.

En nuestra prueba:

🖥️ La pantalla mostró la expresión de XiaoZhi.
🔊 El dispositivo emitió el sonido de inicio.

Esto confirma que el firmware está funcionando correctamente.

12. Configurar XiaoZhi

Ahora llega la parte interesante.

El firmware de XiaoZhi está preparado para conectarse al servicio oficial de:

https://xiaozhi.me

La plataforma separa claramente el hardware del dispositivo y los servicios de IA. El dispositivo proporciona la entrada/salida de voz y el servidor proporciona funciones como ASR, LLM, TTS y el agente de IA.

Debemos:

Conectar el dispositivo a nuestra red Wi-Fi.
Nos dará un código.
Asociarlo con nuestra cuenta.
Entrar en la consola.
Configurar nuestro agente.

Configurar el agente

Entramos en:

Consola de XiaoZhi — Agents

Desde aquí podemos configurar aspectos como:

Personalidad del asistente; nombre; voz; idioma; modelo de IA; comportamiento del agente.

Un truco acá hay una parte donde debes asociar tu cuenta de github esto te dará mejores cosas para personalizar tu Agente de AI como mejores modelos y otras cosas más.

Y eso fue todo. Saludos, tu amigo ROCURUN