Votre commande vocale personnalisée en 5 étapes

Favicon Vivoka Author

Written by Nathan Janezcko

Nathan Janezcko est chef de projet technique chez Vivoka. Il s'occupe du développement des produits ainsi que des projets clients avec la R&D et l'équipe technique.

 

Vous souhaitez développer une commande vocale personnalisée ? Vous voulez qu’il soit capable de comprendre des mots que vous-même avez du mal à saisir ? Restez avec nous, aujourd’hui nous allons apprendre à créer un système de reconnaissance automatique de la parole basé sur une grammaire avec le plugin Grammar Editor, disponible dans le Voice Development Kit.

Petit rappel, le Voice Development Kit (VDK) est un SDK (Software Development Kit) spécialisée dans les technologies vocales hors ligne. Il permet aux entreprises d’intégrer facilement et rapidement des technologies comme la reconnaissance automatique de la parole (ASR), le traitement du langage ou la synthèse vocale dans leurs applications et appareils

 

1) Créer un nouveau projet sur le VDK

 

Choisir le type de projet que vous voulez développer

 

Créer un projet avec le VDK

 

Pour commencer ce tutoriel, nous allons d’abord commencer par la création du projet. À l’aide de l’assistant, vous devez créer une application personnalisée qui vous permettra d’utiliser l’éditeur de grammaire.

 

Réglage des informations et des langues du projet vocal

 

Sélection des langues projet vocal VDK

 

Pour la création du projet, 3 informations vous seront demandées. Vous devrez configurer le projet avec un nom, un répertoire et les langues dont vous avez besoin.

Plus de 50 langues sont disponibles avec le Voice Development Kit. Vous pouvez même créer des assistants vocaux multilingues.

 

Définir les technologies à développer et à intégrer (ASR afin de personnaliser la commande vocale)

 

Choix de la technologie reconnaissance vocale personnalisée

 

Dans cette nouvelle étape, vous devez choisir entre 4 technologies disponibles : Wake up Word (WUW), Reconnaissance automatique de la parole (ASR), Traitement Automatique du Langage Naturel ou Text to Speech (TTS).

Dans ce cas, nous devrons utiliser l’ASR pour travailler sur la grammaire.

 

2) Prendre en main l’outil d’édition de grammaire

 

Reconnaissance vocale personnalisée plugin éditeur de grammaire VDK

 

Nous allons maintenant procéder à l’édition de la grammaire ; cette étape se déroulera en 5 temps.

  1. Cliquez sur le fichier pour ouvrir l’éditeur de grammaire
  2. Sélectionnez la langue de votre grammaire (surtout si vous travaillez sur une grammaire multilingue)
  3. Rédigez votre grammaire personnalisée ici
  4. Enregistrez et compilez pour utiliser votre grammaire
  5. Cliquez sur « Test » et expérimentez votre grammaire à l’aide de votre microphone ou des fichiers audio préenregistrés

 

Quelques éléments utiles pour rédiger une grammaire :

Chaque ligne doit se terminer par un point-virgule ;

<x> -> Nom de la règle

[x] -> Valeur optionnelle

| -> « ou »

!function(X, Y)

Fonctions utiles :

  • !tag(X, Y); Balise (X) mots (Y) pour faciliter l’interprétation du résultat
  • !repeat(X, Y, Z); Répète les mots (X) au moins Y fois jusqu’à Z fois
  • !pronounce « X » PRONAS « Y »; Remplace la prononciation d’un mot (X) par la prononciation d’un autre mot (Y). Vous pouvez mettre | PRONAS « Z » pour ajouter diverses prononciations.

 

3) Créer une grammaire pour la commande vocale personnalisée

 

<main> : Je veux une pizza ;

Maintenant votre assistant sera capable de détecter une commande de pizza.

Rendons cet assistant plus intelligent.

 


 

<main> : Je veux une [pizza] !tag(PIZZA_TYPE, <pizza>) ;

<pizza> : margherita | proscuiutto e funghi | capricciosa | vegetariana | calzone ;

Et maintenant, mon assistant me permet de sélectionner un type de pizza dans une liste prédéfinie.

 


 

