MODELES DE LANGUAGE DYNAMIQUES POUR LA RECONNAISSANCE DE LA PAROLE
La présente invention se rapporte au domaine de la reconnaissance vocale. Plus précisément, l'invention concerne les interfaces vocales à large vocabulaire.
Elle s'applique notamment dans le domaine de la télévision.
Les systèmes d'information ou de contrôle utilisent de plus en plus souvent une interface vocale pour rendre rapide et intuitive l'interaction avec l'utilisateur. Ces systèmes devenant plus complexes, les styles de dialogue supportés sont de plus en plus riches, et l'on entre dans le domaine de la reconnaissance vocale continue, à très large vocabulaire.
On sait que la conception d'un système de reconnaissance vocale continue, à large vocabulaire, suppose de produire un modèle de langage qui définit ou approxime les enchaînements acceptables de mots, ces enchaînements constituant les phrases reconnues par le modèle de langage.
Dans un système à large vocabulaire, le modèle de langage permet donc au module de traitement vocal de construire la phrase (c'est-à-dire la suite de mots) la plus probable par rapport au signal acoustique qui lui est présenté. Cette phrase doit ensuite être analysée par un module de compréhension afin de la transformer en une série d'actions adéquates au niveau du système commandé vocalement.
Actuellement, deux approches sont couramment utilisées, à savoir les modèles de type N-gram et les grammaires.
On considère dans la suite les modèles de langage sous forme de grammaire, ce qui n'est pas limitatif, car les applications vocales devenant plus complexes, elles nécessitent de plus en plus des formalismes très expressifs pour le développement des modèles de langage.
Selon l'état de la technique, les systèmes de reconnaissance vocale utilisant des grammaires les compilent sous une forme d'automate à états fini.
C'est cet automate qui est utilisé par le module de traitement vocal afin d'analyser les suites de mots conformes à la grammaire.
Une telle approche a l'avantage de minimiser le coût apparent à l'exécution, puisque la grammaire est transformée une fois pour toutes avant l'exécution (par un processus de compilation) en une représentation interne parfaitement taillée pour les besoins du module de traitement vocal. Par contre, elle a l'inconvénient de construire une représentation (automate) qui peut devenir très consommatrice de mémoire dans le cas de grammaires complexes, ce qui peut poser des problèmes de ressources sur le système informatique d'exécution, et
peut même ralentir l'exécution si la sollicitation du mécanisme de pagination de la mémoire virtuelle du système d'exécution devient trop fréquente.
De plus, comme indiqué plus haut, les grammaires se complexifient en taille et en expressivité au fur et à mesure de la généralisation des systèmes à commande vocale. Ceci ne fait qu'augmenter la taille de l'automate associé et donc aggraver les inconvénients mentionnés ci-dessus.
L'invention selon ses différents aspects a notamment pour objectif de pallier ces inconvénients de l'art antérieur.
Plus précisément, un objectif de l'invention est de fournir un système et un procédé de reconnaissance vocale optimisant l'utilisation de la mémoire, notamment pour les applications à large vocabulaire.
L'invention a également pour objectif une réduction des coûts de mises en œuvre ou d'utilisation.
Un objectif complémentaire de l'invention est de fournir un procédé permettant une économie d'énergie, notamment lorsque le procédé est mis en œuvre dans un dispositif avec une source d'énergie autonome (par exemple une télécommande infrarouge ou un téléphone mobile).
Un objectif de l'invention est également une amélioration de la rapidité de la reconnaissance vocale. Dans ce but, l'invention propose un procédé de reconnaissance vocale, remarquable en ce qu'il comprend une étape de reconnaissance vocale prenant en compte au moins un modèle de langage grammatical et mettant en œuvre un algorithme de décodage destiné à identifier une suite de mots à partir d'une suite d'échantillons vocaux, le modèle de langage étant associé à au moins un automate à états, fini ou infini, développé dynamiquement.
On note qu'ici, le ou les automates à états finis sont développés dynamiquement en fonction notamment des besoins, par opposition aux automates développés statiquement qui sont développés de manière complète, systématiquement.
On note également que les automates infinis peuvent bénéficier de cette technique puisque seule une partie finie de l'automate est développée.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de développement dynamique en largeur du ou des automates à partir d'au moins une grammaire définissant un modèle de langage.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de construction d'au moins une partie d'un automate comprenant au moins une branche, chaque branche comprenant au moins un nœud, l'étape de
construction comprenant une sous-étape de développement sélectif du ou des nœuds, selon une règle prédéterminée.
Ainsi, préférentiellement, le procédé ne permet pas le développement systématique de tous les nœuds mais sélectivement selon une règle prédéterminée. Selon une caractéristique particulière, le procédé est remarquable en ce que l'algorithme comprend une étape de requête de développement d'au moins un nœud non développé permettant un développement du ou des nœuds selon la règle prédéterminée. Ainsi, le procédé permet avantageusement le développement des nœuds requis par l'algorithme lui-même en fonction de ses besoins, liés notamment aux informations acoustiques entrantes. Ainsi, si un passage par un nœud donné non développé est peu vraisemblable, l'algorithme ne va pas requérir le développement de ce nœud. En revanche, un passage vraisemblable par ce nœud entraînera son développement.
Selon une caractéristique particulière, le procédé est remarquable en ce que, selon la règle prédéterminée, pour chaque branche, chaque premier nœud de la branche est développé.
Ainsi, de façon avantageuse, le procédé autorise systématiquement le développement du premier nœud de chaque branche issue d'un nœud développé.
Selon une caractéristique particulière, le procédé est remarquable en ce que, pour au moins une branche comprenant un premier nœud et au moins un nœud suivant le premier nœud, l'étape de construction comprend une sous-étape de remplacement du ou des nœuds suivants par un nœud spécial non développé.
Ainsi, le procédé ne permet avantageusement que les développements de nœuds nécessaires, économisant ainsi des ressources d'un dispositif mettant en œuvre le procédé. Selon une caractéristique particulière, le procédé est remarquable en ce que l'algorithme de décodage est un algorithme de décodage à maximum de vraisemblance.
Ainsi, le procédé est avantageusement compatible avec un algorithme à maximum de vraisemblance, tel notamment l'algorithme de Viterbi permettant ainsi une reconnaissance vocale fiable et d'une complexité raisonnable de mise en œuvre, notamment dans le cas d'applications à large vocabulaire.
L'invention concerne également un dispositif de reconnaissance vocale, remarquable en ce qu'il comprend des moyens de reconnaissance vocale prenant en compte au moins un modèle de langage grammatical et mettant en œuvre un algorithme de décodage destiné à identifier une suite de mots à partir d'une suite d'échantillons vocaux, le modèle de langage étant associé à un automate à états, fini ou infini, développé dynamiquement.
L'invention concerne, en outre, un produit programme d'ordinateur comprenant des éléments de programme, enregistrés sur un support lisible par au moins un microprocesseur, remarquable en ce que les éléments de programme contrôlent le ou les microprocesseurs pour qu'ils effectuent une étape de reconnaissance vocale prenant en compte au moins un modèle de langage grammatical et mettant en œuvre un algorithme de décodage destiné à identifier une suite de mots à partir d'une suite d'échantillons vocaux, le modèle de langage étant associé à un automate à états, fini ou infini, développé dynamiquement.
L'invention concerne, aussi, un produit programme d'ordinateur, remarquable en ce que le programme comprend des séquences d'instructions adaptées à la mise en œuvre du procédé de reconnaissance vocale décrit précédemment lorsque le programme est exécuté sur un ordinateur.
Les avantages du dispositif de reconnaissance vocale, et des produits programme d'ordinateur sont les mêmes que ceux du procédé de reconnaissance vocale, ils ne sont pas détaillés plus amplement.
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels :
- la figure 1 présente un synoptique général d'un système comprenant un boîtier à commande vocale, dans lequel la technique de l'invention est mise en œuvre;
- la figure 2 présente un synoptique du boîtier de reconnaissance vocale du système de la figure 1 ;
- la figure 3 décrit un schéma électronique d'un boîtier de reconnaissance vocale mettant en œuvre le synoptique de la figure 2;
- la figure 4 décrit un automate statique de reconnaissance vocale, connu en soi ;
- la figure 5 présente un algorithme de développement dynamique en largeur d'un nœud mis en œuvre par le boîtier des figures 1 et 3 ; - les figures 6 à 10 illustrent des demandes de développement d'un réseau dynamique de reconnaissance vocale, selon l'algorithme de la figure 5.
Si l'on revient au fonctionnement standard d'un module de traitement vocal, l'on constate que pour une entrée acoustique donnée, seulement un infime sous-ensemble de l'automate représentant le modèle de langage est exploré, du fait de l'élagage important opéré par le module de traitement vocal. En effet, parmi tous les mots grammaticalement acceptables à une étape donnée du calcul, la très grande majorité sera
disqualifiée, du fait de la trop grande différence phonético-acoustique avec le signal entrant dans le système.
Partant de cette constatation, le principe général de l'invention repose sur le remplacement de la représentation sous forme d'un automate calculé statiquement par une représentation dynamique permettant le développement progressif de la grammaire, ce qui permet de résoudre le problème de taille.
Ainsi, l'invention consiste à utiliser une représentation permettant de développer les amorces de phrases de manière progressive.
Intuitivement, cela revient à remplacer une représentation en extension de l'automate (c'est-à-dire qui énumère tous ses états) associé à la grammaire, par une représentation en " intension ", c'est-à-dire une représentation qui permet de calculer au fur et à mesure des besoins les parties de l'automate potentiellement intéressantes pour la suite du processus de reconnaissance.
Les techniques de programmation permettant d'exploiter cette représentation en " intension " sont basées, par exemple, sur :
- des techniques de recherche de plus courts chemins dans les graphes, (décrites notamment dans l'ouvrage " Graphes et Algorithmes ", écrit par Michel Gondran et Michel Minoux et paru en 1990 aux éditions Eyrolles); des techniques d'évaluation paresseuse utilisées dans les compilateurs des langages fonctionnels (telles que décrites dans le livre " The Implementation of Functional
Programming Languages " ou, en français " l' implementation des langages de programmation fonctionnelles ", écrit par Simon Peyton Jones et paru en 1987 aux éditions Prentice Hall International Séries on Computer Science) ; ainsi que
- des techniques connues de démonstration automatique comme le " strucrure- sharing " (dont on trouvera une description dans le livre " Principles of Artificial
Intelligence " ou, en français, " les principes de l'intelligence artificielle ", écrit par Nils Nilsson et paru en 1980 aux éditions Springer-Verlag).
On présente, en relation avec la figure 1, un synoptique général d'un système comprenant un boîtier à commande vocale 102 mettant en œuvre la technique de l'invention.
On note que ce système comprend notamment :
- une source vocale 100 pouvant notamment être constituée d'un microphone destiné à capter un signal vocal produit par un locuteur ;
- un boîtier de reconnaissance vocale 102 ; - un boîtier de commande 105 destiné à piloter un appareil 107 ;
- un appareil commandé 107, par exemple de type téléviseur ou magnétoscope.
La source 100 est reliée au boîtier de reconnaissance vocale 102, via une liaison
101 qui lui permet de transmettre une onde source analogique représentative d'un signal vocal vers le boîtier 102.
Le boîtier 102 peut récupérer des informations 104 de contexte (telles que par exemple, le type d'appareil 107 pouvant être contrôlé par le boîtier de commande 105 ou la liste des codes de commandes) via une liaison 104 et émettre vers le boîtier de commande 105 des commandes via une liaison 103.
Le boîtier de commande 105 émet des commandes via une liaison 106 par exemple infrarouge vers l'appareil 107. Selon le mode de réalisation considéré la source 100, le boîtier de reconnaissance vocale 102 et le boîtier de commande 105 font partie d'un même dispositif et ainsi les liaisons 101, 103 et 104 sont des liaisons internes au dispositif. Par contre, la liaison 106 est typiquement une liaison sans fil.
Selon une première variante de réalisation de l'invention décrite à la figure 1, les éléments 100, 102 et 105 sont en partie ou complètement séparés et ne font pas partie d'un même dispositif. Dans ce cas, les liaisons 101, 103 et 104 sont des liaisons externes filaires ou non.
Selon une deuxième variante, la source 100, les boîtiers 102 et 105 ainsi que l'appareil 107 font partie d'un même dispositif et sont reliés entre eux par des bus internes (liaisons 101, 103, 104 et 106). Cette variante est particulièrement intéressante quand le dispositif est, par exemple, un téléphone ou terminal de télécommunication portable.
La figure 2 présente un synoptique d'un boîtier à commande vocale tel le boîtier
102 illustré en regard de la figure 1. On note que le boîtier 102 reçoit de l'extérieur l'onde source analogique 101 qui est traitée par un Décodeur Acoustico-Phonétique 200 ou DAP (appelé " front-end " en anglais). Le DAP 200 échantillonne à intervalles réguliers (typiquement toutes les 10ms) l'onde source 101 pour produire des vecteurs réels ou appartenant à des livres de code (ou " code books " en anglais), représentant typiquement des résonances buccales qui sont émises via une liaison 201 vers un moteur de reconnaissance 203.
On rappelle qu'un décodeur acoustico-phonétique traduit les échantillons numériques en symboles acoustiques choisis dans un alphabet prédéterminé.
Un décodeur linguistique traite ces symboles dans le but de déterminer, pour une séquence A de symboles, la séquence W de mots la plus probable, étant donné la séquence A. Le décodeur linguistique comporte un moteur de reconnaissance utilisant un modèle acoustique et un modèle de langage. Le modèle acoustique est par exemple un modèle dit " Markov caché " (" Hidden Markov Model " ou HMM). Il calcule de
façon connue en soi les scores acoustiques des séquences de mots considérées. Le modèle de langage mis en œuvre dans le présent exemple de réalisation est basé sur une grammaire décrite à l'aide de règles de syntaxe de forme Backus Naur. Le modèle de langage est utilisé pour déterminer une pluralité d'hypothèses de séquences de mots et pour calculer des scores linguistiques.
Le moteur de reconnaissance est basé sur un algorithme de type Viterbi appelé " n-best ". L'algorithme de type n-best détermine à chaque étape de l'analyse d'une phrase les n séquences de mots les plus probables. En fin de phrase, la solution la plus probable est choisie parmi les n candidats, à partir des scores fournis par le modèle acoustique et le modèle de langage.
On décrit maintenant plus particulièrement le fonctionnement du moteur de reconnaissance. Comme mentionné, ce dernier utilise un algorithme de type Viterbi (algorithme n-best) pour analyser une phrase composée d'une séquence de symboles (vecteurs) acoustiques. L'algorithme détermine les N séquences de mots les plus probables, étant donné la séquence A de symboles acoustiques observée jusqu'au symbole courant. Les séquences de mots les plus probables sont déterminées à travers le modèle de langage de type grammaire stochastiques. En liaison avec les modèles acoustiques des éléments terminaux de la grammaire, qui sont basés sur des HMM (Modèles de Markov Cachés ou " Hidden Markov Models "), on produit alors un modèle de Markov caché global pour l'application, qui inclut donc le modèle de langage et par exemple les phénomènes de coarticulations entre éléments terminaux. L'algorithme de Viterbi est mis en œuvre en parallèle, mais au lieu de retenir une seule transition vers chaque état lors de l'itération i, on retient pour chaque état les N transitions les plus probables. Des informations concernant en particulier les algorithmes de Viterbi, de recherche par faisceau et de " n-best " sont donnés dans l'ouvrage :
" Statistical methods for speech récognition " par Frederik Jelinek, MIT press 1999 ISBN 0-262-10066-5 chapitres 2 et 5 en particulier.
L'analyse effectuée par le moteur de reconnaissance s'arrête lorsque l'ensemble des symboles acoustiques relatifs à une phrase a été traité. Le moteur de reconnaissance dispose alors d'un treillis constitué des états à chaque itération précédente de l'algorithme et des transitions entre ces états, jusqu'aux états finaux. En dernier lieu, on retient parmi les états finaux et leurs N transitions associées les N transitions les plus probables. En retraçant les transitions à partir des états finaux, on détermine les N séquences de mots les plus probables correspondant aux symboles acoustiques. Ces séquences sont alors soumises à un traitement utilisant un parseur dans un but de sélectionner l'unique séquence finale sur des critères grammaticaux.
Ainsi, à l'aide de dictionnaires 202, le moteur de reconnaissance 203 analyse les vecteurs réels qu'il reçoit en utilisant notamment des modèles de Markov cachés ou
HMM (de l'anglais Hidden Markov Models) et des modèles de langage (qui représentent la probabilité pour qu'un mot suive un autre mot) selon un algorithme de Viterbi avec développement dynamique en largeur des états qui est détaillé plus loin.
Le moteur de reconnaissance 203 fournit des mots qu'il a identifiés à partir des vecteurs reçus à un moyen de traduction de ces mots en commandes pouvant être comprises par l'appareil 107. Ce moyen utilise un procédé de traduction à intelligence artificielle qui lui-même prend en compte un contexte 104 fourni par le boîtier de commande 105 avant d'émettre une ou plusieurs commandes 103 vers le boîtier de commande 105.
La figure 3 illustre schématiquement un module ou dispositif de reconnaissance vocale 102 tel qu'illustré en regard de la figure 1, et mettant en œuvre le synoptique de la figure 2. Le boîtier 102 comprend reliés entre eux par un bus d'adresses et de données : une interface vocale 301 ; un convertisseur Analogique-Numérique 302 un processeur 304 ; une mémoire non volatile 305 ; - une mémoire vive 306 ; et une interface 307 de commande d'un appareil. Chacun des éléments illustrés en figure 3 est bien connu de l'homme du métier. Ces éléments communs ne sont pas décrits ici.
On observe en outre que le mot " registre " utilisé dans toute la description désigne dans chacune des mémoires mentionnées, aussi bien une zone de mémoire de faible capacité (quelques données binaires) qu'une zone mémoire de grande capacité
(permettant de stocker un programme entier ou l'intégralité d'une séquence de données de transactions).
La mémoire non volatile 305 (ou ROM) conserve dans des registres qui par commodité possèdent les mêmes noms que les données qu'ils conservent :
- le programme de fonctionnement du processeur 304 dans un registre "prog " 308 ;
- un dictionnaire phonétique des mots devant être compris par le moteur de reconnaissance dans un registre 309 ; et un dictionnaire grammatical des nœuds non terminaux utilisé par le moteur de reconnaissance pour construire des automates, dans un registre 310.
La mémoire vive 306 conserve des données, des variables et des résultats intermédiaires de traitement et comprend notamment :
- un automate 313 ; et
- une représentation d'un treillis 314.
La figure 4 illustre un automate statique de reconnaissance vocale, connu en soi, qui permet de décrire un treillis de Viterbi utilisé pour la reconnaissance vocale. Selon l'état de l'art, l'intégralité de ce treillis est prise en compte.
Par souci de clarté, on considère un modèle de petite taille qui correspond à la reconnaissance d'une question liée au programme de chaîne de télévision. Ainsi, on suppose qu'un boîtier de commande vocale doit reconnaître une phrase du type " Qu'est qu'il y a, à une certaine date, sur une certaine chaîne de télévision ? ". L'automate correspondant, selon l'état de l'art, est développé in extenso selon la figure 4 et comprend : des nœuds représentés sous une forme rectangulaire, qui sont expansés ; et des nœuds terminaux sous une forme elliptique, qui ne sont pas expansés et qui correspondent à un mot ou une expression du langage courant. Ainsi, le nœud de base 400 " G " est expansé en quatre nœuds 401, 403, 404 et
406, conformément à la règle de grammaire:
<G> = qu' est-ce qu' il y a <Date> sur <Chaîne> Il n'y a qu'une possibilité pour les nœuds 401 et 404 qui correspondent donc à des nœuds terminaux respectivement 402 (" qu' est-ce qu' il y a ") et 405 (" sur ") .
En revanche, le nœud 403 (" Date ") est développé en deux nœuds 407 (" j our ") et 408 (" Complément Jour ") qui sont eux mêmes expansés suivant une alternative (respectivement 409 (" ce ") et 413 (" demain ") pour le jour et 410 (" midi ") et 411 (" soir ") pour le complément conformément aux règles : <Date> = <Jour> <Complément Jour>
<Jour> = ce | demain <Complément Jour> = midi | soir
Ainsi, la date peut être décodée selon quatre possibilités : " ce midi ", " ce soir ", " demain midi " et " demain soir ". De même, le nœud 406 (" Chaîne ") est développé en une alternative :
- deux nœuds successifs 417 (" la ") correspondant à un nœud terminal 419 et 418 ( " Chaînel2 ") qui est lui-même expansé selon une alternative comprenant les nœuds 420 (" une ") et 422 (" deux ") associés respectivement aux nœuds terminaux 421 et 423; ou - un nœud 424 (" FR3 ") qui correspond à un nœud terminal 425 ; conformément aux règles: <Chaîne> = la <Chaînel2> I FR3
<Chaînel2> = une | deux
On peut noter que cet automate, bien que correspondant à un modèle de petite taille, comprend de nombreux états développés et conduit à un treillis de Viterbi nécessitant déjà une mémoire et des ressources de calcul non négligeables relativement à la taille du modèle (on note que la taille du treillis croît avec le nombre d'états de l'automate).
Selon l'invention, on remplace un automate entièrement calculé statiquement par un automate calculé au fur et à mesure des besoins de l' algorithme de Viterbi qui cherche à déterminer le meilleur chemin dans cet automate. C'est ce que l'on nomme le " développement dynamique en largeur ", puisque la grammaire est développée sur tous les fronts jugés intéressants par rapport à l'information acoustique entrante.
Ainsi, la figure 5 décrit un algorithme de développement dynamique en largeur d'un nœud susceptible d'être expansé selon l'invention. Cet algorithme est mis en œuvre par le processeur 304 du dispositif ou module de reconnaissance vocale 102 tel qu'illustré en regard de la figure 3.
Cet algorithme est appliqué aux nœuds à développer (tel que choisi par l'algorithme de Viterbi) d'une manière récursive pour former un automate comprenant pour base un nœud développé, jusqu'à ce que tous les successeurs immédiats soient étiquetés par un modèle markovien, c'est-à-dire qu'il faut développer récursivement tous les non-terminaux en partie gauche d'un automate (en supposant que l'automate est construit de gauche à droite, le premier élément d'une branche se trouvant donc à gauche).
Pour construire les portions d'automate nécessaires issues du développement d'un nœud, le processeur 304 utilise dynamiquement : - le dictionnaire 310 associé aux nœuds non-terminaux (qui permet d'obtenir leur définition) ; et - le dictionnaire 309 associé aux mots (qui permet d'obtenir leur HMM). On note que de tels dictionnaires sont connus en soi puisque également utilisés dans la construction statique d'automates complets selon l'état de l'art. Ainsi, selon l'invention, les nœuds spéciaux introduits (appelés " DynX" dans les figures) font aussi référence à des portions de définitions du dictionnaire et sont expansés au strict minimum des besoins.
Selon l'algorithme de développement d'un nœud, au cours d'une première étape 500, le processeur 304 initialise des variables de travail liées à la prise en compte du nœud considéré, et notamment un compteur de branches i.
Puis, au cours d'une étape 501, le processeur 304 prend en compte la ièms branche issue d'un premier développement du nœud considéré, qui devient la branche active à développer.
Ensuite, au cours d'un test 502, le processeur 304 détermine si le premier nœud de la branche active est un nœud terminal.
Dans la négative, au cours d'une étape 503, le processeur 304 développe le premier nœud de la branche active, sur base de l'algorithme défini en regard de la figure 5 selon un mécanisme récursif.
Si le résultat du test 502 est positif ou à la suite de l'étape 503, au cours d'un test 504, le processeur 304 détermine si la branche active comporte un seul nœud.
Dans la négative, le processeur 304 groupe les nœuds suivants de la branche i en un seul nœud spécial Dynx qui ne sera développé ultérieurement qu'en cas de nécessité. L'exécution de l'algorithme de Viterbi peut en effet conduire à éliminer cette branche, la probabilité d'occurrence associée au premier nœud de la branche (matérialisée par la métrique de nœud dans le treillis développé à partir de l'automate) pouvant être trop faible par rapport à une ou plusieurs alternatives. Ainsi, dans ce cas, le développement du nœud spécial Dynx n'est pas effectué ce qui permet d'économiser du temps de calcul CPU de microprocesseur et de la mémoire.
Si le résultat du test 504 est positif ou à la suite de l'étape 505, au cours d'un test 506, le processeur 304 détermine si la branche active est la dernière branche issue du premier développement du nœud considéré.
Dans l'affirmative, au cours d'une étape 507, l'algorithme de développement d'un nœud prend fin.
Dans la négative, au cours d'une étape 508, le compteur de branche i est incrémenté d'une unité et l'étape 501 est réitérée.
A titre d'exemple, cet algorithme est appliqué à une entrée acoustique correspond à la phrase " qu' est-ce qu' il y a ce midi sur FR3? " avec la grammaire suivante :
<G> = qu'est-ce qu'il y a <Date> sur <Chaîne> <Date> = <Jour> <ComplémentJour>
<Jour> = ce | demain
<ComplémentJour> = midi | soir
<Chaîne> = la <Chaînel2> | FR3
<Chaînel2> = une | deux Sous l'hypothèse que les modèles acoustiques sont suffisamment fins pour différencier tous les mots de la grammaire, les demandes successives de développement
dynamique de l'algorithme de Viterbi conduiront aux états successifs de l'automate dynamique décrits dans les figures 6 à 10.
Ainsi, selon l'invention, l'automate va se construire petit à petit, au fur et à mesure des demandes de l'algorithme de Viterbi. On note que, lorsque l'algorithme de Viterbi demande un développement dynamique à partir d'un état de l'automate, le développement doit se poursuivre jusqu'à ce que tous les successeurs immédiats soient étiquetés par un modèle markovien, c'est- à-dire qu'il faut développer récursivement tous les non-terminaux en partie gauche (exemple : à la figure 3, le développement de <Date> est évidemment nécessaire, mais celui de < Jour> l'est aussi afin de rendre visibles les mots " ce " et " demain ").
La figure 6 présente l'automate issu de l'application à un premier nœud de base " G " 600, de l'algorithme de développement d'un nœud présenté en regard de la figure 5, selon l'invention.
On note que le nœud " G " 600 se décompose en une seule branche. Le premier nœud "qu' est ce qu' il y a " 601 de cette branche est un nœud terminal. Il est donc associé directement à l'expression 603 correspondante.
La branche contient au moins un autre nœud selon la grammaire décrivant ce nœud. On va donc représenter cette branche sous la forme d'un premier nœud et d'un nœud spécial Dynl qui n'est pas développé. Le nœud 600 se décompose en une seule branche. Le développement du nœud
600 est donc terminé.
En résumé, l'automate ainsi construit est défini, selon le formalisme précédemment utilisé, de la manière suivante :
<G> = qu' est-ce qu' il y a <Dynl> La figure 7 présente l'automate issu de l'application au nœud spécial Dynl 602, de l'algorithme de développement d'un nœud présenté en regard de la figure 5, selon l'invention.
L'algorithme de Viterbi considérant comme vraisemblable le début de phrase " qu ' e s t - ce qu ' i 1 y a ", va requérir le développement du nœud 602. On note que le nœud 602 se décompose en une seule branche.
Le premier nœud "Date" 700 de cette branche n'est pas un nœud terminal. Il est donc développé de manière récursive selon l'algorithme de développement illustré en regard de la figure 5.
Le nœud 700 se décompose en une seule branche. Le premier nœud "Jour" 702 de cette branche n'est pas un nœud terminal. Il est donc lui-même développé.
Le nœud 702 se décompose en deux branches symbolisant une alternative.
Le premier nœud de chacune de ces deux branches respectivement "ce" 704 et "demain" 706 est un nœud terminal. Il est donc associé directement à l'expression correspondante respectivement 705 et 707.
Ces branches ne contenant qu'un seul nœud, le développement du nœud 702 est terminé.
La branche issue du nœud " Date " 703 contenant plus d'un nœud, elle se décompose en le nœud " Jour " 702 développé et en un nœud spécial DynS 703.
De même, la branche issue du nœud Dynl 602 contenant plus d'un nœud, elle se décompose en le nœud " Date " 700 développé et en un nœud spécial Dyn2 701. Le développement du nœud 600 est terminé de cette manière et, en résumé, l'automate issu du nœud 600 ainsi construit est défini, selon le formalisme précédemment utilisé, de la manière suivante :
<Dynl> = <Date> <Dyn2>
<Date> = <Jour> <Dyn3> <Jour> = ce | demain
La figure 8 présente l'automate issu de l'application au nœud spécial Dyn3 703, de l'algoritlime de développement d'un nœud présenté en regard de la figure 5, selon l'invention.
L'algorithme de Viterbi considérant comme vraisemblable le début de phrase " qu' est-ce qu' il y a ce", va requérir le développement du nœud 703.
On note que le nœud 703 se décompose en une seule branche.
Le seul nœud "Complément Jour" 800 de cette branche n'est pas un nœud terminal. Il est donc développé de manière récursive selon l'algorithme de développement illustré en regard de la figure 5. Le nœud 800 se décompose en deux branches symbolisant une alternative.
Le seul nœud de chacune de ces deux branches respectivement "midi" 801 et "soir" 804 est un nœud terminal. Il est donc associé directement à l'expression correspondante respectivement 802 et 804.
Ces branches ne contenant qu'un seul nœud, le développement du nœud 703 est terminé et, en résumé, l'automate issu du nœud 703 ainsi construit est défini, selon le formalisme précédemment utilisé, de la manière suivante :
<Dyn3> = <Complément Jour>
<Complément Jour> = midi | soir
La figure 9 présente l'automate issu de l'application au nœud spécial Dyn2 701, de l'algorithme de développement d'un nœud présenté en regard de la figure 5, selon l'invention.
L'algorithme de Viterbi considérant comme vraisemblable le début de phrase " qu' est-ce qu' il y a ce midi", va requérir le développement du nœud 703.
Le nœud 701 se décompose en une seule branche.
Le premier nœud "sur" 901 de cette branche est un nœud terminal. Il est donc associé directement à l'expression correspondante 903.
La branche contenant plus d'un nœud, elle se décompose en le nœud terminal "sur" 901 développé et en un nœud spécial Dyn4 704.
Le développement du nœud 701 est terminé de cette manière et, en résumé, l'automate issu du nœud 701 ainsi construit est défini, selon le formalisme précédemment utilisé, de la manière suivante :
<Dyn2> = sur <Dyn4>
La figure 10 présente l'automate issu de l'application au nœud spécial Dyn4 902, de l'algorithme de développement d'un nœud présenté en regard de la figure 5, selon l'invention. L'algorithme de Viterbi considérant comme vraisemblable le début de phrase
" qu' est-ce qu' il y a ce midi sur", va requérir le développement du nœud 902.
Le nœud 902 se décompose en deux branches symbolisant une alternative.
Le premier nœud de chacune de ces deux branches respectivement "la" 1000 et "FR3" 1004 est un nœud terminal. Il est donc associé directement à l'expression correspondante respectivement 1002 et 1004.
La première branche issue du nœud Dyn4 902 contenant plus d'un nœud, elle se décompose en le nœud " la " 1000 et en un nœud spécial Dyn5 1001.
La deuxième branche ne contenant qu'un seul nœud, le développement du nœud 600 est terminé de cette manière et, en résumé, l'automate issu du nœud 902 ainsi construit est défini, selon le formalisme précédemment utilisé, de la manière suivante :
<Dyn4> = la <Dyn5> | FR3
Selon l'exemple, si l'entrée acoustique correspond à la phrase " qu' est-ce qu' il y a ce midi sur FR3 ", l'algorithme de Viterbi élimine la possibilité d'avoir le mot " la " correspondant au nœud terminal 1002, sa probabilité d'occurrence étant très faible par rapport à l'alternative représentée par le nœud terminal " FR3 ". Il ne va donc pas demander le développement du nœud spécial Dyn5 1001 qui suit le nœud " la " 1002 sur la même branche.
On note qu'ainsi, on limite l'expansion de l'automate en fonction des données acoustiques entrantes. Selon l'exemple décrit, le vocabulaire est relativement étroit pour des raisons de clarté, mais, il est clair que la différence de taille entre un automate
construit dynamiquement et un automate statique croît en fonction de la largeur du vocabulaire.
Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. En particulier, l'homme du métier pourra apporter toute variante dans le développement dynamique en largeur et notamment dans la détermination des cas où un nœud spécial est inséré dans un automate. En effet, de nombreuses variantes pour cette insertion sont possibles entre les deux cas extrêmes que sont le mode de réalisation de l'invention décrit en figure 5 (un nœud n'est développé qu'en cas de nécessité), d'une part, et le cas statique de l'état de l'art, d'autre part.
De même, le procédé de reconnaissance vocale ne se limite pas au cas où un algorithme de Viterbi est mis en œuvre mais à tous les algorithmes utilisant un modèle de Markov, notamment dans le cas des algorithmes basés sur des treillis.
On note aussi que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en œuvre sous la forme d'une séquence d'instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur.