Site updated at 2017-12-17 16:27:07 UTC
This commit is contained in:
parent
4e546d5869
commit
db3021af91
919 changed files with 15842 additions and 3639 deletions
|
@ -74,32 +74,48 @@
|
|||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>The <a href="https://www.snips.ai">Snips Voice Platform</a> allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on Privacy. It runs 100% on-device, and does not require an Internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management.</p>
|
||||
<p>The <a href="https://www.snips.ai">Snips Voice Platform</a> allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management.</p>
|
||||
<p>The latest documentation can be found here: <a href="https://github.com/snipsco/snips-platform-documentation/wiki">Snips Platform Documentation</a>.</p>
|
||||
<p><img src="/images/screenshots/snips_modules.png" alt="Snips Modules" /></p>
|
||||
<p>Snips takes voice or text as input, and produces <em>intents</em> as output, which are explicit representations of an intention behind an utterance, and which can subsequently be used by Home Assistant to perform appropriate actions.</p>
|
||||
<p>Snips takes voice or text as input and produces <em>intents</em> as output, which are explicit representations of an intention behind an utterance and which can subsequently be used by Home Assistant to perform appropriate actions.</p>
|
||||
<p><img src="/images/screenshots/snips_nlu.png" alt="Snips Modules" /></p>
|
||||
<h2><a class="title-link" name="the-snips-voice-platform" href="#the-snips-voice-platform"></a> The Snips Voice Platform</h2>
|
||||
<h3>Installation</h3>
|
||||
<p>The Snips Voice Platform is installed on Raspberry Pi with the following command:</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>curl https://install.snips.ai -sSf | sh
|
||||
<h3><a class="title-link" name="installation" href="#installation"></a> Installation</h3>
|
||||
<p>The Snips Voice Platform is installed as a Docker image on Raspberry Pi with the following command:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>curl https://install.snips.ai -sSf | sh
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3>Creating an assistant</h3>
|
||||
<p>Snips can also be installed on a Debian/Ubuntu machine as well:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get update
|
||||
<span class="gp">$ </span>sudo apt-get install -y dirmngr
|
||||
<span class="gp">$ </span>sudo bash -c <span class="s1">'echo "deb https://debian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list'</span>
|
||||
<span class="gp">$ </span>sudo apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455
|
||||
|
||||
<span class="gp">$ </span>sudo apt-get update
|
||||
<span class="gp">$ </span>sudo apt-get install -y snips-platform-voice
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3><a class="title-link" name="creating-an-assistant" href="#creating-an-assistant"></a> Creating an assistant</h3>
|
||||
<div class="videoWrapper">
|
||||
<iframe src="https://player.vimeo.com/video/223255884" width="700" height="380" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
|
||||
</div>
|
||||
<p>Snips assistants are created via the <a href="https://console.snips.ai">Snips Console</a>. Once trained, the assistant should be downloaded and copied to the Raspberry Pi:</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>and installed locally via the <code class="highlighter-rouge">snips-install-assistant</code> helper script:</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>sudo snips-install-assistant assistant.zip
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>sudo snips-install-assistant assistant.zip
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3>Running Snips</h3>
|
||||
<h3><a class="title-link" name="running-snips" href="#running-snips"></a> Running Snips</h3>
|
||||
<p>Make sure that a microphone is plugged to the Raspberry Pi. If you are having trouble setting up audio, we have written a guide on <a href="https://github.com/snipsco/snips-platform-documentation/wiki/1.-Setup-the-Snips-Voice-Platform-on-your-Raspberry-Pi#configuring-the-audio">Raspberry Pi Audio Configuration</a>.</p>
|
||||
<p>Start the Snips Voice Platform using the <code class="highlighter-rouge">snips</code> command:</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>snips
|
||||
<p>Raspberry Pi:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>snips
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>Debian/Ubuntu:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo systemctl start <span class="s2">"snips-*"</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>Snips is now ready to take voice commands from the microphone. To trigger the listening, simply say</p>
|
||||
|
@ -110,16 +126,23 @@
|
|||
<blockquote>
|
||||
<p>Set the lights to green in the living room</p>
|
||||
</blockquote>
|
||||
<p>We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the <code class="highlighter-rouge">hermes/nlu/intentParsed</code> topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in <code class="highlighter-rouge">configuration.yaml</code>, as explained below.</p>
|
||||
<h4>Optional: specifying an external MQTT broker</h4>
|
||||
<p>We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the <code class="highlighter-rouge">hermes/intent/<slotName></code> topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in <code class="highlighter-rouge">configuration.yaml</code>, as explained below.</p>
|
||||
<h4><a class="title-link" name="optional-specifying-an-external-mqtt-broker" href="#optional-specifying-an-external-mqtt-broker"></a> Optional: specifying an external MQTT broker</h4>
|
||||
<p>By default, Snips runs its own MQTT broker. But we can also tell Snips to use an external broker by specifying this when launching Snips. In this case, instead of running the <code class="highlighter-rouge">snips</code> command above (which assumes we are using the internal MQTT broker), we use the full launch command with explicitly specified parameters (replace <code class="highlighter-rouge">MQTT_BROKER_IP</code> and <code class="highlighter-rouge">MQTT_BROKER_PORT</code> with appropriate values):</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>docker run -t --rm --name snips --log-driver none -v /home/pi/.asoundrc:/root/.asoundrc -v /opt/snips/config:/opt/snips/config --privileged -v /dev/snd:/dev/snd snipsdocker/platform --mqtt MQTT_BROKER_IP:MQTT_BROKER_PORT
|
||||
<p>Raspberry Pi:</p>
|
||||
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>docker run -t --rm --name snips --log-driver none <span class="se">\</span>
|
||||
-v /home/pi/.asoundrc:/root/.asoundrc <span class="se">\</span>
|
||||
-v /opt/snips/config:/opt/snips/config <span class="se">\</span>
|
||||
--privileged -v /dev/snd:/dev/snd snipsdocker/platform <span class="se">\</span>
|
||||
--mqtt MQTT_BROKER_IP:MQTT_BROKER_PORT
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>Debian/Ubuntu:</p>
|
||||
<p>Edit the <code class="highlighter-rouge">/etc/snips.toml</code> file. See snips documentation for more information on configuring this</p>
|
||||
<p>For more details on launch options, check the documentation on <a href="https://github.com/snipsco/snips-platform-documentation/wiki/6.--Learn-more:-Platform-Commands#using-a-custom-mqtt-bus">Snips Platform Commands</a>.</p>
|
||||
<h2>Home Assistant configuration</h2>
|
||||
<h3>Specifying the MQTT broker</h3>
|
||||
<p>Messages between Snips and Home Assistant are passed via MQTT. We must tell Home Assistant which MQTT broker to use by adding the following entry to <code class="highlighter-rouge">configuration.yaml</code>:</p>
|
||||
<h2><a class="title-link" name="home-assistant-configuration" href="#home-assistant-configuration"></a> Home Assistant configuration</h2>
|
||||
<h3><a class="title-link" name="specifying-the-mqtt-broker" href="#specifying-the-mqtt-broker"></a> Specifying the MQTT broker</h3>
|
||||
<p>Messages between Snips and Home Assistant are passed via MQTT. We must tell Home Assistant which <a href="/docs/mqtt/">MQTT broker</a> to use by adding the following entry to the <code class="highlighter-rouge">configuration.yaml</code> file:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">mqtt</span><span class="pi">:</span>
|
||||
<span class="s">broker</span><span class="pi">:</span> <span class="s">MQTT_BROKER_IP</span>
|
||||
<span class="s">port</span><span class="pi">:</span> <span class="s">MQTT_BROKER_PORT</span>
|
||||
|
@ -131,7 +154,8 @@
|
|||
<span class="s">port</span><span class="pi">:</span> <span class="s">9898</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3>Triggering actions</h3>
|
||||
<p>Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as <code class="highlighter-rouge">mosquitto</code>.</p>
|
||||
<h3><a class="title-link" name="triggering-actions" href="#triggering-actions"></a> Triggering actions</h3>
|
||||
<p>In Home Assistant, we trigger actions based on intents produced by Snips using the <a href="/components/intent_script"><code class="highlighter-rouge">intent_script</code></a> component. For instance, the following block handles <code class="highlighter-rouge">ActivateLightColors</code> intents (included in the Snips IoT intent bundle) to change light colors:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">snips</span><span class="pi">:</span>
|
||||
|
||||
|
@ -144,6 +168,22 @@
|
|||
<span class="s">color_name</span><span class="pi">:</span> <span class="pi">{{</span> <span class="nv">objectColor</span> <span class="pi">}}</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>The variables that can be used in the template are of the form ‘slotName = value’.</p>
|
||||
<p>Snips intents that utilize builtin slot types will contain extended information along with the value and can be exposed using this format:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">SetTimer</span><span class="pi">:</span>
|
||||
<span class="s">speech</span><span class="pi">:</span>
|
||||
<span class="s">type</span><span class="pi">:</span> <span class="s">plain</span>
|
||||
<span class="s">text</span><span class="pi">:</span> <span class="s">weather</span>
|
||||
<span class="s">action</span><span class="pi">:</span>
|
||||
<span class="s">service</span><span class="pi">:</span> <span class="s">script.set_timer</span>
|
||||
<span class="s">data_template</span><span class="pi">:</span>
|
||||
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{</span><span class="nv"> </span><span class="s">timer_name</span><span class="nv"> </span><span class="s">}}"</span>
|
||||
<span class="s">duration</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{</span><span class="nv"> </span><span class="s">timer_duration</span><span class="nv"> </span><span class="s">}}"</span>
|
||||
<span class="s">seconds</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{</span><span class="nv"> </span><span class="s">slots.timer_duration.value.seconds</span><span class="nv"> </span><span class="s">}}"</span>
|
||||
<span class="s">minutes</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{</span><span class="nv"> </span><span class="s">slots.timer_duration.value.minutes</span><span class="nv"> </span><span class="s">}}"</span>
|
||||
<span class="s">hours</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{</span><span class="nv"> </span><span class="s">slots.timer_duration.value.hours</span><span class="nv"> </span><span class="s">}}"</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
|
@ -162,6 +202,9 @@
|
|||
<li>
|
||||
<a href='/components/alexa/'>Alexa / Amazon Echo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='/components/cloud/'>Cloud</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href='/components/conversation/'>Conversation</a>
|
||||
</li>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue