Site updated at 2018-02-21 02:48:55 UTC
This commit is contained in:
parent
0eb54c6ee8
commit
707c0ff7bb
27 changed files with 105 additions and 110 deletions
|
@ -81,40 +81,45 @@
|
|||
<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><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>
|
||||
<p>Snips can also be installed on a Debian/Ubuntu machine as well:</p>
|
||||
<p>The Snips platform can be installed via the Snips APT/Debian repository. If you prefer to install the platform using the Docker distribution, check out our <a href="https://github.com/snipsco/snips-platform-documentation/wiki/6.--Miscellaneous#using-docker">Docker Installation Guide</a>.</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 bash -c <span class="s1">'echo "deb https://raspbian.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 D4F50CDCA10A2849
|
||||
<span class="gp">$ </span>sudo apt-get update
|
||||
<span class="gp">$ </span>sudo apt-get install -y snips-platform-voice
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>Note: if the keyserver pgp.mit.edu is down try to use another one in the 4th line , like pgp.surfnet.nl:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849
|
||||
</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-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip
|
||||
<p>Head over to the <a href="https://console.snips.ai">Snips Console</a> to create your assistant. Launch the training and download by clicking on the “Download Assistant” button.</p>
|
||||
<p>The next step is to get the assistant to work on your device. Unzip and copy the assistant folder that you downloaded from the web console to the path. Assuming your downloaded assistant folder is on your desktop, just run:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>scp -r ~/Desktop/assistant pi@<raspi_hostname.local_or_IP>:/home/pi/.
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>and installed locally via the <code class="highlighter-rouge">snips-install-assistant</code> helper script:</p>
|
||||
<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
|
||||
<p>Now ssh into your Raspberry Pi:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ssh pi@<raspi_hostname.local_or_IP>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>By default, this command is <code class="highlighter-rouge">ssh pi@raspberrypi.local</code>, if you are using the default Raspberry Pi hostname.</p>
|
||||
<p>Then, move the assistant to the right folder:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>sudo mv /home/pi/assistant /usr/share/snips/assistant
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>Note: if you already have an assistant installed and wish to replace it, start by removing the previous one, and then move the new one in its place:</p>
|
||||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>sudo rm -r /usr/share/snips/assistant
|
||||
<span class="o">(</span>pi<span class="o">)</span> <span class="nv">$ </span>sudo mv /home/pi/assistant /usr/share/snips/assistant
|
||||
</code></pre>
|
||||
</div>
|
||||
<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>
|
||||
<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>
|
||||
<p>Start the Snips Voice Platform by starting the <code class="highlighter-rouge">snips-*</code> services:</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>
|
||||
|
@ -126,37 +131,26 @@
|
|||
<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/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>
|
||||
<p>As the Snips Platform parses this query into an intent, it will be published on MQTT, on the <code class="highlighter-rouge">hermes/intent/<intentName></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>
|
||||
<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>
|
||||
<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, we need to specify this in the <code class="highlighter-rouge">/etc/snips.toml</code> configuration file. For more information on configuring this, see the <a href="https://github.com/snipsco/snips-platform-documentation/wiki/6.--Miscellaneous#using-external-mqtt-broker">Using an external MQTT broker</a> article.</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>
|
||||
<p>Messages between Snips and Home Assistant are passed via MQTT. We can either point Snips to the MQTT broker used by Home Assistant, as explained above, or 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>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>As explained above, Snips by default runs an MQTT broker on port 9898. So if we wish to use this broker, the entry will look as follows:</p>
|
||||
<p>By default, Snips runs an MQTT broker on port 9898. So if we wish to use this broker, and if Snips and Home Assistant run on the same device, the entry will look as follows:</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">127.0.0.1</span>
|
||||
<span class="s">port</span><span class="pi">:</span> <span class="s">9898</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<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>
|
||||
<p>Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as <a href="https://mosquitto.org/">mosquitto</a>.</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>
|
||||
<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 a <code class="highlighter-rouge">ActivateLightColor</code> intent to change light colors:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">snips</span><span class="pi">:</span>
|
||||
|
||||
<span class="s">intent_script</span><span class="pi">:</span>
|
||||
|
@ -168,8 +162,9 @@
|
|||
<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>
|
||||
<p>In the <code class="highlighter-rouge">data_template</code> block, we have access to special variables, corresponding to the slot names for the intent. In the present case, the <code class="highlighter-rouge">ActivateLightColor</code> has two slots, <code class="highlighter-rouge">objectLocation</code> and <code class="highlighter-rouge">objectColor</code>.</p>
|
||||
<h3><a class="title-link" name="special-slots" href="#special-slots"></a> Special slots</h3>
|
||||
<p>In the above example, the slots are plain strings. However, when more complex types are used, such as dates or time ranges, they will be transformed to rich Python objects, for example:</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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue