« siri, lisez les e-mails »
« Bonjour Cortana, quelle est la météo? «
» OK Google, comment dites-vous bonjour en anglais? «
« Alexa, défini sur la minuterie pendant 15 minutes »
Ce type de phrases (commandes) faisons partie de notre vie quotidienne. Chaque jour, il est plus courant d’utiliser notre voix et une langue naturelle pour interagir avec les appareils et les services. La grande majorité des appareils et des systèmes d’exploitation les plus populaires intègrent ce que l’on appelle un assistant personnel intelligent; C’est une tendance qui accélère.
Un assistant personnel intelligent (Assistant personnel intelligent, IPA) est un agent logiciel qui peut effectuer des tâches ou offrir des services à une personne. L’utilisateur peut interagir avec l’IPA en utilisant une langue naturelle par la voix ou le texte. L’IPA peut également obtenir et utiliser des informations de contexte supplémentaires telles que l’emplacement utilisateur, les informations dans le même périphérique (photos, contacts, etc.) et autres services pour fournir une meilleure réponse à l’utilisateur.
Les assistants personnels tels que Comme Siri, Google maintenant ou Corttana peut exécuter de nombreuses actions et réagir à une grande variété de demandes d’utilisateurs. En règle générale, l’appareil n’est qu’une façade pour fournir le service, car les services qui reconnaissent la parole et déterminent la réponse ou une action adéquate, sont des services hébergés dans le cloud.
Je veux ma propre IPA
Si nous voulons créer un service IPA, une option consiste à le faire comme extension des services existants tels que Siri, Cortana ou Alexa. Cependant, cela peut avoir des limitations ou ne pas nous donner le contrôle complet que nous pourrions avoir besoin. Une autre option est donc que nous développons notre propre application et utilisons simplement les services de reconnaissance vocale qui exposent certaines de ces moteurs.
Pour construire notre IPA, nous devons d’abord identifier ses différents composants ou sous-systèmes. Les grandes caractéristiques sont les suivantes: interface pour interagir avec l’assistant, la reconnaissance vocale, le langage de domaine spécifique (DSL) et le point de terminaison pour accéder à l’agent.
Ensuite, nous allons parler de chacun d’eux.
La reconnaissance vocale
est un domaine de la linguistique informatique axé sur la mise au point de méthodologies et de technologies permettant aux ordinateurs de comprendre et de traduire la langue parlée. Il convient de préciser que la reconnaissance vocale est différente de la reconnaissance vocale, car ce dernier se concentre uniquement sur l’identification de la personne qui parle, mais pas ce qu’il dit.
Comment pouvez-vous imaginer, développer un service de reconnaissance vocale est une tâche très grande et presque impossible pour une seule personne. Heureusement, les entreprises comme Microsoft, Google et Xamarin, entre autres, les ont déjà développées et les ont ouverts afin que nous puissions les utiliser dans nos applications. Dans la liste 1 Je montre comment nous pouvons initialiser le service de reconnaissance vocale dans .NET. Par la suite, dans la liste 2, je montre comment cela pourrait être fait sur Web à l’aide de l’API de la parole Web, qui est supporté par Chrome.
Liste 1. C # Code pour utiliser la reconnaissance de la parole Windows.
Liste 2. Code JavaScript pour utiliser l’API de la parole Web .
Langue de domaine spécifique (DSL)
est une langue informatique conçue pour représenter ou résoudre un problème spécifique. Il existe une grande variété de DSLS, à partir de langues très courantes telles que HTML ou SQL, aux langages de niche, tels que Csound pour la synthèse sonore. Le domaine peut également être un domaine d’activité. Donc, par exemple, nous pourrions créer une DSL pour la gestion des politiques d’assurance.
Lorsqu’un DSL est créé, il ne sera utilisé que dans une application, il est utilisé pour appeler une mini-langue.
Pour mettre en œuvre la langue, nous devons définir votre grammaire et créer un analyseur (analyseur syntaxique) pour pouvoir interpréter ce que l’utilisateur nous dit et donne une réponse. Nous pourrions faire les deux choses à la main, mais à l’heure actuelle, il y a déjà de nombreux outils qui nous fournissent de définir la grammaire et de créer notre analyseur.
L’un des outils les plus courants pour développer des langues est YACC. nous permet de générer une parzfe basée sur une grammaire analytique que nous devons décrire dans une métalangue similaire à la notation de Backus-NauR.
Dans ce cas, nous n’utiliserons pas YACC, mais nous utiliserons l’ironie, un développement Kit pour implémenter des langues dans la plate-forme .NET. Contrairement aux solutions telles que YACC et Lex, qui génèrent un analyseur de la grammaire analytique que nous avons définie, l’ironie nous permet d’exprimer la grammaire de notre langue directement dans C #.
La liste 3 montre comment nous définissons la grammaire à travers les terminaux et les non-terminaux, ainsi que les déclarations que nous allons reconnaître.
Liste 3. Définition de la DSL.
point final
Nous allons exposer les services de notre assistant via un point final hébergé dans notre application Web. Ce noeud final recevra en tant que paramètre la requête de l’utilisateur et ira à l’assistant, qui interprétera les résultats et envoyer une réponse sérialisée.
app
L’utilisateur peut interagir avec notre assistant intelligent via une application mobile.
déjà dans les listes 1 et 2 Nous avons vu Comment pouvons-nous utiliser des API de chrome et de Windows pour la reconnaissance vocale. Maintenant, dans les listes 4A, 4B et 4C, nous pouvons voir comment lancer la recherche et afficher les résultats dans une application Windows universelle.
List 4a montre comment tirer une demande asynchrone et écraser les résultats, puis énumérer 4b Montrez comment la liste 4C peut être déployée et indique enfin comment nous pourrions accompagner ces résultats d’un message vocal.
. Résultats de la recherche et des processus.
Liste 4b. Déployer les résultats.
Liste 4C. Donnez une discussion.
Alternatives
Un assistant personnel intelligent peut se développer de nombreuses manières. Dans cet article, nous prenons certaines décisions concernant les technologies et l’architecture, pour la détermination de la reconnaissance vocale que nous pourrions utiliser des services XAMARIN qui possède une API de reconnaissance linguistique et est multiplateforme. Nous pourrions également intégrer notre application avec des services tels que Siri ou Corttana. Le DSL, comme nous l’avons mentionné, nous pourrions également le développer avec YACC, Lex ou une variante de ceux-ci.
code source
Tous les code source de cet article font partie d’un petit Assistant personnel qui est hébergé dans http://deepthoughtagent.azurewebsites.net/, dans l’URL: http://deepthoughtagent.azurewebsites.net/ Accueil / Questions sont le type de questions que l’assistant peut répondre; Quelques exemples sont:
- Combien de navires contractent A123456?
- Combien de contrats ce navire un?
- Quelle capacité Morelos a?
- Quel contrat commence avant ’12 / 12/2015 ‘?
- Quel navire a une plus grande vitesse?
- Quel contrat a moins de bateaux?
- Quand ABCDE CONTRAT commencent-t-il?
- montre tous les bateaux
- Afficher tous les contrats
- Affiche le contrat ABCDE
- Mettre à jour la peinture du navire Vitesse de 20
- Combien coûte 2 + 2?
- Combien coûte 2 entre 2?
Le code source peut être obtenu dans https://github.com/pedro-ramirez-suarez/ScioAssistant, l’application mobile (Windows Universal App) est configurée pour utiliser le point final http://deepthoughtagent.azurewebsites.net/, étant que le service est hébergé sur un serveur avec très Les ressources limitées ne seront pas en mesure de gérer de nombreuses demandes, de gérer vos propres expériences, il suffit de héberger le DSL dans ou Tro place et changez l’URL définie dans le fichier « demandes », de sorte qu’il pointe de l’endroit où notre point final est.