Asistente de voz en español con Home Assistant + integración con OpenAI + VoIP

Cómo ya anunció Home Assistant, este 2023 será el año de la voz, el año donde podamos controlar nuestro hogar mediante la voz de manera segura. Pero no sólo eso, si no que podremos integrar nuestro asistente con OpenAI para preguntarle lo que nos de la gana! y espera que eso no es todo, también veremos cómo podemos hablar por teléfono con nuestro Asistente!!!

 

Así como estás entendiendo, ya es posible crear un Asistente en Home Assistant para que nos atienda las peticiones, bien por escrito, bien hablado por voz. Este Asistente nativo estará disponible en infinidad de idiomas, entre ellos, en Castellano o Español, vaya. Podremos darle instrucciones básicas para que encienda/apague luces, etc… pero también nos podremos crear nuestras propias frases particulares, para que saque las aspiradoras, el cortacésped… Y cómo decimos en el título, también podremos hacerle consultas para que las responda la IA (tan de moda ya), así que podremos integrarlo con OpenAI y preguntarle lo que queramos que siempre sabrá la respuesta 😉

Al final del post veremos también cómo podemos habilitar VoIP en Home Assistant para poder llamar por teléfono a estos Asistentes y atiendan a nuestras peticiones. Lo haremos con un teléfono tradicional y con un par de softphones, uno para PC y otro para tu móvil… la bomba!!!

 

Configuración del Assistente,

 

Empezamos! lo primero de todo será instalar Whisper, este complemento nos hará la conversión de audio a texto, o sea, Speech to text, para instalarlo nos vamos a «Ajustes» > «Complementos» > «Add-on Store» y buscamos ‘Whisper’,

 

Pulsamos en «Install» para instalarlo,

 

Una vez instalado, en su configuración tenemos los modelos de transcripción, por defecto tyni-int8 será el más habitual si tenemos una Raspberry Pi 4 o similar, podremos elegir modelos más completos pero necesitaremos más cómputo. Aquí deberemos indicar nuestro idioma, en lenguaje seleccionamos ‘es’. Pulsamos en «Save».

 

Lo iniciamos pulsando en «Start»

 

Si vamos a «Ajustes» > «Dispositivos y Servicios», veremos que nos lo habrá descubierto, pinchamos en «Configurar» del Whisper.

 

«Enviar»,

 

Ahora instalaremos otro complemento, en este caso lo usará Home Assistant para convertir el texto a voz (text to speech), usaremos Piper. Así que vamos a «Ajustes» > «Complementos» > «Add-on Store» y buscamos ‘Piper’,

 

Lo instalamos pulsando en «Install»,

 

Una vez instalado Piper, en su configuración seleccionamos la voz que queremos que use, en este caso usaremos ‘es-carlfm-x-low’, voz de hombre en español, tenemos aquí el resto de voces por si queremos escucharlas para elegir la que más nos guste: https://rhasspy.github.io/piper-samples/

Guardamos los cambios desde «Guardar»,

 

Pulsamos en «Iniciar en el arranque» además de iniciarlo inmediatamente desde «Iniciar»,

 

Nos habrá descubierto Piper, lo verificamos desde «Ajustes» > «Dispositivos y Servicios», y pinchamos en «Configurar» del Piper.

 

«Enviar»,

 

Crear el Asistente,

 

Bueno, vamos a ello, vamos a crear nuestro primer Asistente, el que nos ayudará a gestionar y saber el estado de cualquier dispositivo o entidad de Home Assistant. Para crearlo vamos a «Ajustes» > «Asistentes de voz» y pulsamoe en «Añadir Assistente»,

 

Le ponemos un Nombre, en mi caso el mayordomo se llamará Sebastian, le asignamos un lenguaje, en este caso ‘español’. Como Agente de conversación indicaremos ‘Home Assistant’ y el idioma ‘Español’. Para el uso de Voz a texto usaremos ‘faster-whisper’ con el idioma en ‘español’. Y para e uso de Texto a voz, usaremos ‘Piper’, seleccionamos ‘español’ y escogemos la voz que hemos indicado anteriormente.

Pulsamos en «Prueba la voz» para probar y escuchar. Finalmente pulsamos en «Crear»,

 

Para probar arriba a la derecha en la GUI de Home Assistant con un navegador o el cliente móvil, tendremos un el icono para hablar con el asistente.

 

