tag:linuxfr.org,2005:/tags/mycroft/publicLinuxFr.org : les contenus étiquetés avec « mycroft »2018-05-14T14:00:16+02:00/favicon.pngtag:linuxfr.org,2005:Diary/379282018-05-10T14:51:54+02:002018-05-10T14:51:54+02:00Optimiser la recherche Web dans FirefoxLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 id="le-contexte--basculement-vers-lapi-webextensions">Le contexte : basculement vers l'API WebExtensions</h2>
<p>Le passage à l'API WebExtensions avec Firefox 57 Quantum a rendu obsolètes un certain nombre d'extensions.</p>
<p>Il a tout d'abord fallu muscler l'API pour permettre aux extensions populaires (NoScript…) d'êtres disponibles (plus ou moins) au lancement.<br>
Cet effort pour muscler l'API se poursuit au fur et à mesure des versions, dans l'espoir de couvrir à peu près le même spectre que précédemment.</p>
<h2 id="mes-extensions-pour-compléter-firefox-et-leur-migration-ou-non-vers-la-nouvelle-api">Mes extensions pour compléter Firefox et leur migration (ou non) vers la nouvelle API</h2>
<p>Parmi les extensions qui me faisaient gagner du temps et limitaient le pistage de ma navigation sur le Web [1], il y avait le duo d'extensions libres <strong>Add to Search Bar</strong> / <strong>Context Search</strong> <a href="http://libre-ouvert.toile-libre.org/?article28/l-extension-du-jour-context-search-pour-firefox">que je présentais alors sur mon blogue</a>.</p>
<p><a href="https://addons.mozilla.org/fr/firefox/addon/add-to-search-bar/">La première</a> permet, pour tout champ de recherche présent dans une page Web, de générer un moteur de recherche au sein de Firefox.<br>
C'est une alternative plus rapide et complète à l'excellent site de moteurs de recherche au format OpenSearch <a href="http://mycroftproject.com/">Mycroft Project</a> (ou au mécanisme interne à Firefox : voir le tire suivant).<br>
Hélas, à ce jour « Add to Search Bar » n'est pas compatible avec les versions 57 et supérieures de Firefox.</p>
<p><a href="https://addons.mozilla.org/fr/firefox/addon/context-search/">La deuxième</a>, assez géniale, permet, d'un clic droit, d'envoyer n'importe quelle chaîne de caractères préalablement surlignée vers le moteur de recherche de son choix parmi ceux disponibles dans votre exemplaire de Firefox.<br>
Bonne nouvelle : <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1352598">l'API WebExtensions est en train d'être étendue pour permettre à Context Search de renaître sur Firefox Quantum</a>. Merci à son auteur, Ben Basson, pour sa ténacité. De mon côté, je suis <a href="https://hooktube.com/watch?v=8iwBM_YB1sE">plus qu'impatient</a> !</p>
<h2 id="et-firefox-lui-même-dans-tout-ça">Et Firefox lui-même dans tout ça ?</h2>
<p>Depuis Firefox 57 Quantum (encore lui !), les installations par défaut de Firefox présentent une barre unifiée pour l'adresse et la recherche (cette présentation reste optionnelle pour les profils créés antérieurement). </p>
<p>Ce qui a eu pour conséquence de supprimer la fonctionnalité d'ajout facile de moteurs de recherche pour le site courant, puisque celle-ci s'appuyait sur la barre de recherche.</p>
<p>Avec la future version 61, cette fonctionnalité réapparaît au pied du menu qui se déroule par le bouton « Actions pour la page », alias « ··· » (pour en savoir plus : <a href="https://www.ctrl.blog/entry/firefox-reintroduces-opensearch">billet non officiel</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1221539">rapport de bogue</a>). Ouf !<br>
Notons toutefois que, par rapport à l'implémentation précédente, l'utilisateur n'est pas averti de l'offre d'un moteur de recherche dédié au site visité, sauf à dérouler le menu ad hoc.</p>
<p>En ce qui me concerne, le retour de la fonctionnalité d'ajout facile de moteurs de recherche dédié et la prochaine (on espère) disponibilité à nouveau de l'extension Context Search sont des bonnes nouvelles, y compris pour montrer aux fanas de Google Search comment diversifier leurs moteurs de recherche.</p>
<h2 id="mes-usages-quant-à-la-recherche-sur-le-web">Mes usages quant à la recherche sur le Web</h2>
<p>Vous l'avez compris, j'ai l'habitude de prendre le temps de paramétrer mes moteurs de recherche, que ce soit :<br>
- la Wikipédia francophone, et celle anglophone (pour certaines recherches hi-tech notamment), <br>
- un dico anglais-français un autre dans le sens inverse (via WordReference.com), <br>
- les horaires et critiques de ciné (via Allociné), <br>
- hooktube (YouTube sans passer par Google [2]), <br>
- un conjugueur, <br>
- un dico français (via le CNTRL), <br>
- mes magasins en ligne habituels (<a href="http://libre-ouvert.toile-libre.org/?article197/google-apple-facebook-et-amazon-allez-tous-vous-faire-foutre">qui ne sont pas Amazon</a>) comme la Fnac, <br>
- Netcraft Site Report pour avoir des infos sur des sites dont je me méfie, <br>
- Internet Archive Wayback Machine pour retrouver une page disparue,<br>
- Mycroft Project (pour chercher le moteur de recherche d'un site spécifique comme évoqué plus haut : belle mise en abîme !),<br>
- le catalogue des paquets Debian…<br>
- et bien sûr des moteurs généralistes : StartPage (Google Search sans passer par Google) (mon moteur par défaut), Qwant et DDG (dans cet ordre).</p>
<p>À la plupart de ces sites j'ai associé une combinaison de lettres (voir la colonne « Mot-clé » dans les paramètres de recherche de Firefox) pour les lancer directement depuis la barre d'adresse (par ex « fren » suivi d'un mot en français m'affiche sa traduction en anglais via le moteur dédié WordReference.com, et « enfr » lance la recjerche inverse).<br>
Et bien sûr les combinaisons de touches ctrl+L et ctrl+K pour passer de la barre d'adresse à la barre de recherche, si les deux existent dans votre configuration.</p>
<p>Voilà, vous savez tout.</p>
<hr><p>[1] en n'envoyant pas toutes mes requêtes à un même moteur de recherche<br>
[2] en complément, en bas de pages hooktube vous trouverez des extensions pour Firefox qui convertissent à la volée des liens YouTube en liens hooktube</p><div><a href="https://linuxfr.org/users/antistress/journaux/optimiser-la-recherche-web-dans-firefox.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/114433/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/antistress/journaux/optimiser-la-recherche-web-dans-firefox#comments">ouvrir dans le navigateur</a>
</p>
antistresshttps://linuxfr.org/nodes/114433/comments.atomtag:linuxfr.org,2005:News/379942018-03-26T11:28:34+02:002018-03-26T15:03:07+02:00« Duke », un assistant intelligent pour les agriculteursLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Qui n’a jamais entendu les agriculteurs se plaindre de la <a href="https://ekylibre.com/pmi">charge de travail administrative</a> trop importante ? Qui n’a jamais observé le manque d’interopérabilité qui oblige à des re‐saisies permanentes entre des outils la plupart du temps dépourvus de capacités de communication entre eux ?<br>
Qui n’a jamais rêvé de dicter les actions à faire et que les choses se fassent… toutes seules ? <br>
Voici l’histoire de Duke, l’assistant vocal intelligent.</p></div><ul><li>lien nᵒ 1 : <a title="https://ekylibre.com/" hreflang="fr" href="https://linuxfr.org/redirect/100615">Site Web Ekylibre</a></li><li>lien nᵒ 2 : <a title="https://ekylibre.com/features" hreflang="fr" href="https://linuxfr.org/redirect/100616">Fonctionnalités du logiciel</a></li><li>lien nᵒ 3 : <a title="https://demo.ekylibre.farm/" hreflang="fr" href="https://linuxfr.org/redirect/101646">Démonstration en ligne de logiciel, sans identifiant nécessaire</a></li><li>lien nᵒ 4 : <a title="https://mycroft.ai/" hreflang="en" href="https://linuxfr.org/redirect/101655">Site Web Mycroft</a></li><li>lien nᵒ 5 : <a title="https://github.com/MycroftAI/mycroft-core" hreflang="en" href="https://linuxfr.org/redirect/101656">Dépôt de code Mycroft</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#au-d%C3%A9but">Au début</a></li>
<li><a href="#la-travers%C3%A9e-du-d%C3%A9sert">La traversée du désert</a></li>
<li><a href="#et-la-lumi%C3%A8re-fut">Et la lumière fut</a></li>
<li><a href="#av%C3%A8nement-de-lia">Avènement de l’IA</a></li>
<li><a href="#preuve-du-concept">Preuve du concept</a></li>
<li><a href="#tutoriel-dinstallation">Tutoriel d’installation</a></li>
<li>
<a href="#pour-aller-plus-loin">Pour aller plus loin</a><ul>
<li><a href="#au-niveau-logiciel">Au niveau logiciel</a></li>
<li>
<a href="#au-niveau-mat%C3%A9riel">Au niveau matériel</a><ul>
<li><a href="#platesformes">Plates‐formes</a></li>
<li><a href="#audio">Audio</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#du-nouveau">Du nouveau</a></li>
</ul><h2 id="au-début">Au début</h2>
<p>Au début, il y avait des agriculteurs qui passaient 500 heures par an à effectuer leurs démarches administratives (en ronchonnant ;)) puis l’un d’entre eux a décidé de s’attaquer aux problèmes en développant une solution libre de gestion : Ekylibre (GPL v3) était né. Aidé par des étudiants de l’ENSERB (dont Brice Texier), l’outil avance et arrive en 2009, après deux années de développement, à gérer la partie comptable et commerciale d’une petite exploitation agricole.</p>
<h2 id="la-traversée-du-désert">La traversée du désert</h2>
<p>Comme dans tous les projets libres, le modèle économique est primordial dans la pérennité d’un projet.</p>
<h2 id="et-la-lumière-fut">Et la lumière fut</h2>
<p>Au moment où ça marche, on a un peu l’impression de découvrir un nouveau monde où rien n’est impossible. Et puis la réalité du bogue rappelant la somme du travail restant à accomplir pour un outil simple, fiable et accessible ramène tout ce petit monde sur terre.</p>
<h2 id="avènement-de-lia">Avènement de l’IA</h2>
<p>Ces derniers temps, nous avons vu fleurir les initiatives des grandes entreprises (<a href="https://fr.wikipedia.org/wiki/GAFAM">GAFAM</a> "Google, Apple, Facebook, Amazon et Microsoft") concernant les assistants vocaux pour le quotidien. Que ce soit sous forme d’objets ou sur nos appareils mobiles, l’accès à ces ressources est aujourd’hui très facile. <br>
Encore faudrait‐il leur trouver une réelle utilité, car malgré leur attrait, ces « assistants » sont plutôt limités en termes de fonctionnalités.</p>
<p>Ils permettent généralement d’interagir avec des services propres aux téléphones mobiles (contacts, SMS, musique…), des services de divertissement payants (musique et vidéo en diffusion directe) et avec quelques objets de la vie réelle (interrupteurs, ampoules et stations météo connectées). Mais les actions possibles s’arrêtent là pour le moment, même si, <em>a priori</em>, les outils de développement sont disponibles pour quasiment chaque plate‐forme.</p>
<h2 id="preuve-du-concept">Preuve du concept</h2>
<p>Bien entendu, notre esprit libre nous a poussé à chercher une alternative aux produits clé en main proposés çà et là, où le modèle économique repose sur l’utilisation implicite de vos données (bien que beaucoup ne s’en rendent pas compte).</p>
<p>Nous sommes tombés sur le projet <a href="https://mycroft.ai/"><em>Mycroft</em></a> financé après une campagne sur Kickstarter. C’est du Python [<em>N. D. M.</em> : licence <a href="https://github.com/MycroftAI/mycroft-core/commit/8f2e5d94984c8e063ac9d30da234d1706efe1db1">GPL v3 puis APL v2</a> pour le cœur, et licences variables (APL v2, GPL v3, MIT, domaine public, etc.) pour les <em>skills</em>, exemples <a href="https://github.com/JarbasAl/skill_easter_eggs/blob/f2852152beb34ba5ae9ba3e7655db672666e7ecf/LICENSE"><em>1</em></a>, <a href="https://github.com/Gobbenobber/skill-CryptoSkill/blob/7675cda8f2730fe0600b44d32d60b7b5089ab4fc/LICENSE"><em>2</em></a> ou <a href="https://github.com/dmp1ce/mycroft-bitcoinprice-skill/blob/4cd5b67188fa6e30fc91f8310e0bde0aacb973e6/LICENSE"><em>3</em></a>] et ça s’installe sur Raspberry_Pi_, tout ce qu’il nous fallait pour faire une preuve de concept en interagissant avec Ekylibre via une API.<br>
Alors <em>Mycroft</em> était, et est toujours, en cours de développement, mais les résultats étaient très encourageants pour l’avenir !</p>
<p>Nous avons donc « forké » et contribué à notre manière pour l’adapter en français (pas une mince affaire la première fois, surtout concernant la gestion de l’encodage UTF-8 alors que le projet est en Python 2) et développé quelques <em>skills</em> (fonctionnalités, dans le jargon) permettant d’enregistrer une intervention réalisée aux champs directement dans <em>Ekylibre</em> en prenant en compte le <code>type</code> (semis, labour, binage, etc.), la <code>parcelle</code>, le <code>prénom</code> de la personne qui réalise l’opération et on pourrait en rajouter ! Nous avons fait la même chose pour déclarer un incident dans notre logiciel et nous avons développé un <em>skill</em> météo « localisé » avec l’API <em>OpenWeatherMap</em> prenant en compte matin, après‐midi, les jours de la semaine, etc., et les noms de parcelles si besoin.</p>
<p><strong>Duke</strong> — <em>l’assistant personnel de l’agriculteur</em> — était né.</p>
<h2 id="tutoriel-dinstallation">Tutoriel d’installation</h2>
<p><em>Duke</em>, mais aussi tous les composants de <em>Mycroft</em> peuvent aisément être installés sur votre distribution préférée ou même un Raspberry <em>Pi</em> (B3 de préférence).<br>
Créez un dossier pour votre projet (c’est plus propre), où vous voulez :</p>
<pre><code>mkdir duke
cd duke
</code></pre>
<p>Clonez le dépot <code>mycroft-core</code> dans le dossier :</p>
<pre><code>git clone https://github.com/MycroftAI/mycroft-core.git
cd mycroft-core
</code></pre>
<p>On installe l’environnement virtuel Python et toutes ses bibliothèques (n’hésitez pas à jeter un coup d’œil ou éditer le fichier) :</p>
<pre><code>./dev_setup.sh
</code></pre>
<p>Il faut ensuite fournir le modèle de langue en français (sous licence BSD) pour <em>PocketSphinx</em>, le moteur de reconnaissance de <em>hotword</em>, mot‐clé qui déclenchera l’écoute de votre assistant, ou bien conserver le modèle anglais configuré par défaut avec le <em>hotword</em> <code>Hey Mycroft!</code> et dans ce cas vous pouvez sauter l’étape suivante :</p>
<pre><code>cd mycroft/client/speech/recognizer/model
mkdir fr-fr
wget https://downloads.sourceforge.net/project/cmusphinx/Acoustic%20and%20Language%20Models/French/cmusphinx-fr-ptm-8khz-5.2.tar.gz
tar -xzf cmusphinx-fr-ptm-8khz-5.2.tar.gz
mv cmusphinx-fr-ptm-8khz-5.2 fr-fr/hmm
</code></pre>
<p>Nous créons maintenant le fichier de configuration de mycroft-core, dont voici un exemple ; mais n’hésitez pas à le modifier selon vos besoins :</p>
<pre><code>mkdir ~/.mycroft
cd ~/.mycroft
nano mycroft.conf
</code></pre>
<p>Puis, copiez le contenu ci‐dessous dans le fichier <code>mycroft.conf</code> :</p>
<pre><code class="json"><span class="p">{</span>
<span class="nt">"lang"</span><span class="p">:</span> <span class="s2">"fr-fr"</span><span class="p">,</span>
<span class="nt">"system_unit"</span><span class="p">:</span> <span class="s2">"metric"</span><span class="p">,</span>
<span class="nt">"time_format"</span><span class="p">:</span> <span class="s2">"full"</span><span class="p">,</span>
<span class="nt">"date_format"</span><span class="p">:</span> <span class="s2">"DMY"</span><span class="p">,</span>
<span class="nt">"confirm_listening"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">"sounds"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"start_listening"</span><span class="p">:</span> <span class="s2">"snd/start_listening.wav"</span><span class="p">,</span>
<span class="nt">"end_listening"</span><span class="p">:</span> <span class="s2">"snd/end_listening.wav"</span>
<span class="p">},</span>
<span class="nt">"play_wav_cmdline"</span><span class="p">:</span> <span class="s2">"paplay %1 --stream-name=mycroft-voice"</span><span class="p">,</span>
<span class="nt">"play_mp3_cmdline"</span><span class="p">:</span> <span class="s2">"mpg123 -q --pitch 0.1 %1"</span><span class="p">,</span>
<span class="nt">"location"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"city"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"code"</span><span class="p">:</span> <span class="s2">"Saint-Porchaire"</span><span class="p">,</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Saint-Porchaire"</span><span class="p">,</span>
<span class="nt">"state"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"code"</span><span class="p">:</span> <span class="s2">"Nouvelle-Aquitaine"</span><span class="p">,</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Nouvelle-Aquitaine"</span><span class="p">,</span>
<span class="nt">"country"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"code"</span><span class="p">:</span> <span class="s2">"FR"</span><span class="p">,</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"France"</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">"coordinate"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"latitude"</span><span class="p">:</span> <span class="mf">45.82117</span><span class="p">,</span>
<span class="nt">"longitude"</span><span class="p">:</span> <span class="mf">-0.78477</span>
<span class="p">},</span>
<span class="nt">"timezone"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"code"</span><span class="p">:</span> <span class="s2">"Europe/Paris"</span><span class="p">,</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Central European Time"</span><span class="p">,</span>
<span class="nt">"dstOffset"</span><span class="p">:</span> <span class="mi">3600000</span><span class="p">,</span>
<span class="nt">"offset"</span><span class="p">:</span> <span class="mi">3600000</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">"skills"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"stop_threshold"</span><span class="p">:</span> <span class="mf">2.0</span><span class="p">,</span>
<span class="nt">"blacklisted_skills"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"fallback-aiml"</span><span class="p">,</span> <span class="s2">"fallback-wolfram-alpha"</span><span class="p">,</span> <span class="s2">"skill-alarm"</span><span class="p">,</span> <span class="s2">"skill-audio-record"</span><span class="p">,</span> <span class="s2">"skill-configuration"</span><span class="p">,</span>
<span class="s2">"skill-desktop-launcher"</span><span class="p">,</span> <span class="s2">"skill-ip"</span><span class="p">,</span> <span class="s2">"skill-joke"</span><span class="p">,</span> <span class="s2">"skill-hello-world"</span><span class="p">,</span> <span class="s2">"skill-media"</span><span class="p">,</span> <span class="s2">"skill-npr-news"</span><span class="p">,</span>
<span class="s2">"skill-naptime"</span><span class="p">,</span> <span class="s2">"skill-pairing"</span><span class="p">,</span> <span class="s2">"skill-personal"</span><span class="p">,</span> <span class="s2">"skill-playback-control"</span><span class="p">,</span> <span class="s2">"skill-reminder"</span><span class="p">,</span> <span class="s2">"skill-installer"</span><span class="p">,</span> <span class="s2">"skill-singing"</span><span class="p">,</span>
<span class="s2">"skill-speak"</span><span class="p">,</span> <span class="s2">"skill-spelling"</span><span class="p">,</span> <span class="s2">"skill-stop"</span><span class="p">,</span> <span class="s2">"skill-stock"</span><span class="p">,</span> <span class="s2">"skill-volume"</span><span class="p">,</span> <span class="s2">"skill-weather"</span><span class="p">,</span> <span class="s2">"skill-wiki"</span><span class="p">,</span>
<span class="s2">"skill-wolfram-alpha"</span><span class="p">,</span> <span class="s2">"fallback-aiml"</span><span class="p">,</span> <span class="s2">"skill-mark1-demo"</span><span class="p">]</span>
<span class="p">},</span>
<span class="nt">"server"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"update"</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="nt">"listener"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"sample_rate"</span><span class="p">:</span> <span class="mi">16000</span><span class="p">,</span>
<span class="nt">"channels"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">"record_wake_words"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="nt">"wake_word"</span><span class="p">:</span> <span class="s2">"dis-moi"</span><span class="p">,</span>
<span class="nt">"phonemes"</span><span class="p">:</span> <span class="s2">"dd ii mm ww aa"</span><span class="p">,</span>
<span class="nt">"phoneme_duration"</span><span class="p">:</span> <span class="mi">120</span><span class="p">,</span>
<span class="nt">"threshold"</span><span class="p">:</span> <span class="mf">1e-15</span><span class="p">,</span>
<span class="nt">"standup_word"</span><span class="p">:</span> <span class="s2">"debout"</span><span class="p">,</span>
<span class="nt">"standup_phonemes"</span><span class="p">:</span> <span class="s2">"dd ee bb ou"</span><span class="p">,</span>
<span class="nt">"standup_threshold"</span><span class="p">:</span> <span class="mf">1e-15</span><span class="p">,</span>
<span class="nt">"multiplier"</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span>
<span class="nt">"energy_ratio"</span><span class="p">:</span> <span class="mf">1.5</span>
<span class="p">},</span>
<span class="nt">"enclosure"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"platform"</span><span class="p">:</span> <span class="s2">"other"</span><span class="p">,</span>
<span class="nt">"port"</span><span class="p">:</span> <span class="s2">"/dev/ttyAMA0"</span><span class="p">,</span>
<span class="nt">"rate"</span><span class="p">:</span> <span class="mi">9600</span><span class="p">,</span>
<span class="nt">"timeout"</span><span class="p">:</span> <span class="mf">5.0</span><span class="p">,</span>
<span class="nt">"update"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="nt">"test"</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="nt">"log_level"</span><span class="p">:</span> <span class="s2">"DEBUG"</span><span class="p">,</span>
<span class="nt">"ignore_logs"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"enclosure.mouth.viseme"</span><span class="p">],</span>
<span class="nt">"session"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"ttl"</span><span class="p">:</span> <span class="mi">180</span>
<span class="p">},</span>
<span class="nt">"padatious"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"intent_cache"</span><span class="p">:</span> <span class="s2">"~/.mycroft/intent_cache"</span><span class="p">,</span>
<span class="nt">"train_delay"</span><span class="p">:</span> <span class="mi">1</span>
<span class="p">},</span>
<span class="nt">"stt"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"module"</span><span class="p">:</span> <span class="s2">"google"</span><span class="p">,</span>
<span class="nt">"google"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"credential"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"token"</span><span class="p">:</span> <span class="s2">"***********************"</span>
<span class="p">},</span>
<span class="nt">"lang"</span><span class="p">:</span> <span class="s2">"fr"</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">"tts"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"module"</span><span class="p">:</span> <span class="s2">"google"</span><span class="p">,</span>
<span class="nt">"google"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"lang"</span><span class="p">:</span> <span class="s2">"fr"</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">"wifi"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"setup"</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="nt">"ConfigurationSkill"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"max_delay"</span><span class="p">:</span> <span class="mi">600</span>
<span class="p">},</span>
<span class="nt">"Audio"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"backends"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"local"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"type"</span><span class="p">:</span> <span class="s2">"mpg123"</span><span class="p">,</span>
<span class="nt">"active"</span><span class="p">:</span> <span class="kc">true</span>
<span class="p">},</span>
<span class="nt">"vlc"</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">"type"</span><span class="p">:</span> <span class="s2">"vlc"</span><span class="p">,</span>
<span class="nt">"active"</span><span class="p">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">"default-backend"</span><span class="p">:</span> <span class="s2">"local"</span>
<span class="p">}</span>
<span class="p">}</span></code></pre>
<p>Faites <code>Ctrl</code> + <code>O</code> <code>Entrée</code> <code>Ctrl</code> + <code>X</code> <code>Entrée</code> pour sauvegarder et quitter l’édition.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f69636f6e69632f6f70656e2d69636f6e69632f6d61737465722f706e672f7761726e696e672d32782e706e67/warning-2x.png" alt="important" title="Source : https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png"><strong>Important n<sup>o</sup> 1</strong> : Il vous faudra demander une clé pour l’API Google Speech à remplacer ci‐dessus dans le paramètre <code>token</code> du nœud <code>stt</code>.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f69636f6e69632f6f70656e2d69636f6e69632f6d61737465722f706e672f7761726e696e672d32782e706e67/warning-2x.png" alt="important" title="Source : https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png"><strong>Important n<sup>o</sup> 2</strong> : Si vous voulez changer le <em>hotword</em> comme bon vous semble, vous devez vous référer au dictionnaire de phonèmes <a href="https://downloads.sourceforge.net/project/cmusphinx/Acoustic%20and%20Language%20Models/French/fr.dict">en français</a> si votre configuration est en français, et aux phonèmes <a href="https://docs.mycroft.ai/development/faq">anglais</a> si votre configuration est en anglais.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f69636f6e69632f6f70656e2d69636f6e69632f6d61737465722f706e672f7761726e696e672d32782e706e67/warning-2x.png" alt="important" title="Source : https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png"><strong>Important n<sup>o</sup> 3</strong> : Vous pouvez conserver le modèle de <em>hotword</em> anglais dans une configuration en français, pour cela vous devez dupliquer le modèle anglais et le placer dans un sous dossier <code>fr-fr</code> (à côté du <code>en-us</code>). Vous pouvez alors conserver le <code>Hey Mycroft</code> d’origine ou bien créer un autre <em>hotword</em> mais avec les phonèmes anglais, comme expliqué au point juste avant.</p>
<h2 id="pour-aller-plus-loin">Pour aller plus loin</h2>
<p>Si vous voulez aller un peu plus loin, je vous conseille de regarder les points suivants qui peuvent vous intéresser :</p>
<h3 id="au-niveau-logiciel">Au niveau logiciel</h3>
<ul>
<li>
<strong>Padatious</strong> : moteur d’intention basé sur l’exemple (réseaux neuronaux). Implémenté par défaut maintenant dans <em>Mycroft</em> ; le résultat est très intéressant, mais il manque des fonctionnalités au module pour gérer les variables ; à suivre de près ;</li>
<li>
<strong>conversation et contexte</strong> : Mycroft permet désormais de gérer un contexte lors des requêtes, vous pouvez lui demander la météo actuellement à Bordeaux, puis lui demander la même chose mais pour demain sans répéter le nom de la ville. Il n’y a plus qu’à coder !</li>
<li>
<strong>Snowboy</strong> : tout récemment vient d’être ajouté la possibilité d’utiliser <em>Snowboy</em>, un moteur de reconnaissance de « <em>hot words</em> » à l’instar de <em>PocketSphinx</em> mais avec un modèle vocal que <strong>vous</strong> aurez préalablement créé en ligne en cinq minutes. Très efficace et doué d’apprentissage, puisque tout un chacun peux contribuer au modèle en enregistrant sa voix.</li>
</ul><h3 id="au-niveau-matériel">Au niveau matériel</h3>
<h4 id="platesformes">Plates‐formes</h4>
<ul>
<li>
<strong>Raspberry Pi</strong> : évidemment ! Une image préconfigurée est proposée par le projet Mycroft, mais vous aurez une version plus récente de <em>mycroft-core</em> en faisant l’installation vous‐même à partir du dépôt GitHub ;</li>
<li>
<strong>ReSpeaker</strong> : apparemment, <em>mycroft-core</em> pourrait tourner directement sur leur matériel dédié à ce genre d’usage.</li>
</ul><h4 id="audio">Audio</h4>
<p>Sur Raspberry <em>Pi</em>, vous savez peut‐être que la carte ne possède aucune entrée son et que la sortie est d’assez mauvaise qualité. La solution consiste à utiliser une carte son externe en USB. On en trouve pour moins de 10 € en ligne.</p>
<h2 id="du-nouveau">Du nouveau</h2>
<p>Le projet <em>Mycroft</em> a pas mal avancé depuis le début de la rédaction de cette dépêche. Des petits changements sont sans doutes apparus, mais l’installation est bien plus facile aujourd’hui qu’il y a un an et la documentation s’est bien étayée. Alors, n’hésitez plus ! Mettez un peu de voix dans vos interfaces, dans le respect de votre intimité.</p></div><div><a href="https://linuxfr.org/news/duke-un-assistant-intelligent-pour-les-agriculteurs.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111901/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/duke-un-assistant-intelligent-pour-les-agriculteurs#comments">ouvrir dans le navigateur</a>
</p>
David JOULINRémi de ChazellesDavy DefaudBenoît Sibaudpalm123BAudbubar🦥Pierre Jarillonhttps://linuxfr.org/nodes/111901/comments.atom