Pour améliorer la détection du nom de la pizza lors de la prononciation à l’américaine ou à l’italienne nous avons ajouté la fonction !pronounce

!pronounce « capricciosa » PRONAS « caprikiosa » | PRONAS « caprichioza » ;

Ceci nous permet de configurer une prononciation plus attendue pour un mot

 


 

Nous améliorons encore plus notre grammaire pour permettre différents verbes d’action et la possibilité de commandent un nombre de pizza.

<main> : <verb>(a | <nombre>) [pizza] <pizza> ;

<verb> : Je (veux | voudrais) ;

<number> : !tag(NUMBER, 1 | 2 | 3) ;

<pizza> : [pizza] !tag(PIZZA_TYPE, margherita | proscuiutto e funghi | capricciosa | vegetariana | calzone) ;

Nous avons également déplacé la fonction !tag pour conserver la lisibilité de la règle <main>.

 


 

Mettons en œuvre la fonction de répétition afin que notre assistant puisse prendre la commande de tout un groupe de personne à la fois.

<main> : <verb> !repeat((a | <number>) <pizza> [et [<verb>]], 1, *) ;

La fonction !repeat permet la répétition d’un segment de notre phrase.

Comme vous pouvez le constater, nous avons ajouté [et [<verb>]] à la fin de la parenthèse. Ce segment est totalement facultatif mais permet une plus grande interaction avec l’assistant.

Exemples de phrases valides :

  • « Nous voulons une margherita »
  • « Je voudrais une pizza capricciosa et 2 vegetariana »
  • « Je veux une margherita, 2 capricciosa et je voudrais une calzone »

 


 

Avec toute cette nourriture, quelques boissons seraient appréciées.

<main> : <verb> !repeat((a | <number>) (<pizza> | <drinks>) [and [<verb>]], 1, *) ;

<boissons> : !tag(DRINK_FORMAT, verre | bouteille) of] !tag(DRINK_TYPE, eau | coca | vin | bière) ;

 


 

Et enfin, ajoutons une autre action à notre assistant, pour le rendre plus complet. Je veux pouvoir demander le temps restant pour que ma commande soit prête.

Je crée une nouvelle règle <time_left> et déplace le contenu de <main> vers une nouvelle règle <order>.

 

La grammaire de reconnaissance vocale finie et personnalisée

 

#BNF+EM V2.1 ;

!grammar ASR-FR ;

!start <main> ;

!pronounce « capricciosa » PRONAS « caprikiosa » | PRONAS « caprichioza » ;

<main> : <order> | <time_left> ;

<time_left> : Combien de temps restant [pour (notre | ma) commande] ;

<order> : <verb> !repeat((une | <number>) (<pizza> | <drinks>) [(et | avec) [<verb>]], 1, *) ;

<verb> : Je (veux | voudrais) ;

<number> : !tag(NUMBER, 1 | 2 | 3) ;

<pizza> : [pizza] !tag(PIZZA_TYPE, margherita | proscuiutto e funghi | capricciosa | vegetariana | calzone) ;

<drinks>: [!tag(DRINK_FORMAT, verre | bouteille) (de | d’)] !tag(DRINK_TYPE, eau | coca | vin | bière);

 

Dès à présent, donnons une commande vocale :

« Je veux une capricciosa et une bouteille d’eau. »

Comme nous avons mis des balises, ce résultat est très facile à interpréter.

Ceci est un court exemple vous montrant une des façons de penser une grammaire. Nous recommandons le travail itératif, car il permet généralement de couvrir un maximum de cas d’usages très facilement.

 

Merci d’avoir lu cet article. Nous espérons qu’il vous aidera à trouver des idées pour vos projets et que vous vous amuserez à construire des grammaires !

Pour les développeurs, par des développeurs

Commencez à développer votre solution d'IA vocale avec le VDK

1

Inscrivez-vous sur la Console

Avant d'intégrer la voix avec le VDK, testez notre Console en ligne.

2

Développez et testez

Définissez et créez votre projet pour développer vos fonctionnalités.

3

Partagez votre projet

Partagez votre projet et discutez-en avec nos experts pour une intégration.

console by vivoka - demo ar/vr francais

C'est toujours le bon moment pour en apprendre plus sur les applications de la technologie vocale