Seleccionamos el asistente recién creado y ya podemos darle alguna instrucción, podemos probar a apagar/encender alguna luz, dispositivo, subir/bajar alguna persiana, portón… Por ahora tiene una funcionalidad básica y que si queremos crecer, pues entiendo que o esperamos a nuevas actualizaciones, o tendremos que trabajarnos nuestras propias frases/sentences; pero eso lo veremos otro día 😉

 

Por cierto, si queremos usar el micrófono de nuestro dispositivo para hablar, en vez de escrito. Tendremos que asegurarnos que estamos entrando a Home Assistant con HTTPS y no con HTTP. Si no tienes HTTPS habilitado, te recomiendo que te instales ‘NGINX Home Assistant SSL proxy’ y en un momento habilitas la conexión segura. A partir de ahí el micrófono se podrá usar con el asistente!!!

 

Integración con OpenAI,

Bien, esta parte es opcional, así que sólo si te interesa que tu Assistente de Home Assistant pueda responderte a consultas que sepa la IA (Inteligencia Artificial). La integración en este caso es con OpenAI y será necesaria una cuenta de pago, pero no te preocupes que esto no cuesta casi nada, (la consulta con gpt-3.5-turbo sale a $0.002), pero sí es necesaria que la cuenta sea de ‘pago’.

 

Total, que en https://platform.openai.com/account, vamos a «Billing» y lo tenemos en «Set up paid account».

 

Una vez listo, ya podremos obtener nuestra API Key, vamos a «Users» > «API keys» y pulsamos en «Create news secret key».

 

Le ponemos un nombre, API para ‘Home Assistant’ & «Create secret key». Y nos generará la clave que nos mostrará en pantalla, nos copiamos la API key en un lugar seguro.

 

Para instalar la integración de conversación con OpenAI, iremos a «Ajustes » > «Dispositivos y Servicios» > «Add Integration» > y buscamos «OpenAI Conversation»

 

Y tan sencillo cómo pegar el API key, «Enviar»,

 

Vamos a configurar OpenAI, para ello desde «Ajustes» > «Dispositivos y Servicios». Pinchamos en «Configurar» del OpenAI Conversation.

 

Seleccionamos, en mi caso con gpt-3.5-turbo me vale y «Enviar»,

 

Crear un Assistente con OpenAI,

Para poder usar OpenAI en Home Assistant necesitaremos finalmente crear un Asistente en Home Assistant y vincularlo.

 

Para ello, vamos a «Ajustes» > «Voice Assistants» y creamos un Asistente desde «Add Assistant». Le ponemos un Nombre, en mi caso veis que se llamará Erundino,  pocos más listos que él hay… asociamos un idioma, en este caso ‘español’. Como Agente de conversación indicaremos «OpenAI Conversation» y el idioma en «español». Cómo Voz a Texto escogemos «faster-whisper» y el idioma en «español». En Texto a voz, usamos «piper», el idioma en «español» y la voz que selecionamos anteriormente. Pulsamos en «Crear»,

 

Y listo, para probar, ya sabemos que en la GUI de Home Assistant, arriba a la derecha lo tenemos, seleccionamos el asistente con OpenAI que acabamos de crear y le preguntamos por lo que nos apetezca! Lo sabe casi todo 😉

 

VoIP con Home Assistant,

Y para finalizar este artículo veremos cómo es posible usar un teléfono tradicional, uno que tenga conector RJ11, los de toda la vida; o vaya si tenemos un teléfono VoIP, o mejor aún, un softphone instalado en nuestro PC o en nuestro teléfono móvil.

Sí, como estás entendiendo bien, podrás controlar por VoIP desde tu móvil la domótica de tu hogar, o empresa… podrás tener un acceso directo en el móvil, que al pulsarle hará una llamada y te atenderá tu asistente al momento 🙂

 

Para habilitar VoIP en Home Assistant, instalaremos la integración que lo permite, vamos a «Ajustes» > «Dispositivos y Servicios» > «Añadir Integración» > y buscamos ‘voip’.

 

Enviar,

 

Terminar,

Listo, así de fácil tendremos una centralita de VoIP esperando las llamadas!

 

Haciendo llamadas con un teléfono clásico,

Bien, si tenemos un teléfono con un conector RJ11, un teléfono de los de toda la vida, o uno retro que queramos poner en el despacho, o en la cocina para hablar con el/la asistente…

 

