Soyez le premier à donner votre avis sur cette source.
Vue 20 515 fois - Téléchargée 2 019 fois
'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
27 févr. 2014 à 18:34
Ca marche et c'est génial !!! :-)
15 mai 2010 à 12:46
je relance le sujet semble-t-il close depuis 2007 ^^
j'ai lancé ce code et ca marche pas mal du tout
j'ai défini dans la grammaire : "exit application", "open file", "close file", "yes", "no", "select item one", "select item twoo" ... jusqu'a 10 et "let's go"
je suis heureux que tout marche enfin presque.
il ne reconnait pas les "select item x"
sauriez vous donner une raison à cela (autre que le fait que j'ai un accent anglais fort mauvais ^^ ca j'essaye de le debuguer mais ce n'est pas facile)
il me semble également qu'on peut définir des règles, ce qui devrait permetre de faire un groupe du genre "select item n" avec n un nombre
merci pour vos réponse.
(au passage un 10/10 ^^)
27 nov. 2007 à 09:57
Tu peux vérifier que la reconnaissance vocale marche en allant dans Panneau de config > Son, voix et périphériques > Voix
Là tu as un onglet Reconnaissance vocale, tu peut par exemple faire l'apprentissage. Si ça marche, le problème viens de la source (qui est pourtant largement testée). Si tu n'as pas accès à cet onglet et que tu n'as que Synthese vocale, c'est que MsSpeech est mal installé.
26 nov. 2007 à 23:56
Cela m'effraie. Pourtant j'ai testé le micro, l'E/S du micro etc... On me reçoit 5/5 sur TeamSpeak, mais le programme non.
Voilà ;)
26 nov. 2007 à 18:48
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.