URL: https://linuxfr.org/news/duke-un-assistant-intelligent-pour-les-agriculteurs Title: « Duke », un assistant intelligent pour les agriculteurs Authors: David JOULIN Rémi de Chazelles, Davy Defaud, Benoît Sibaud, palm123, BAud, bubar🦥 et Pierre Jarillon Date: 2017年05月17日T22:55:08+02:00 License: CC By-SA Tags: durable, administratif, ekylibre, mycroft, pgi et agriculture Score: 28 Qui n’a jamais entendu les agriculteurs se plaindre de la [charge de travail administrative](https://ekylibre.com/pmi) 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 ? Qui n’a jamais rêvé de dicter les actions à faire et que les choses se fassent... toutes seules ? Voici l’histoire de Duke, l’assistant vocal intelligent. ---- [Site Web Ekylibre](https://ekylibre.com/) [Fonctionnalités du logiciel](https://ekylibre.com/features) [Démonstration en ligne de logiciel, sans identifiant nécessaire](https://demo.ekylibre.farm/) [Site Web Mycroft](https://mycroft.ai/) [Dépôt de code Mycroft](https://github.com/MycroftAI/mycroft-core) ---- Au début ======== 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. La traversée du désert ====================== Comme dans tous les projets libres, le modèle économique est primordial dans la pérennité d’un projet. Et la lumière fut ================= 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. Avènement de l’IA ================= Ces derniers temps, nous avons vu fleurir les initiatives des grandes entreprises ([GAFAM](https://fr.wikipedia.org/wiki/GAFAM) "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. 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. 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, _a priori_, les outils de développement sont disponibles pour quasiment chaque plate‐forme. Preuve du concept ================= 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). Nous sommes tombés sur le projet [_Mycroft_](https://mycroft.ai/) financé après une campagne sur Kickstarter. C’est du Python [_N. D. M._ : licence [GPL v3 puis APL v2](https://github.com/MycroftAI/mycroft-core/commit/8f2e5d94984c8e063ac9d30da234d1706efe1db1) pour le cœur, et licences variables (APL v2, GPL v3, MIT, domaine public, etc.) pour les _skills_, exemples [_1_](https://github.com/JarbasAl/skill_easter_eggs/blob/f2852152beb34ba5ae9ba3e7655db672666e7ecf/LICENSE), [_2_](https://github.com/Gobbenobber/skill-CryptoSkill/blob/7675cda8f2730fe0600b44d32d60b7b5089ab4fc/LICENSE) ou [_3_](https://github.com/dmp1ce/mycroft-bitcoinprice-skill/blob/4cd5b67188fa6e30fc91f8310e0bde0aacb973e6/LICENSE)] 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. Alors _Mycroft_ était, et est toujours, en cours de développement, mais les résultats étaient très encourageants pour l’avenir ! 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 _skills_ (fonctionnalités, dans le jargon) permettant d’enregistrer une intervention réalisée aux champs directement dans _Ekylibre_ en prenant en compte le `type` (semis, labour, binage, etc.), la `parcelle`, le `prénom` 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 _skill_ météo « localisé » avec l’API _OpenWeatherMap_ prenant en compte matin, après‐midi, les jours de la semaine, etc., et les noms de parcelles si besoin. **Duke** — _l’assistant personnel de l’agriculteur_ — était né. Tutoriel d’installation ======================= _Duke_, mais aussi tous les composants de _Mycroft_ peuvent aisément être installés sur votre distribution préférée ou même un Raspberry _Pi_ (B3 de préférence). Créez un dossier pour votre projet (c’est plus propre), où vous voulez : mkdir duke cd duke Clonez le dépot `mycroft-core` dans le dossier : git clone https://github.com/MycroftAI/mycroft-core.git cd mycroft-core On installe l’environnement virtuel Python et toutes ses bibliothèques (n’hésitez pas à jeter un coup d’œil ou éditer le fichier) : ./dev_setup.sh Il faut ensuite fournir le modèle de langue en français (sous licence BSD) pour _PocketSphinx_, le moteur de reconnaissance de _hotword_, mot‐clé qui déclenchera l’écoute de votre assistant, ou bien conserver le modèle anglais configuré par défaut avec le _hotword_ `Hey Mycroft!` et dans ce cas vous pouvez sauter l’étape suivante : 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 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 : mkdir ~/.mycroft cd ~/.mycroft nano mycroft.conf Puis, copiez le contenu ci‐dessous dans le fichier `mycroft.conf` : ```json { "lang": "fr-fr", "system_unit": "metric", "time_format": "full", "date_format": "DMY", "confirm_listening": true, "sounds": { "start_listening": "snd/start_listening.wav", "end_listening": "snd/end_listening.wav" }, "play_wav_cmdline": "paplay %1 --stream-name=mycroft-voice", "play_mp3_cmdline": "mpg123 -q --pitch 0.1 %1", "location": { "city": { "code": "Saint-Porchaire", "name": "Saint-Porchaire", "state": { "code": "Nouvelle-Aquitaine", "name": "Nouvelle-Aquitaine", "country": { "code": "FR", "name": "France" } } }, "coordinate": { "latitude": 45.82117, "longitude": -0.78477 }, "timezone": { "code": "Europe/Paris", "name": "Central European Time", "dstOffset": 3600000, "offset": 3600000 } }, "skills": { "stop_threshold": 2.0, "blacklisted_skills": ["fallback-aiml", "fallback-wolfram-alpha", "skill-alarm", "skill-audio-record", "skill-configuration", "skill-desktop-launcher", "skill-ip", "skill-joke", "skill-hello-world", "skill-media", "skill-npr-news", "skill-naptime", "skill-pairing", "skill-personal", "skill-playback-control", "skill-reminder", "skill-installer", "skill-singing", "skill-speak", "skill-spelling", "skill-stop", "skill-stock", "skill-volume", "skill-weather", "skill-wiki", "skill-wolfram-alpha", "fallback-aiml", "skill-mark1-demo"] }, "server": { "update": false }, "listener": { "sample_rate": 16000, "channels": 1, "record_wake_words": false, "wake_word": "dis-moi", "phonemes": "dd ii mm ww aa", "phoneme_duration": 120, "threshold": 1e-15, "standup_word": "debout", "standup_phonemes": "dd ee bb ou", "standup_threshold": 1e-15, "multiplier": 1.0, "energy_ratio": 1.5 }, "enclosure": { "platform": "other", "port": "/dev/ttyAMA0", "rate": 9600, "timeout": 5.0, "update": false, "test": false }, "log_level": "DEBUG", "ignore_logs": ["enclosure.mouth.viseme"], "session": { "ttl": 180 }, "padatious": { "intent_cache": "~/.mycroft/intent_cache", "train_delay": 1 }, "stt": { "module": "google", "google": { "credential": { "token": "***********************" }, "lang": "fr" } }, "tts": { "module": "google", "google": { "lang": "fr" } }, "wifi": { "setup": false }, "ConfigurationSkill": { "max_delay": 600 }, "Audio": { "backends": { "local": { "type": "mpg123", "active": true }, "vlc": { "type": "vlc", "active": true } }, "default-backend": "local" } } ``` Faites `Ctrl` + `O` `Entrée` `Ctrl` + `X` `Entrée` pour sauvegarder et quitter l’édition. ![important](https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png) __Important n^(o) 1__ : Il vous faudra demander une clé pour l’API Google Speech à remplacer ci‐dessus dans le paramètre `token` du nœud `stt`. ![important](https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png) __Important n^(o) 2__ : Si vous voulez changer le _hotword_ comme bon vous semble, vous devez vous référer au dictionnaire de phonèmes [en français](https://downloads.sourceforge.net/project/cmusphinx/Acoustic%20and%20Language%20Models/French/fr.dict) si votre configuration est en français, et aux phonèmes [anglais](https://docs.mycroft.ai/development/faq) si votre configuration est en anglais. ![important](https://raw.githubusercontent.com/iconic/open-iconic/master/png/warning-2x.png) __Important n^(o) 3__ : Vous pouvez conserver le modèle de _hotword_ anglais dans une configuration en français, pour cela vous devez dupliquer le modèle anglais et le placer dans un sous dossier `fr-fr` (à côté du `en-us`). Vous pouvez alors conserver le `Hey Mycroft` d’origine ou bien créer un autre _hotword_ mais avec les phonèmes anglais, comme expliqué au point juste avant. Pour aller plus loin ==================== Si vous voulez aller un peu plus loin, je vous conseille de regarder les points suivants qui peuvent vous intéresser : ## Au niveau logiciel - **Padatious** : moteur d’intention basé sur l’exemple (réseaux neuronaux). Implémenté par défaut maintenant dans _Mycroft_ ; 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 ; - **conversation et contexte** : 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 ! - **Snowboy** : tout récemment vient d’être ajouté la possibilité d’utiliser _Snowboy_, un moteur de reconnaissance de « _hot words_ » à l’instar de _PocketSphinx_ mais avec un modèle vocal que **vous** 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. ## Au niveau matériel ### Plates‐formes - **Raspberry Pi** : évidemment ! Une image préconfigurée est proposée par le projet Mycroft, mais vous aurez une version plus récente de _mycroft-core_ en faisant l’installation vous‐même à partir du dépôt GitHub ; - **ReSpeaker** : apparemment, _mycroft-core_ pourrait tourner directement sur leur matériel dédié à ce genre d’usage. ### Audio Sur Raspberry _Pi_, 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. Du nouveau ========== Le projet _Mycroft_ 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é.

AltStyle によって変換されたページ (->オリジナル) /