From 9c983725948159a7f632dff511f43cc6fd233044 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 20 Nov 2019 16:19:24 -0800 Subject: [PATCH] More updates --- source/_integrations/almond.markdown | 8 ++++++++ ...-20-privacy-focused-voice-assistant.markdown | 16 ++++++++-------- source/_posts/2019-11-20-release-102.markdown | 4 ++-- source/images/blog/2019-11-0.102/components.png | Bin 0 -> 18176 bytes .../almond.png | Bin .../overview.svg | 0 .../telegram.png | Bin 7 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 source/images/blog/2019-11-0.102/components.png rename source/images/blog/{2019-voice-assistant => 2019-11-voice-assistant}/almond.png (100%) rename source/images/blog/{2019-voice-assistant => 2019-11-voice-assistant}/overview.svg (100%) rename source/images/blog/{2019-voice-assistant => 2019-11-voice-assistant}/telegram.png (100%) diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown index 3da27007a39..b436377e2bb 100644 --- a/source/_integrations/almond.markdown +++ b/source/_integrations/almond.markdown @@ -58,3 +58,11 @@ almond: ``` You can now go to the integrations page and start the configuration flow. + +## Language Support + +Almond is currently limited to the English language. This is not a technical limitation but requires specialized engineering effort. Almond has currently no public timeline for adding other languages. + +## Device Support + +Almond is constantly improving. It does not currently support all devices, but we're working with Almond on improving this. diff --git a/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown b/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown index 376a8c28cc6..8e90a1804d7 100644 --- a/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown +++ b/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown @@ -2,13 +2,13 @@ layout: post title: "Almond & Ada: privacy-focused voice assistant" description: "Say Hi! to Almond, a privacy-focused virtual assistant and Ada, a voice assistant powered by Home Assistant." -date: 2019-11-14 0:43:02 +date: 2019-11-20 0:43:02 date_formatted: "November 20, 2019" author: Paulus Schoutsen author_twitter: balloob comments: true categories: Announcements -og_image: /images/blog/2019-voice-assistant/almond.png +og_image: /images/blog/2019-11-voice-assistant/almond.png --- TL;DR: @@ -33,9 +33,9 @@ Recently we got in touch with the [Open Virtual Assistant Lab at Stanford Univer [Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant that is open source. With Almond, you can run a virtual assistant at home, that can tell you the news or control your house. It is powered by [LUInet](https://almond.stanford.edu/doc/genie-intro.md), a state-of-the-art neural network developed at Stanford. And it now works with Home Assistant. -The Almond team has updated Almond to make it aware of all the different device types in Home Assistant and allow Almond to control them. In turn, we have upgraded the conversation integration in Home Assistant to support Almond, allowing users to converse with Almond via the frontend. +The Almond team has updated Almond to make it aware of the different device types in Home Assistant and allow Almond to control them. In turn, we have upgraded the conversation integration in Home Assistant to support Almond, allowing users to converse with Almond via the frontend. -

Screenshot showing Almond integration in Home Assistant.Screenshot showing Almond integration in Home Assistant.

+

Screenshot showing Almond integration in Home Assistant.Screenshot showing Almond integration in Home Assistant.

Almond is available to users today in Home Assistant 0.102. It requires an Almond Server, which you can either install yourself, use the new Almond Hass.io add-on or rely on Almond Web, a cloud version hosted by Stanford. By default, Almond Server will rely on a cloud version of LUInet, but it is possible to run it locally. @@ -51,7 +51,7 @@ Almond has room for improvement. But it's open source, and with the Home Assista Almond is gathering sentences that you want to use to control the devices in your home. We already have a basic set of sentences, but the more, the better. You can submit those sentences [using this form](https://docs.google.com/forms/d/e/1FAIpQLSeStJfjvueNAiueRVmP47XALRaJlx7tttzJjRfVjX4J546-uA/viewform). -You are also able to help train LUInet directly by teaching it how to interpret sentences [here](https://almond.stanford.edu/developers/train). +You are also able to help train LUInet directly by teaching it how to interpret sentences [in the training console](https://almond.stanford.edu/developers/train). ## Ada @@ -59,7 +59,7 @@ Almond is not the full story. Almond only works with text input, and generates t Now we almost have all the pieces for a voice assistant built-in to Home Assistant, and so we decided to finish it off by introducing a new project called [Ada](https://github.com/home-assistant/ada). Ada integrates hotword detection and will route all data to the various integrations to provide a full voice assistant experience. -Architectural overview of how all pieces fit together. +Architectural overview of how all pieces fit together. Ada is still very much in the beginning. We'll be working on improving it. If you have expertise in this area and want to help, please get in touch. @@ -79,7 +79,7 @@ But we also want privacy to be accessible. A user should be able to get a privat With the current approach, some things will still run in the cloud, but the home data and control stays local. We will bring more things local when faster technology becomes more accessible or new projects emerge that can help with this. -We cannot wait until all the pieces are in place to run 100% locally. We need to help build the future we want to see. +We don't want to wait with integrating this until all the pieces run 100% locally. We need to help build the future we want to see. ## What's next? @@ -89,4 +89,4 @@ With Almond and Ada, we've put the building blocks in place to create voice assi I hacked together a quick prototype to allow you to talk to Almond via a Telegram Bot! It's available as a [custom component](https://gist.github.com/balloob/d59cae89d19a14bcec99ce1bde05bd44). -

Screenshot of talking to Almond via Telegram.Screenshot of talking to Almond via Telegram.

+

Screenshot of talking to Almond via Telegram.Screenshot of talking to Almond via Telegram.

diff --git a/source/_posts/2019-11-20-release-102.markdown b/source/_posts/2019-11-20-release-102.markdown index fea910694f8..124d37999eb 100644 --- a/source/_posts/2019-11-20-release-102.markdown +++ b/source/_posts/2019-11-20-release-102.markdown @@ -1,8 +1,8 @@ --- layout: post title: "0.102: Official Android App, Almond, Scene editor" -description: "TBD" -date: 2019-11-14 0:41:02 +description: "Download the Android app, install a private voice assistant and easy OAuth2 account linking." +date: 2019-11-20 0:41:02 date_formatted: "November 20, 2019" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/images/blog/2019-11-0.102/components.png b/source/images/blog/2019-11-0.102/components.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bebd283007b611ba55b774bdfe2576e5593fe7 GIT binary patch literal 18176 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