拉斯间谍 – Home Assistant 中的安全语音控制 (西班牙语)

对于我们所有拥有 Home Assistant 并有兴趣通过语音控制它的人, 说, Alexa 或 Google Home 的替代品, 好吧,我们有 Rhasspy. 为什么选择 Rhasspy? 为什么我们的麦克风无法连接到互联网, 没有人会听我们的,它将是完全安全和可定制的, 开始!

我有一个 obsession 是到处都能看到控制现代家庭的麦克风,, 这些智能家居设备,. 麦克风在我们的家中监听,而我们不知道背后是谁,或者他们以什么目的提供免费的服务, ;-). 我在家里试过一次 Google 或 Amazon 的这款麦克风,惊讶于它24小时产生的连接和流量,, 我觉得在物联网时代,我们不应该与第三方共享任何类型的数据,, 无论是我们洗衣机运作时,, 还是吸尘器清理的平方公尺数,, 或者进行地理定位,… 以避免我们成为产品,.

所以经过长时间观察和尝试替代方案,, 最佳选择绝对是 Rhasspy,, 它简单,, 且功能非常全面。, 我们可以做很多小事情, 发送动作, 提出问题, 对话… 然后执行操作并将其与 Home Assistant 集成以执行自动化. 当然,我们可以用西班牙语交流 (西班牙语) 或任何其他支持的语言 (英语, 德语, 西班牙语, 法语, 意大利语, 德语, 俄语, 希腊语, 印地语, 普通话, 越南语, 葡萄牙语, 瑞典语或加泰罗尼亚语等。)

Rhasspy 可以以本地模式安装, 在一台 Raspberry 上安装一切, 这是, 带有麦克风的设备, 等待唤醒关键词, 录制我们提出的问题/命令,然后处理以理解,并调用相应的 Hassio 自动化. 但理想情况下, 我们不只是家里有一个麦克风, 而是在各个房间分布多个麦克风, así que Rhasspy se puede instalar digamos en modo cliente con lo mínimo, 去, 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ófono… Y por últimisimo, por si a alguien le interesa, se podría instalar directamente sobre Home Assistant

井, 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’ 例如. 开始, necesitamos tener Docker instalado, 如果我们没有, 是:

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

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.txt’ y le metemos este contenido:

pcm.!违约 {
        type hw
        card 1
}

ctl.!违约 {
        type hw
        card 1
}

什么都没有, 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 \
      --重启除非停止 \
      -v "$HOME/.config/rhasspy/profiles:/配置 文件" \
      -v "/home/pi/asound.conf.txt:/etc/asound.conf" \
      --设备 /dev/snd:/dev/snd \
      synesthesiam/rhasspy-server:最近的 \
      --用户配置 /profiles \
      --配置 es

一旦 Rhasspy 容器启动, 我们可以测试容器是否正确访问麦克风, 它是可用的并能录音. 打开一个 bash 并测试:

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

我们可以打开 Rhasspy 管理界面, 通过网页浏览器连接到: HTTP 协议://DIRECCION_IP_RHASSPYl:12101

在顶部菜单, 我们可以看到这个 Rhasspy 上运行的服务,由于它是一个独立的 Rhasspy,应该所有服务都在运行. 在后面我们会看到, 在一个有多个麦克风的网络安装情况下, 角色将会不同.

同样从这个初始界面我们也可以进行语音识别测试, 看看它是否能正确理解我们…

第一个声音录制或 Audio Recording 选项基本上就是我们用来录音的声卡.

在唤醒词(Wake word)中选择我们感兴趣的选项用于关键字识别, 或激活词识别; 我建议你们试试所有选项,看哪个识别效果最好, 或者根据已有的关键字或者我们喜欢的关键字, 同样我们也可以创建自己的关键字. 在图中的示例中,没有复杂操作, 关键字将是 'Alexa'.

在语音转文本(Speech to Text)中我们将指定识别模型, 默认情况下,Kaldi 可以直接使用,没有太大复杂性.

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.

最后, 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. 然后我们将会在Home Assistant中进行自动化监听,等待事件的触发以执行我们感兴趣的任务.

Rhasspy在网络中 (客户)

另一个场景是如果我们想在家中分布多个麦克风, 而不仅仅是一个. 我们的想法是在每个带麦克风的Raspberry Pi上进行相同的安装和最小配置.

井, 因为安装过程和孤立的Rhasspy是完全一样的; 只不过本地运行的服务会少一些. 我们需要指明以下服务在Rhasspy服务器/中央运行:

  • 意图识别, 指定为远程HTTP,URL为: 'http://DIRECCION_IP_RHASSPY_SERVIDOR:12101/api/text-to-intent’
  • 文本到语音, 指定为远程HTTP,URL为: 'http://192.168.1.216:12101/api/text-to-speech’

Rhasspy在网络中 (服务器)

在这种情况下, esta máquina no sería necesario que tenga tarjeta de sonido, ya que ni grabará ni reproducirá nada, 所以你可以把它安装在任何你想要的地方, 另一台树莓派, 或者如果可以的话,在虚拟机上, 或者任何地方, 总, 这是一个Docker容器… 安装会更简单:

docker run -d -p 12101:12101 \
      --重启除非停止 \
      -v "$HOME/.config/rhasspy/profiles:/配置 文件" \
      synesthesiam/rhasspy-server:最近的 \
      --用户配置 /profiles \
      --配置 es

服务器配置部分就是客户端的反向设置, 我们不会有音频录制, 也不会有唤醒词, 也不会进行文本转语音或音频播放.

语句

一旦系统运行起来, 能识别关键字, 测试语句, 那就需要在Rhasspy中提供一个语句或短语文件 (在网络情况下, 这只会在服务器端进行).

从第二个图标我们可以创建包含想在听到关键字后拦截的短语的文件. 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 (例如), 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){州} 这 (lámpara de la sala){名字}
(enciende | apaga){州} 这 (luz de la cocina){名字}
...
[SubeBajaPersianas]
(伤亡 | sube){州} 这些 (persianas de la sala){名字}
(伤亡 | sube){州} 这 (persiana del despacho){名字}
...
[TempState]
que temperatura hace en (房子){名字}
que temperatura hace en la (街){名字}
que temperatura hace en la (厨房){名字}
...
[PreguntasVarias]
hay (cartas){名字} en el buzón
mira si hay (cartas){名字}
donde esta (Héctor){名字}
...

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, 点击 “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

什么都没有, si queremos que Home Assistant recoja los mensajes de Rhasspy y los trate, lo haremos de manera sencilla, mediante automatizaciones.

我们将为每个我们想要执行的操作创建一个监听自动化, 唯一需要注意的是,这个自动化的触发器将是一个‘事件’, 在‘事件类型’中’ 我们将收集由于句子文件生成的事件 (带有前缀 rhasspy_ ). 作为事件的数据,我们过滤出我们特别听到的内容. 所以如果我们想要打开暖气, 我期待那个事件,带有对应于‘暖气’的属性’ 作为动作‘开启’, 然后根据喜好执行动作, 每个人都有丰富的想象力,可以与 Rhasspy 尝试许多事情.

总, 这是一篇很长的帖子, 但我希望这能为许多人提供指导,只要你们喜欢与家以及确保安全的物品进行交流. 麦克风或其他设备不要连接到互联网, 没有人可以免费监视我们… 我们能够将激活词自定义为更亲近的内容, 尤其是它拥有与我们拥有的创意一样多的可能性.

我向大家送上一个拥抱, 很高兴, 感谢所有在社交网络上传播这种内容的人.

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!