begin process at 2012 02 15 12:07:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > RECONNAISSANCE VOCALE SIMPLIFIÉE AVEC MICROSOFT SPEECH

RECONNAISSANCE VOCALE SIMPLIFIÉE AVEC MICROSOFT SPEECH


 Information sur la source

Note :
7,83 / 10 - par 6 personnes
7,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :24/09/2003 Date de mise à jour :24/09/2003 04:49:54 Vu / téléchargé :14 495 / 1 533

Auteur : DevR

Ecrire un message privé
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

 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.




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de Tilois le 24/09/2003 07:22:48

hum j'ai déja posté un truc ds le meme genre ... les doublons c'est mal

Commentaire de DevR le 24/09/2003 22:04:53

Hey Tilois!

Le source similaire que t'a posté comporte des options de moins que la mienne, et vice-versa.

Ex:
-La tienne ne peut pas construire une grammaire sans fichier
-Elle utulise des API différents, et une façon de coder différente.
-Elle est moins commentée

Alors si tu es contre toutes les sources qui peuvent sembler similaire mais qui apporte du nouveau, et bien tu te place directement contre l'évolution.

(Et en pasant le réseau code-source a été monté pour ça : amener de nouvelles idées).

Donc prochaine fois, fais attention avant de crier "Au doublon!"

Commentaire de ZevTrantor le 24/09/2003 22:21:23

Bonsoir chers programmeurs,

Pour trancher dans votre débat, avant qu'il ne s'envenime trop, j'ai testé les deux sources. Finalement, j'ai trouvé que la source du programmeur DevR était : mieux commenté et offrait des meilleur fonctionnalités quant à la grammaire.

C'est pourquoi je donnerai environ 5 a Tilois et 8 a DevR.

Commentaire de Philippe734 le 06/10/2003 19:46:54

enfin de la vrais reconnaissance vocale ! et pas de la synthèse vocale, comme certain qui ont du mal à comprendre le francais lol

Commentaire de codefalse le 17/04/2004 13:07:27 administrateur CS

Salut tout le monde, moi j'ai un probleme avec ce script, a la ligne :
Dim Grammar As ISpeechRecoGrammar
Il me di que c'est pas défini par l'utilisateur ... et j'arrive pas a savoir pourquoi.
Malgré tout, j'ai installé le SDK1 de Speech de crosoft, et tout ce qu'il fallait pour que mon pc m'entende :p, mais rien n'y fait !

Kkn aurai une idée ?
Merci bien

Commentaire de Philippe734 le 17/04/2004 16:35:35

install :
cgram.exe
de microsoft, dsl mais g pas le lien.

Commentaire de codefalse le 26/04/2004 14:23:23 administrateur CS

Salut tlm
J'ai téléchargé comme tu me l'a proposé le cgram.exe de crosoft ... mais j'avais toujours la meme erreur... je me suis di que ca pouvait provenir de SDK que j'ai alors retéléchargé ... mais rien n'y fait, l'erreur est toujours la, c'est le "Dim Grammar As ISpeechRecoGrammar" qu'il digère pas...
J'ai essayé d'ouvrir les applis de SDK proposé dans le menu démarrer, programmes, mais memes ceux la ne marchent pas ... je ne sais pas trop d'ou vient l'erreur, mais une chose est sur, elel y est !!
Par contre, j'ai un .exe de crosoft qui s'appel speechsdk51msm.exe  ne contenant que des msm, et je ne sais pas ce que je doi en faire ... !!!

si vous pourriez m'aider !!

Merci bcp !!
Amicalement
CF

Commentaire de nihaoma le 12/06/2004 12:14:05

Salut,
je suis extremement interessé par ce genre de sources, jai donc telecharger tout ce qu'il fallait (SDk, et..), quand je lance le softs, il n'y à aucune erreur, mon micro est branché (je m'entends très bien), mais pourtant aucune réaction du soft (je veix bien croir que mon accent anglais n'est pas génail, mais après autant d'essais...)
tu pourais m'aider s'il te plais, ca m'interesse vraiment beaucoup ton truc ?

Commentaire de newhack25 le 08/10/2004 09:03:28

BONJOUR,

BON LA SYNTESE PAS MAL MAIS POUR L'ANNéE 2013,

ALLEZ S'IL VOUS PLAIS VISITER WWW.IGRATUIT.COM IL EST EN CONsTRUCTION MAIS IL Y'AURA UN TRUC COMME CODE SOURCE...

Commentaire de themrok666 le 11/10/2004 17:43:40

Ben moi g essayer (apres un long download :( ) et ca a marché deux fois, puis plus du tout...
Peu être le micro de mauvaise qualité, ... ce qui m'ennuie le plus c'est que ca a qd meme marché deux fois donc la source semble bonne... Probleme matériel ou probleme de code qui ne reconnait pas assez ?

Commentaire de themrok666 le 11/10/2004 19:10:57

Ok g compris en testant avec le prog de microsoft fait pr les test (installé avec le download) et en fait (j'ai honte lol) je parlais simplement trop fort -> saturation -> reconnait rien !
maintenant ca marche a merveille et je met 10/10 a cette source !
En plus les commentaires sont vmt bien !
Merci bcp et Tilois arrete de chialer si on "travaille" ici en open source c'est justement pour que tout le monde puisse amélioré les sources des autres et apprendre en copiant d'abord chez les autres :D

Commentaire de VBGenesis le 11/06/2006 12:03:54

Bonjour j'aimerai savoir si Codefalse a résolu son pb car j'avais le meme pb mais j'ai trouvé la solution alor si ca l'interresse ;) : lance le projet, il met l'erreur et ouvre la boite de dialogue composant et marque:"Manquant:Microsoft Speech Object Library". Tu décoche puis OK. Après tu vas dans Projet>Référence puis tu trouve "Microsoft Speech Object Library" et tu le coche. Apres ca dois marcher.
Merci a DevR d'avoir déposé cette source c'est exactement ce ke je voulais alors 10/10 ;))

Commentaire de VBGenesis le 11/06/2006 12:19:46

Ha si un truc: est-ce kon est obligé de dire "say" avant? et comment on fait pour changer la sensibilité?

Commentaire de codefalse le 11/06/2006 16:11:34 administrateur CS

etant donnée que ca date un peu (Commentaire de : codefalse le 26/04/2004) :p je m'en rappel plus tres bien, donc soi j'ai réussi, soi j'ai abandonné, bref je sais plus.
Donc c pas grave :)
Mais c'est tres gentil d'avoir proposé !!
Merci bien VBGenesis :)

Cordialement ...

Commentaire de VBGenesis le 12/06/2006 19:58:34

C'est fais pour sa Code-Sources! ;)

Commentaire de DevR le 12/06/2006 20:53:13

Wow, je suis vraiment surpris de voir une vague de commentaire sur cette source 2 ans plus tard. Je crois encore pouvoir vous aider.

À la ligne 11, il y a la définition de la constante m_def_PreCommandString. Pour changer le mot à dire avant la commande, il faut changer cette constante par le nouveau mot.

Pour ne pas avoir à dire de mot clé avant, simplement mettre "" devrait fonctionner.

Pour ce qui est de la sensibilité, si je me souviens bien, le speech SDK installe dans le panneau de configurations un système de réglage pour la captation de la voix.

Bonne chance et amusez-vous!

Commentaire de VBGenesis le 13/06/2006 18:52:30

Salut DevR et merci!

Il faut bien mettre "" à m_def_PreCommandString pour enlever le say il y a bien un réglage que je n'avais pas vu dans le panneau de congig

Et sinon ce n'est pas etonnant que l'on reparle de ta source car temp qu'il y a des adeptes pour un language de l'aide est toujours utiles

En tout cas merci de ton aide et bonne prog à tous!

Commentaire de ratomson le 27/09/2006 14:11:09

salut Nic,
tes programmes sont super comme ce site.

Commentaire de skull_missah le 16/10/2006 21:06:41

Salut,

Excellent!! et la meme chose en francais, c'est possible?? quelqu'un connaitrait-il si c'est possible? ou une autre methode ?

Merci beaucoup.

Commentaire de VBGenesis le 17/10/2006 18:49:45

Il faut trouver des librairies en francais mais la plupart sont payantes (genre dragon naturally speaking) mais tu peux toujour chercher sur internet

Commentaire de rock conrad le 18/12/2006 22:13:31

salut

je n'arrive pas a telecharger se ficher. il me donne une erreur.

Commentaire de VBGenesis le 19/12/2006 07:49:57

Salut Rock Conrad

Il te marque quelle genre d'erreur? C'est quand tu veux le télécharger ou l'ouvrir? Je viens juste de réessayer chez moi et ca marche! Es-tu sur d'avoir installé Microsoft Speech SDK, comme demandé plus haut?

@+

Commentaire de rock conrad le 19/12/2006 12:49:12

salut VBGenesis

en fait j'utilise le visual studio 2005. je telecharge en fait 5 fichiers mais il nya pas d'executable.les fichires telech sont form1 4kb, project1 1kb, project1 vbw 1 kb, readme code 1 kb et enfin source telecharge. je t'apprends neamoins que monsdk5.1 est installe car quelques application marche dans mon laptop.svp savez vous ou trouvez des livres de reconnaisance vocale ou speech recognition en vb ? j'en ai vraiment besoin.

merci.


Commentaire de rock conrad le 19/12/2006 12:49:14

salut VBGenesis

en fait j'utilise le visual studio 2005. je telecharge en fait 5 fichiers mais il nya pas d'executable.les fichires telech sont form1 4kb, project1 1kb, project1 vbw 1 kb, readme code 1 kb et enfin source telecharge. je t'apprends neamoins que monsdk5.1 est installe car quelques application marche dans mon laptop.svp savez vous ou trouvez des livres de reconnaisance vocale ou speech recognition en vb ? j'en ai vraiment besoin.

merci.


Commentaire de antho2005 le 22/12/2006 16:59:42

Salut,

moi il me marque :

Erreur automation
Le fichier spécifié est introuvable

et il me pointe la ligne ou il y a :

Set RecoContext = New SpSharedRecoContext

Si vous savez comment résoudre ce pb...
Merci d'avance

@+

Antho2005

Commentaire de greguy le 02/09/2007 20:02:52

Bonjour à tous...
Je suis étonné de voir que tout le monde a l'air extasié par ce code... Rien qu'en l'analysant, je vois qu'aucun handler n'est défini...
je pensais donc qu'en aucun cas la méthode "RecoContext_Recognition" n'est appelée... ce qui s'est confirmé quand j'ai exécuté le code...
en fait, il faudrait ajouter un p'tit
... Handles RecoContext.Recognition
derrière la méthode.

Sur ce... Bonne soirée!

Commentaire de xyp le 26/11/2007 11:05:27

En ce qui me concerne, celà ne marche pas, pourtant j'ai bien vérifié que je disposais de tous les fichiers requis ainsi qu'avoir bien déclaré la référence.
Concernant ce que marque Greguy, j'ai mis son ptit Handles mais je dois probablement l'avoir mal positionné...
Je la mets où plus précisément ? Quelle Sub ? Et écrit de quelle manière très rpécisément ?
Merci

Commentaire de VBGenesis le 26/11/2007 18:48:49

Que veux tu dire par "ça ne marche pas"? Peux-tu préciser?

Commentaire de xyp le 26/11/2007 23:56:19

Eh bien l'exécution à bien lieu, le seul soucis c'est que j'ai beau tordre la langue de shakespear en passant de l'accent français à celui texan, le prog est totalement incapable de ne détecter ne serait-ce que le mot "Hi".
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à  ;)

Commentaire de VBGenesis le 27/11/2007 09:57:48

Salut

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é.

Commentaire de Flocreate le 15/05/2010 12:46:35

bonjour,
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 ^^)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales