分类 Linux 下的文章

Home Assistant下的Alexa

有几种方法可以一起使用Amazon Echo和Home Assistant。

无论您决定使用哪种方法,请记住,Amazon Echo需要有效的Internet连接才能运行。如果您的互联网失灵或遇到问题(或亚马逊的基础设施出现问题),则这些方法都不会起作用。

亚马逊已经发布了Echosim,这是一个在浏览器中模拟Alexa服务的网站。这样就可以轻松测试您的技能,而无需访问物理Amazon Echo。

如果您只想打开或关闭交换机(如灯,开关,媒体播放器等),您应该启用仿真灯组件。它使您的家庭助理显得好像是一个Phillips Hue桥梁,Echo与本机一起工作。

启用仿真色调组件意味着您可以通过简单地说出来打开和关闭东西

Alexa,打开客厅灯。

要么

Alexa,将客厅灯设置为百分之二十。

代替

Alexa,告诉家庭助理打开客厅灯。

要么

Alexa,告诉家庭助理将客厅灯设置为百分之二十。

此外,您将需要使用以下方法为每个设备和开/关组合构建自定义意图,而一切只是通过使用模拟色调无需任何额外的工作。

请注意,如果您愿意,可以并排使用模拟色相和内置的Alexa组件。

内置的Alexa组件允许您将Home Assistant集成到Alexa / Amazon Echo中。该组件将允许您使用您的语音查询Home Assistant中的信息和呼叫服务。家庭助理不提供内置句子,但为您定义自己的框架提供了一个框架。

阅读全文

Home Assistant 的 IFTTT设置

IFTTT是一种Web服务,允许用户创建简单的条件语句链,即所谓的“Applet”。通过IFTTT组件,您可以通过“Maker”通道触发小程序。请参阅公告博客文章,了解如何使用它。

key是可以通过观察来获得API密钥设置所述的Maker Channel。这是网址的最后一部分。

将密钥添加到configuration.yaml文件后,重启Home Assistant服务器。这将加载IFTTT组件并提供服务来触发IFTTT中的事件。

重启服务器后,请确保查看控制台出现任何以红色,白色或黄色显示的记录错误。

您可以使用开发工具测试您的Maker Channel触发器。要做到这一点,打开Home Assistant前端,打开边栏,点击开发工具中的第一个图标。这应该让您进入Call Service界面。填写以下值:

新建小程序按钮并搜索Maker

IFTTT也可以用于脚本和data_template。以上是使用变量和data_templates的自动化和脚本的上述自动化。

为了能够从IFTTT接收事件,需要从Web访问Home Assistant实例。这可以通过将端口8123从您的路由器转发到运行Home Assistant的设备来实现。如果你的ISP正在给你一个新的IP地址,请考虑使用DuckDNS

阅读全文

Xiaomi Mi Home Binary Protocol

The Mi Home Binary Protocol is used to configure & control smart home devices made by Xiaomi.

It is an encrypted, binary protocol, based on UDP. The designated port is 54321.

Client → Device

This is what I call the "Hello packet". The client can send it as often as they want and they will always get the same reply:

Device → Client

The 128-bit token is used to identify the device and, more importantly, to encrypt all further communication.

Update 2017-02-23: Xiaomi updated the device firmwares and only uninitialized devices reveal their token now.

The variable-sized data payload is encrypted with the Advanced Encryption Standard (AES). A 128-bit key and Initialization Vector are both derived from the Token as follows:

PKCS#7 padding is used prior to encryption.

The mode of operation is Cipher Block Chaining (CBC).

Most payloads are JSON commands, documented in the "Yeelight Inter-Operation Spec".

One critical exception is the transmission of the user's WiFi credentials:

This document is part of the OpenMiHome project. Authors include:

阅读全文

使用Actions on Google和API.AI构建会话式应用

一些语音识别技术供应商会为移动设备的第三方开发者们提供语音识别的API,让其自行开发具备语音识别能力的应用,比如科大讯飞、百度等。而Speaktoit旗下的开放平台Api.ai,这次是将API开放到了车载平台上。具体是个什么玩法捏?

14416497396256.jpg

让开发者自行开发的开放平台

Speaktoit于五年前在加州成立,提供语音识别服务。Api.ai是Speaktoit公司的第二款产品,是允许开发者们自行为智能互联设备开发语音交互能力的一个平台。最近这个平台开放了车载应用的API,让汽车制造商、第三方开发者都能够借此平台自行进行语音交互能力的开发与定制,平台仅提供技术支持。除了汽车之外,还可以进行移动设备、智能手表、智能家居、智能电视以及机器人的语音交互的开发。

4bf58ce62b39a7c6a942e94ea6b1699c.png

与其说Api.ai是一个平台,倒不如说这是一个只要注册了就能使用的开发工具。开发者可以按照Api.ai上的流程,对语音交互的应用场景、识别内容、交互界面等等进行定义,Api.ai则会根据你的定义,给出相关代码等,便于开发者增加到App之中。

Api.ai运行在Speaktoit的自然语音处理引擎之上,能够理解自然语言,进行语音识别、声音识别,并提供语音转文字等服务。而且,根据官网介绍,Api.ai使用的是深度学习技术,能够在使用过程中学习并提升能力。

与任何操作系统兼容,支持中文

那么,对于车企来说,要使用Api.ai,需要做点什么呢?主要的工作是定义出语音交互的应用场景,按照Api.ai的规则,是定义出每个场景的Entity、Intent以及Context。

阅读全文

从api.ai工作原理来看构建简单场景chatbot的一般方法

chatbot是场交互革命,也是一个多技术融合的平台。上图给出了构建一个chatbot需要具备的组件,简单地说chatbot = NLU(Natural Language Understanding) + NLG(Natural Language Generation).(本文只关注NLP相关的技术,对语音识别并无讨论)

对于封闭域的chatbot,NLU的工作就是DST(Dialog State Tracker),用户给出输入之后,系统可以给出下面的形式作为state:

Act(Slot=Value)

Act表示用户行为的类型,比如请求、查询、打招呼等等;Slot表示用户输入中包含的某种Act下的Entity,比如查询酒店的位置、价格这些实体;Value是指Slot中Entity对应的值,比如位置在北边,价格在500-800之间等等。每一句话中可能包括多个Act-Slot-Value对,chatbot需要做的事情就是准确地识别出Act,并且抽取出相应的Slot和Value。

紧接着是NLG的部分,前几天在PaperWeekly第二期中分享了三篇paper,其中两篇正是研究基于DST的NLG问题。

本文首先从api.ai这家企业提供的服务说起,通过研究其提供的封闭域bot构建技术,来提炼构建简单场景chatbot的一般方法,为构建复杂场景或者找出现有chatbot存在的技术问题和面临的技术难点打下基础。

Api.ai provides developers and companies with the advanced tools they need to build conversational user interfaces for apps and hardware devices.

阅读全文