Activar Assist con ReSpeaker Lite

Activar Assist con ReSpeaker Lite

Hoy descubrimos la placa más avanzada, con mejor reconocimiento de voz para activar Assist con ReSpeaker Lite.

¿Qué hemos aprendido hasta ahora?

Si llevas tiempo siguiéndonos, ya sabrás que llevamos tiempo trabajando a conciencia en conseguir el mejor asistente local posible. Si tuviera que resumir todo lo que hemos aprendido hasta ahora, destacaría dos cosas:

  • Los asistentes locales DIY o «caseros» me encantan. Ya hemos conseguido pulir de forma sobrada la configuración para que funcione correctamente. Además, el hecho de utilizar componentes para construirlo nos permite crear un asistente por muy poco dinero y, lo mejor de todo, personalizarlo para darle la forma que nosotros queramos (como un R2D2 o un Reactor ARC). Ahora bien, el hecho de tener que soldar los componentes, configurarlos en ESPHome, utilizar la impresora 3D… a veces se complica, y otras hace que muchos no os atreváis (aunque es mucho más fácil de lo que parece!)
  • Los asistentes prefabricados, como el ESP32-S3-Box-3 o el M5Stack CoreS3SE, son muy fáciles de utilizar y funcionan muy bien. Lógicamente son dispositivos diseñados, optimizados y fabricados en serie para ello, y eso se nota. Si les tengo que poner un «pero», además de que el precio es más elevado, es que creo que el hecho de estar prediseñados nos limita el margen de «fantasía» para crear nuestro asistente soñado.

Seeed Studio y su ReSpeaker Lite

La primera vez que probé el ESP32-S3-Box-3 (y más tarde con el M5Stack CoreS3SE) me sorprendí con la alta tasa de respuesta que conseguía, respecto a mi asistente 100% casero. Como funcionaban con la misma configuración y la misma placa ESP, empecé a hacerme preguntas sobre el ‘hardware’. Rápidamente llegué a la hipótesis de que (a parte de unas conexiones mejor ejecutadas), esta mejora puede deberse a que estos dispositivos tienen 2 micrófonos, mientras que yo sólo estaba utilizando 1.

Con este camino marcado, hice las siguientes averiguaciones:

  • La primera pregunta que me hice es si podía conectar varios micros a una misma placa… Hasta donde he conseguido llegar, la respuesta es que ESPHome aún no es capaz de gestionarlo, aunque es algo que ya piden los usuarios. Pero entonces, ¿cómo lo hacen los dispositivos que te he mencionado?
  • Para responder a esta pregunta me fuí directamente a la fuente, y me puse a repasar los componentes de estos asistentes prefabricados. Así descubrí que ambos dispositivos utilizan un chip ES7210 para la decodificación de audio, permitiendo la entrada dual de micrófonos. Caso resuelto… o no. La verdad es que no he encontrado referencias claras para comprar este componente y cómo utilizarlo.
  • Es entonces cuando me crucé con el ReSpeaker Lite de Seeed Studio. Según sus especificaciones, es una placa que integra dos micrófonos y un procesador XIAO ESP32S3, ofreciendo capacidades excepcionales de reducción de ruido, reconocimiento y procesamiento de voz, gracias a sus algoritmos de IA y NLU integrados. Bingo! Resta decir que viene con todos los componentes soldados, listo para que sólo tengamos que configurarlo.

Requisitos previos

Para activar Assist con ReSpeaker Lite previamente necesitas:

  • Haber instalado ESPHome en Home Assistant.
  • Haber configurado Assist en Home Assistant.
  • Lo más importante, hacerte con el pack ReSpeaker Lite Voice Assistant Kit con XIAO ESP32S3 presoldado. Puedes conseguirlo en AliExpress o en su página web.
  • Si has elegido el pack que trae un altavoz no necesitas mucho más, si no, puedes comprarlo a parte o utilizar uno que tengas por casa (a continuación te cuento cómo). El que viene en el pack es un altavoz de 4 Ohm y 5W, con un conector 2.0.
  • Un cable USB-C para alimentar la placa de DATOS (con un cable de carga no vas a poder instalar el software).

