Rhasspy – Sichere Sprachsteuerung in Home Assistant (auf Spanisch)

Druckfreundlich, PDF & Email

Für alle unter uns, die einen Home Assistant haben und daran interessiert sind, ihn per Sprache steuern zu können, sagen, eine Alternative zu Alexa oder Google Home, Nun, wir haben Rhasspy. Und warum Rhasspy? Warum unsere Mikrofone keine Verbindung zum Internet herstellen können, Niemand wird uns zuhören und es wird absolut sicher und anpassbar sein, Gestartet!

Una obsesión que tengo es la de ver micrófonos por todos lados que controlan los hogares modernos, estos domóticos o inteligentes. Micrófonos que escuchan en nuestras casas y no sabemos quién está detrás o con qué fin nos dan un servicio gratuito ;-). En casa probé una vez un micrófono de estos de Google o Amazon y me quedé asombrado por la cantidad de conexiones y tráfico que generan las 24h del día, creo que no es normal que con esto del IoT tengamos que compartir con terceros datos de cualquier tipo, si ponemos la lavadora, o cuantos m2 limpia la aspiradora, o geolocalizándonosevitemos ser nosotros el producto.

Así que tras mucho tiempo mirando y probando alternativas, la mejor con diferencia es Rhasspy, es sencilla, es muy completa, podemos hacer muchas cositas, mandar acciones, hacer preguntas, conversacionesy luego actuar e integrarlo con Home Assistant para que ejecuten automatizaciones. Y por supuesto podremos hablarla en castellano (Spanisch) o cualquier otro idioma soportado (Inglés, Deutsch, Castellano, Französisch, Italiano, Deutsch, Ruso, Griego, Hindi, Mandarín, Vietnamita, Portugués, Sueco o Catalán entre otros.)

Rhasspy se puede instalar en modo digamos local, todo en una Raspberry, Das ist, que tenga el micrófono en ella, que esté esperando una palabra clave para ‘despertar’, que grabe lo que le preguntamos/ordenamos y luego lo gestione para entender y llame a la automatización de Hassio correspondiente. Pero lo ideal, es que no tengamos un micrófono solo en casa, si no varios repartidos por las habitaciones, así que Rhasspy se puede instalar digamos en modo cliente con lo mínimo, los, que este esperando la palabra clave y grabe nuestra pregunta/orden y luego se lo mande a un Rhasspy central que será la que lo procese y lo mande a Home Assistant. La idea de este cliente/servidor es para tener varios satélites con micrófonos y una configuración única central (y no cada Raspberry Pi con una configuración distinta). Y en mi caso particular el Rhasspy central, al ser importante (tiene la configuración y hace el cómputo) corre en una máquina virtual, al no necesitar micrófonoY por últimisimo, por si a alguien le interesa, se podría instalar directamente sobre Home Assistant

Brunnen, creo que con esto nos situamos y cogemos la idea, pues Rhasspy corre en un contenedor, así que tardaremos 2 minutos en tenerlo desplegado donde necesitemos. Voy a segregar el post en distintas situaciones para que cada uno escoja su escenario ideal.

Rhasspy solitario

Este escenario es el de tener 1 sola Raspberry Pi, que se encargue ella de todo el proceso; ideal quizá si vamos a hacer un robot o similar, que atienda a la palabra de activación ‘Bender’ Zum Beispiel. Gestartet, necesitamos tener Docker instalado, si no lo tenemos, le damos:

curl -sSL https://get.docker.com | Pst

Tenemos que crear un fichero de configuración para que funcione la tarjeta de sonido de la Raspberry Pi en Docker, le podemos llamar ‘/home/pi/asound.conf.txty le metemos este contenido:

pcm.!Vorgabe {
        type hw
        card 1
}

ctl.!Vorgabe {
        type hw
        card 1
}

Und nichts, levantamos el contenedor con la imagen de Rhasspy, indicando en el perfil el idioma con el que trabajaremos:

sudo docker run -d -p 12101:12101 \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/home/pi/asound.conf.txt:/etc/asound.conf" \
      --device /dev/snd:/dev/snd \
      synesthesiam/rhasspy-server:neueste \
      --user-profiles /profiles \
      --profile es

Una vez el contenedor de Rhasspy esté iniciado, podremos probar que el efectivamente el contenedor accede correctamente al micrófono, que es funcional y graba. Abrimos un bash y probamos:

sudo docker  exec -it ID_CONTENEDOR_RHASSPY bash
arecord -r 16000 -c 1 -f S16_LE test.wav

Podremos ya abrir la gestión de Rhasspy, mediante un navegador web nos conectamos a: HTTP (Englisch)://DIRECCION_IP_RHASSPYl:12101

En el menú superior, podremos ver los servicios que corren en este Rhasspy y al haber dicho que es un Rhasspy solitario deberán correr todos ellos. En el caso que luego veremos, de una instalación en red con varios micrófonos, los roles serán distintos.

También desde este interfaz inicial podremos hacer pruebas de reconocimiento de voz, a ver si nos entiende bien

La primera opción de grabación de sonido o Audio Recording será básicamente la tarjeta de sonido que usaremos para grabar.

En Wake word seleccionaremos la opción que nos interese para reconocimiento de la palabra clave, o de activación; os recomiendo ir probando todos para ver cuál os reconoce mejor, o dependiendo de las palabras claves que ya existan o nos gusten, así como podremos crear una propia. En el ejemplo de la imagen sin complicación, la palabra clave sería ‘Alexa’.

En Speech to Text indicaremos el modelo de recoonocimiento, por defecto Kaldi funciona sin mayor complicación.

Intent Recognition lo usaremos para trabajar con el fichero de sentencias personalizadas que luego crearemos.

Luego en Text to Speech será donde convierta el texto a audio, NanoTTS igualmente funciona a las mil maravillas, y en Language verificaremos que tenemos el que nos interese.

En Audio Playing indicaremos cual es nuestro dispositivo de sonido para reproducir por los altavoces, en caso que tenga que tirar sonidos de que nos entiende o no, así como alguna frase

En Dialogue Management dejaremos Rhasspy.

Und schließlich, en Intent Handling será donde podremos manejar las salidas de Rhasspy, en este caso que se conecte a un Home Assistant y le mande eventos. Luego tendremos automatizaciones en Home Assistant escuchando y esperando eventos para activarse y realizar la tarea que nos interese.

Rhasspy en red (Kunde)

Este otro escenario sería si queremos tener varios micrófonos repartidos por el hogar, no sólo uno. La idea es que en cada Raspberry Pi con un micrófono le hagamos la misma instalación y configuración mínima.

Brunnen, pues la instalación sería exactamente igual que el Rhasspy solitario; simplemente que llevará menos servicios levantados en local. Deberemos indicar que los siguientes servicios corren en el Rhasspy servidor/central:

  • Intent recognition, indicando Remote HTTP y como URL: ‘http://DIRECCION_IP_RHASSPY_SERVIDOR:12101/api/text-to-intent
  • Text-to-Speech, indicando Remote HTTP y como URL: ‘http://192.168.1.216:12101/api/text-to-speech

Rhasspy en red (Server)

In diesem Fall, esta máquina no sería necesario que tenga tarjeta de sonido, ya que ni grabará ni reproducirá nada, así que puedes instalarlo donde quieras, otra Raspberry Pi, o si puedes en una máquina virtual, o donde quieras, gesamt, es un contenedor de DockerLa instalación sería más simple pues:

docker run -d -p 12101:12101 \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      synesthesiam/rhasspy-server:neueste \
      --user-profiles /profiles \
      --profile es

Y la parte de configuración del servidor pues la inversa del cliente, no tendremos Audio Recording, ni Wake Word, ni hará la conversión de Text to Speech ni el Audio Playing.

Sentencias

Una vez tengamos el sistema en funcionamiento, nos reconozca la palabra clave, las frases de prueba, pues toca alimentar un fichero de sentencias o frases en Rhasspy (en el caso de red, esto solo se haría en el lado del servidor).

Desde el segundo icono podremos crear nuestros ficheros con las frases que queremos que intercepte tras escuchar la palabra clave. El bloque entre corchetes será el Evento que generará, y podremos crear variables que mandaremos dentro de los datos del evento, como pueda ser una acción (encender o apagar) y recogerlo como state (Zum Beispiel), y luego el nombre del objeto o lugar y lo recogemos como ‘name’. Os pego unos ejemplos que así lo entendéis mejor, explico fatal:

EstadoLuz]
(enciende | apaga){Zustand} das (lámpara de la sala){Name}
(enciende | apaga){Zustand} das (luz de la cocina){Name}
...
[SubeBajaPersianas]
(baja | sube){Zustand} las (persianas de la sala){Name}
(baja | sube){Zustand} das (persiana del despacho){Name}
...
[TempState]
que temperatura hace en (Haus){Name}
que temperatura hace en la (Straße){Name}
que temperatura hace en la (Küche){Name}
...
[PreguntasVarias]
hay (cartas){Name} en el buzón
mira si hay (cartas){Name}
donde esta (Héctor){Name}
...

Crear un Token en Home Assistant

Cómo seguro que os habéis fijado, en Rhasspy, para enviar las salidas a Home Assistant lo hacemos desde Intent Handling, a parte de indicar la URL de Home Assistant, también deberemos indicar un Token de acceso. Para generar este Token, podrás seguir estos pasos.

Dentro de Home Assistant, desde las opciones del usuario con privilegios de admin, podremos crear Tokens de acceso de larga duración, Anklicken “Crear Token”,

Le indicamos un nombre descriptivo para en un futuro nos acordemos de qué y para qué tenemos esto,

Y copiamos y guardamos en lugar seguro este Token, que será el que le indiquemos a Rhasspy.

Integración de Rhasspy en Home Assistant

Und nichts, si queremos que Home Assistant recoja los mensajes de Rhasspy y los trate, lo haremos de manera sencilla, mediante automatizaciones.

Crearemos una automatización de escucha por cada acción que queramos realizar, lo único a tener en cuenta es que el desencadenante de la automatización será un ‘Evento’, y en ‘Tipo de eventorecogeremos el Evento que generó gracias al fichero de sentencias (con el prefijo rhasspy_ ). Y como datos del evento filtramos qué escuchamos en particular. Así que si queremos que se encienda la calefacción, espero ese evento con los atributos correspondientes a ‘calefaccióny como acción ‘enciende’, y luego las acciones al gusto, cada uno tenéis mucha imaginación y cosas que podéis trastear con Rhasspy.

Gesamt, que post largo, pero que espero que a muchos os pueda orientar siempre que os guste hablar con la casa y con el objeto de securizarlo. Que los micrófonos o nada se conecte a Internet, que nadie nos espíe de manera gratuitaY podamos personalizar la palabra de activación a algo más cercano, y sobre todo que tiene tantas posibilidades como ideas tengamos.

Os mando un abrazo a todos y todas, Sei glücklich, gracias a todos los que movéis este tipo de contenidos en redes sociales.

Empfohlene Beiträge

Verfasser

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Zögern Sie nicht, mich zu kontaktieren, Ich werde versuchen, dir zu helfen, wann immer ich kann, Teilen ist Leben ;) . Genießen Sie Dokumente!!!