La mejor opción es mediante el dispositivo Grandstream HT801, este dispositivo convierte cualquier teléfono con conector RJ11 en un teléfono VoIP, así de sencillo. Existe algún modelo con varios conectores RJ11 por si queremos algún teléfono adicional… El funcionamiento es muy sencillo:

  • Conectamos el RJ45 a la red.
  • Conectamos el RJ11 al teléfono.
  • Conectamos el micro USB con el cargador para encenderlo.

Al encenderlo cogerá una dirección IP por DHCP, si queremos saberla, descolgamos el teléfono y pulsamos *** y escogemos la opción 02, nos dirá la IP el teléfono.

 

 

Accedemos con un navegador a su IP, nos validamos, por defecto admin / admin

Y realizamos una configuración opcional mínima como pueda ser una dirección IP estática, cambiarle la contraseña, establecer el NTP de nuestra red…

 

Para que según descolguemos el teléfono marque a Home Assistant, vamos a la pestaña «FXS PORT», en la sección de «Offhook Auto-Dial» indicaremos la dirección IP de Home Assistant con el siguiente formato: *47192*168*1*116*5060 y pulsamos «Apply»

Si descolgamos ya nuestro teléfono, hará la llamada automáticamente y podremos escuchar cómo por el auricular nos indica que tenemos que configurar este teléfono en Home Assistant antes de poder usarlo.

 

Si vamos a Home Assistant, en la configuración de ‘Voice over IP’ veremos que ha detectado ya nuestro primer dispositivo! Pulsamos en el dispositivo,

 

Y aquí tendremos que primero permitirle que haga llamadas y asociarle a un Assistente de Voz que hayamos creado previamente,

Este teléfono queda listo, podemos hablar con el asistente con un teléfono tradicional!

 

Haciendo llamadas con un softphone de PC,

Si quieres desde tu equipo lo mismo, poder hacer llamadas fácilmente a Home Assistant para hablar con alguno de tus asistentes, estos son los pasos.

 

Estoy usando MicroSIP, pero entiendo que en principio valdría cualquier softphone. Una vez instalado MicroSIP, o el que sea, deberemos tener en cuenta que tengamos los codecs Opus habilitados. Si tenemos alguna cuenta ya configurada en MicroSIP contra otro VoIP, deberemos marcar aquí la opcion de ‘Activar cuenta local’,

 

Y directamente, sin hacer mucho más, podremos marcar a nuestra centralita de Home Assistant marcando en el siguiente formato: DIRECCION_IP_HOME_ASSISTANT:PUERTO

Veremos igualmente que nos indica una dulce voz que el teléfono se ha conectado bien, pero debe ser configurado antes de ser usado.

 

Para ello, igualmente, en la integración de Voice over IP nos habrá detectado un nuevo teléfono que deberemos activar, para ello marcaremos ‘Permitir llamadas’ y asignaremos el Asistente que queramos que le atienda.

 

Haciendo llamadas con un softphone en el móvil,

Y bueno, este último ejemplo donde vemos cómo configurar en un teléfono móvil de Android una app para hacer llamadas de voz IP como pueda ser Mizudroid.

 

Una vez instalada la app deberemos configurarla, indicamos el Servidor y el Usuario, da igual el usuario, no debe existir previamente, ni tenemos que crear nada. Podemos probar a realizar la llamada a Home Assistant, marcamos con el formato: sip:ha@DIRECCION_IP:PUERTO

 

Si ha ido bien, volveremos a escuchar la dulce vocecilla que nos indica que se ha conectado bien, y que como siempre tendremos que activarlo desde la integración de VoIP en Home Assistant, (permitirle las llamadas y asignarle un Asistente).

Además, si añadimos esta llamada a Contactos, podremos luego crearnos un acceso directo en la pantalla del móvil, para que sólo sea pulsarlo y hace la llamada a nuestro Asistente, fácil y sencillo!

 

Bueno, en este post hemos visto un montón de cosas que podemos hacer con Home Assistant y la voz, podremos crearnos asistentes para interactuar con nuestro hogar, para hablar con OpenAI, hablar con los asistentes desde el propio navegador o app del móvil nativa, así como mediante VoIP, una locura! Pero esto no acaba aquí, en futuros documentos seguiremos dando la tabarra, nos queda mucho que ver!

Espero como siempre que haya sido de provecho para alguien, que muchas gracias por leer si habéis llegado hasta aquí y por supuesto por los corazoncitos y likes y esas cosas en las redes sociales, se agradece!

Abrazos!

 

Héctor Herrero