-25%
ReSpeaker Lite Kit de asistente de voz, asistente de ESPHome, matriz de 2 micrófonos con XIAO ESP32S3 presoldado, altavoz Mono cerrado
Aliexpress
32,37€ 43,74€
ReSpeaker Lite Kit de asistente de voz, asistente de ESPHome, matriz de 2 micrófonos con XIAO ESP32S3 presoldado, altavoz Mono cerrado
Altavoz Mono cerrado-4R 5W
Aliexpress
3,03€
Altavoz Mono cerrado-4R 5W
-2%
USLION-Cable USB tipo C de carga rápida 7A, Cable de datos para MacBook, Xiaomi, Samsung, Cable USB a tipo C para Huawei
Aliexpress
1,76€ 1,80€
USLION-Cable USB tipo C de carga rápida 7A, Cable de datos para MacBook, Xiaomi, Samsung, Cable USB a tipo C para Huawei
-63%
Cable de datos de teléfono de carga rápida, Micro tipo C 3A, codo de 90 grados, cuerda trenzada de nailon, Cable de carga USB seguro y duradero para Android
Aliexpress
3,23€ 8,88€
Cable de datos de teléfono de carga rápida, Micro tipo C 3A, codo de 90 grados, cuerda trenzada de nailon, Cable de carga USB seguro y duradero para Android
*Algún precio puede haber cambiado desde la última revisión
🥑 Si estás configurando Assist, te recomiendo que veas el taller de la academia para sacarle el máximo partido!

Configuración de ESPHome

Para activar Assist con ReSpeaker Lite sigue estos pasos:

  1. Conecta la placa a tu ordenador a través del puerto USB-C (el que está sobre la placa, no el que está junto al conector del altavoz). Conecta también la pequeña antena WiFi que viene en el mismo paquete, en el pequeño orificio de la placa.
  1. En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en «New device». Pulsa en «Continue» y dale un nombre (por ejemplo, «Aguacatec Assistant»).
  2. Pulsa en «Next» y a continuación selecciona la opción «ESP32-S3» como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
  3. Pulsa en «Skip» y haz clic en el enlace «Edit» del bloque correspondiente al dispositivo que acabas de crear. Copia este código y consérvalo, ya que utilizaremos algún fragmento.
  4. Accede a la documentación oficial de Seeed Studio, y baja hasta el apartado que contiene el código YAML de la configuración.
  1. Cópialo y pégalo en ESPHome, reemplazando el código que se había generado previamente y haciendo estos ajustes:
    • Ajusta el ‘name’ y ‘friendly-name’ como el nombre que le quieras dar a tu asistente.
    • Añade la información que te había generado el complemento en el apartado ‘api’ (‘encryption key’). Haz lo mismo para el campo ‘password’ bajo el apartado ‘ota’, y para los campos ‘ssid’ y ‘password’ bajo el apartado ‘wifi’ y ‘ap’. Es decir, asegúrate de haber incluido toda esta información.
# Enable Home Assistant API
api:
  encryption:
    key: "asddsaGUY8NIprvKz323/Tjau233="

ota:
  - platform: esphome
    password: "19ae62751fdslfdldfs94324da28045de1a"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Respeaker Fallback Hotspot"
    password: "d3masdads1ZR"
  1. Ahora sí, pulsa en “Save” e “Install”. Selecciona “Manual download” y espera a que se compile el código. Va a tardar un buen rato, así que te recomiendo que te pongas a hacer otra cosa mientras tanto.
  2. Cuando termine, selecciona la opción «Modern format» para descargar el fichero ‘.bin’ correspondiente.
  3. Ahora ve a la página de ESPHome y pulsa en «Connect». En la ventana emergente selecciona tu placa y pulsa en «Conectar».
  4. Ahora pulsa en «Install» y selecciona el fichero ‘.bin’ obtenido en el paso 8. De nuevo, pulsa en «Install».
  5. Vuelve a Home Assistant y ve a Ajustes > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de «Configurar». De lo contrario pulsa en el botón de «Añadir integración», busca «ESPHome» e introduce la IP de tu placa en el campo ‘Host’.
  6. Al añadir tu dispositivo ya aparecerá dentro del bloque de «ESPHome» entre tus integraciones. Accede al dispositivo y selecciona:
    • Detección de fin de habla. Selecciona la opción «agresivo».
    • Tubería de Assist. Selecciona el ‘pipeline’ que hayas configurado para tu asistente. Por cierto, también tienes que acceder a Ajustes > Asistentes de voz, pulsar sobre tu ‘pipeline’ y bajar hasta el apartado de «Palabra de activación» para asegurarte de haber seleccionado tu palabra de activación (ya que el dispositivo funciona, por defecto, con OpenWakeWord).
  7. Antes de probarlo no olvides conectar el altavoz en el puerto correspondiente (en la parte central del extremo opuesto a la placa).
  8. Ha llegado el momento de la verdad, di «OK, Nabu» (o tu palabra de activación) y observa la respuesta!
🎉 Tengo que decir que el resultado es ESPECTACULAR!! No había conseguido este nivel de reconocimiento de voz con ningún otro dispositivo. Simplemente, no falla! Incluso me escucha cuando hablo más bajo de lo normal para ponerle a prueba!!

Escuchar la respuesta por un altavoz externo

Que la placa traiga un puerto para conectar un altavoz integrado sin más complicación se agradece. Sin embargo, ya sabes que me gusta aprovechar los altavoces que tenemos por casa para escuchar la respuesta del asistente. En primer lugar, la calidad del audio es notablemente mejor y, en segundo lugar, me da más libertad para integrar la placa del asistente en mis carcasas personalizadas.

Conectar un altavoz al puerto jack 3.5

Si amigos! Esta placa no te lo puede poner más fácil! Otra ventaja de activar Assist con ReSpeaker Lite es que, por si no te habías fijado, en uno de sus laterales la placa incorpora un puerto jack 3.5. Esto significa que puedes conectarlo a cualquier altavoz que tengas por casa y automáticamente escucharás por ellos la respuesta del asistente. Sin soldar componentes, sin escribir ni una línea de código, ni configurar nada.

Escuchar la respuesta a través de tus altavoces integrados

Ahora bien, si ya tienes integrado algún altavoz en HA (sea un altavoz local, Google o Alexa) y quieres aprovecharlo para ser más eficiente, también puedes hacerlo.

En esta entrada ya te expliqué cómo se hace (por lo que no voy a entrar en el detalle de los distintas variantes, pero te invito a revisarla si esto no te funciona). En todo caso, te voy a explicar de forma resumida cómo activar Assist con ReSpeaker Lite y escuchar la respuesta por un altavoz externo:

  1. En Home Assistant, ve a Herramientas para desarrolladores > Estados y busca ‘media_player’. Esto te ofrecerá el listado de entidades multimedia que tienes disponible para utilizar como salida de audio. Por ejemplo, en mi caso voy a utilizar la entidad ‘media_player.googlehome5013’ de un Google Home Mini.
  2. Entra en el complemento de ESPHome y pulsa «Edit» en el bloque correspondiente al dispositivo de tu asistente local, para acceder al código de la configuración.
  3. Ahora tienes que bajar por el código hasta localizar la siguiente parte. 
  on_tts_start:
    - light.turn_on:
        id: led
        blue: 100%
        red: 0%
        green: 0%
        brightness: 100%
        effect: none
  1. Lo que vamos a hacer es añadir una nueva acción, que llame a la acción de Home Assistant que utilizamos para reproducir notificaciones por nuestros altavoces, de la siguiente manera (no olvides adaptar tus entidades).
  on_tts_start:
    - light.turn_on:
        id: led
        blue: 100%
        red: 0%
        green: 0%
        brightness: 100%
        effect: none
    - text_sensor.template.publish:
        id: text_response
        state: !lambda return x;
    - homeassistant.service:
        service: tts.speak
        data:
          media_player_entity_id: media_player.googlehome5013 ## Indica aquí la entidad de tu altavoz
          message: !lambda 'return x;'
          entity_id: tts.elevenlabs_tts ## Indica aquí la entidad de tu motor TTS
  1. En este momento te aparecerá un subrayado rojo, indicando que hay un error en tu código. Esto es porque estamos llamando a una variable que aún no hemos creado. Para ello copia el siguiente fragmento al comienzo de tu código (bajo la línea ‘captive_portal’).
captive_portal:

text_sensor:
  - platform: template
    name: "Response"
    id: text_response
    internal: true
  1. Una vez hayas modificado el código como corresponda, pulsa en «Save» e «Install». Como ya tienes tu dipositivo configurado, podrás utilizar la opción «Wirelessly» para actualizar la configuración.
  2. ¿Ya los has probado y no funciona? No te aceleres! Para que tu dispositivo de ESPHome pueda llamar a HA para ejecutar acciones, primero tenemos que darle premiso. Ve a Ajustes > Dispositivos y servicios > ESPHome. Pulsa sobre el enlace “Configurar” correspondiente al dispositivo de tu asistente. En la ventana emergente marca la casilla “Permitir que el dispositivo realice llamadas de servicio de Home Assistant” y pulsa en “Enviar”. Esto va a permitir que el asistente emita el audio por otros altavoces.

Ponle una carcasa

No podía faltar nuestro diseño 3D para proteger la placa y darle un toque personalizado. He diseñado esta cajita, que respeta los orificios para conectar el cable USB-C y el jack de audio, además de contar con una ranura en la parte posterior para la antena WiFi y dos orificios en la parte delantera para los micrófonos. Puedes descargarlo de forma totalmente gratuita en nuestro perfil de Patreon.

🛟 ¿Dudas? Si necesitas ayuda entra aquí 👈 🎁 Y si te ha gustado y quieres más... 🥑
Contenido exclusivo de Aguacatec