Accueil > > > RECONNAISSANCE VOCALE SIMPLIFIÉE AVEC MICROSOFT SPEECH
RECONNAISSANCE VOCALE SIMPLIFIÉE AVEC MICROSOFT SPEECH
Information sur la source
Description
Ce code est une routine simplifiée de reconnaissance vocale. Pour le faire fonctionner il faudra dabord installer Microsoft Speech SDK 5.1 ( http://www.microsoft.com/downloads/details.aspx?Fa milyId=5E86EC97-40A7-453F-B0EE-6583171B4530&displa ylang=en ). Alors pour commencer, faites executer le projet, et dites de façon compréhensible "Say Hi everyone". "Say Hi Everyone" devrait s'afficher. Sinon, reprononcer plus clairement. Ensuit dites "Say It works" et "Say It works" devrait aussi s'afficher. Maintenant vous pouvez analyser le code.
Source
- 'Constante de la grammaire
- Const m_GrammarId = 14
- 'Variables de la reconnaisance
- Dim WithEvents RecoContext As SpSharedRecoContext
- Dim Grammar As ISpeechRecoGrammar ' La grammaire est
- 'une banque de mots. Le SDK chosira toujours un mot
- 'faisant partit de la grammaire
- Dim TopRule As ISpeechGrammarRule
- Dim ListItemsRule As ISpeechGrammarRule
- 'Constante du mot a dire avant la commande vocale
- Const m_def_PreCommandString = "Say"
- Dim m_PreCommandString As String
- 'Collection source de la grammaire
- Public GrammarSource As Collection
-
-
- Sub InitReco()
-
- 'Initie les variables
- Dim AfterCmdState As ISpeechGrammarRuleState
- Set RecoContext = New SpSharedRecoContext
- Set Grammar = RecoContext.CreateGrammar(m_GrammarId)
-
- 'TopRule=Le mot avant
- 'ListItemsRule=La règle qui détermine le 2e mot
- Set TopRule = Grammar.Rules.Add("TopLevelRule", SRATopLevel Or SRADynamic, 1)
- Set ListItemsRule = Grammar.Rules.Add("ListItemsRule", SRADynamic, 2)
- Set AfterCmdState = TopRule.AddState
-
- m_PreCommandString = m_def_PreCommandString
- TopRule.InitialState.AddWordTransition AfterCmdState, _
- m_PreCommandString, " ", , "", 0, 0
- AfterCmdState.AddRuleTransition Nothing, ListItemsRule, "", 1, 1
- RebuildGrammar GrammarSource
- Grammar.CmdSetRuleState "TopLevelRule", SGDSActive
-
- End Sub
-
-
- Sub RebuildGrammar(Source As Collection)
-
-
- Dim i As Integer
- For i = 1 To Source.Count
- Dim text As String
- text = Source(i)
- 'Ajoute tous les mots dans la grammaire
- ListItemsRule.InitialState.AddWordTransition Nothing, text, " ", , text, i, i
- Next
- 'Recompile la grammaire
- Grammar.Rules.Commit
- 'Avant de recompiler la prochaine fois, il faudra
- 'réajouter tous les mots, alors chaque fois que l'on
- 'veut modifier la grammaire, il faut réappeler
- 'RebuildGrammar
-
-
- End Sub
-
-
- Private Sub Form_Load()
-
- 'La source de la gramaire
- Set GrammarSource = New Collection
- GrammarSource.Add "Hi everyone"
- GrammarSource.Add "It works"
-
- 'Après avoir changer la source n'oublier jamais d'appeler
- 'RebuildGrammar (GrammarSource) pour mettre la grammaire a
- 'jour. Ici ce n'est pas nécessaire puisque InitReco
- 'appelle RebuildGrammar
-
- 'Assurez-vous de ne jamais avoir de double dans la grammaire
- 'sinon il y aura des erreurs
- InitReco
-
- End Sub
-
-
- Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
-
- 'Result.PhareInfo.GetText est le text lors de la reconnaissance
-
- Print Result.PhraseInfo.GetText
-
- 'Vous pouvez écrire vos code ici; exemple:
-
- 'Text=Result.PhraseInfo.GetText
- 'If Text="Say Hi everyone" then
- '...
- 'End If
-
- End Sub
'Constante de la grammaire
Const m_GrammarId = 14
'Variables de la reconnaisance
Dim WithEvents RecoContext As SpSharedRecoContext
Dim Grammar As ISpeechRecoGrammar ' La grammaire est
'une banque de mots. Le SDK chosira toujours un mot
'faisant partit de la grammaire
Dim TopRule As ISpeechGrammarRule
Dim ListItemsRule As ISpeechGrammarRule
'Constante du mot a dire avant la commande vocale
Const m_def_PreCommandString = "Say"
Dim m_PreCommandString As String
'Collection source de la grammaire
Public GrammarSource As Collection
Sub InitReco()
'Initie les variables
Dim AfterCmdState As ISpeechGrammarRuleState
Set RecoContext = New SpSharedRecoContext
Set Grammar = RecoContext.CreateGrammar(m_GrammarId)
'TopRule=Le mot avant
'ListItemsRule=La règle qui détermine le 2e mot
Set TopRule = Grammar.Rules.Add("TopLevelRule", SRATopLevel Or SRADynamic, 1)
Set ListItemsRule = Grammar.Rules.Add("ListItemsRule", SRADynamic, 2)
Set AfterCmdState = TopRule.AddState
m_PreCommandString = m_def_PreCommandString
TopRule.InitialState.AddWordTransition AfterCmdState, _
m_PreCommandString, " ", , "", 0, 0
AfterCmdState.AddRuleTransition Nothing, ListItemsRule, "", 1, 1
RebuildGrammar GrammarSource
Grammar.CmdSetRuleState "TopLevelRule", SGDSActive
End Sub
Sub RebuildGrammar(Source As Collection)
Dim i As Integer
For i = 1 To Source.Count
Dim text As String
text = Source(i)
'Ajoute tous les mots dans la grammaire
ListItemsRule.InitialState.AddWordTransition Nothing, text, " ", , text, i, i
Next
'Recompile la grammaire
Grammar.Rules.Commit
'Avant de recompiler la prochaine fois, il faudra
'réajouter tous les mots, alors chaque fois que l'on
'veut modifier la grammaire, il faut réappeler
'RebuildGrammar
End Sub
Private Sub Form_Load()
'La source de la gramaire
Set GrammarSource = New Collection
GrammarSource.Add "Hi everyone"
GrammarSource.Add "It works"
'Après avoir changer la source n'oublier jamais d'appeler
'RebuildGrammar (GrammarSource) pour mettre la grammaire a
'jour. Ici ce n'est pas nécessaire puisque InitReco
'appelle RebuildGrammar
'Assurez-vous de ne jamais avoir de double dans la grammaire
'sinon il y aura des erreurs
InitReco
End Sub
Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
'Result.PhareInfo.GetText est le text lors de la reconnaissance
Print Result.PhraseInfo.GetText
'Vous pouvez écrire vos code ici; exemple:
'Text=Result.PhraseInfo.GetText
'If Text="Say Hi everyone" then
'...
'End If
End Sub
Conclusion
Je devrais bientot faire paraitre une source pour faire parler l'ordinateur, qui fonctionne elle aussi avec Speech.
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|