Speech Recognition Command and Control SAPI 5.1
Re: Speech Recognition Command (Reconnaissance vocale)
Arg je n'arrive pas à le faire marcher.
Probleme avec COMatePlus ?
"L'initiation de la reconnaissance vocale à échoué :["
			
			
									
									Probleme avec COMatePlus ?
"L'initiation de la reconnaissance vocale à échoué :["
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
						⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Speech Recognition Command (Reconnaissance vocale)
..........
			
			
													
					Dernière modification par Backup le mer. 13/juin/2012 18:39, modifié 2 fois.
									
			
									
						Re: Speech Recognition Command (Reconnaissance vocale)
Vivi tout de même ^^Dobro a écrit :questions bete ,
tu as Seven ?
tu as activé la reconnaissance vocale de Seven ? (il sert a rien de l'activer )
tu as crée le fichier XML ( "dico.xml") (utilise Notepad++ pour ça )
si tu sauve avec le Wordpad , tu vas avoir un "dico.xml.txt" ...c'est pas bon
Par contre je m'en vais tester le 1er code.
---edit----
le 1er code fonctionne pourtant bien
Arf je crois que j'ai trouvé, c'est bien le bloc note qui a créé des car spéciaux ... Je modifie et retest
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
						⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Speech Recognition Command (Reconnaissance vocale)
C'est bien mon bloc note qui avait squizzé les accents ^^
Par contre maintenant ce n'est pas Virginie qui tchatch, c'est la pauvre voix robotisée de windows.. Faut que je regarde ça de plus prés.
En tout cas, un grand merci à vous ! Y'a de quoi s'amuser comme un fou !
			
			
									
									Par contre maintenant ce n'est pas Virginie qui tchatch, c'est la pauvre voix robotisée de windows.. Faut que je regarde ça de plus prés.
En tout cas, un grand merci à vous ! Y'a de quoi s'amuser comme un fou !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
						⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Speech Recognition Command (Reconnaissance vocale)
sinon la procedureDobro a écrit :a ce propos , si vous installez Virginie (magnifique voix Française, en Sapi5 ) sous Win seven 64 bit
il est possible que cette vois n’apparaisse pas dans les voix disponible de Seven
pour la rendre disponible il faut allez dans :
Ordinateur > c:\ Windows > SysWOW64 > Speech >SpeechUX
et double cliquer dur le fichier "sapi.cpl" ; et voila , elle sera reconnue
je remet ici : le lien de la voix Virginie :
http://idee-association.org/wp-content/ ... French.zip
Code : Tout sélectionner
speakk(voix,text.s,volume,vitesse)par defaut 0 c'est la voix fourni de base
sauf si tu installe virginie
( en fait faudrai vérifier dans le panneauc de config a quel emplacement est la voix )
et mettre le paramettre voix avec le numero (0,1,2,3,4..etc )
ps : j'ai fait une librairie qui permet d'afficher/recuperer le nom des voix, de parler ..etc .. lib_Speak .. faut que je la remette en ligne
le paramettre voix deviens une chaine comprenant directement le nom de la voix a faire parler ...
Re: Speech Recognition Command (Reconnaissance vocale)
oupsOrdinateur > c:\ Windows > SysWOW64 > Speech >SpeechUX
et double cliquer dur le fichier "sapi.cpl" ; et voila , elle sera reconnue
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
						⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Speech Recognition Command (Reconnaissance vocale)
autre exemple , utilisation avec un programme comprenant des boutons , et des case a cocher 
il faut mettre dans le meme emplacement ceci avec comme nom "dico_choix.xml"
se sera le dictionnaire de mots reconnu dans le programme ...
contrairement a celui au dessus, ce programme ne comprends que la formulation simple
par exemple pour le bouton "ok" , il faut dire "ok" ... rien avant , rien apres
dans le dico , seul les termes :"ok,annuler,nico,vache,poisson,chat,quitter" seront reconnus ..
les termes a reconnaitre dans le dico ont la forme :
voici le dictionnaire "dico_choix.xml"
voici le code :
			
			
													il faut mettre dans le meme emplacement ceci avec comme nom "dico_choix.xml"
se sera le dictionnaire de mots reconnu dans le programme ...
contrairement a celui au dessus, ce programme ne comprends que la formulation simple
par exemple pour le bouton "ok" , il faut dire "ok" ... rien avant , rien apres
dans le dico , seul les termes :"ok,annuler,nico,vache,poisson,chat,quitter" seront reconnus ..
les termes a reconnaitre dans le dico ont la forme :
Code : Tout sélectionner
 <item>
        [b]quitter[/b] [color=#004000]<<<<<<< ici le terme a reconnaitre[/color]
        <tag>$.mouskie={}; $.mouskie._value=[b]"quitter"[/b];</tag> [color=#004000]<<<<< ici le terme qui sera envoyé au prg[/color]
      </item>
Code : Tout sélectionner
<GRAMMAR LANGID="40C">
<RULE NAME="interface" TOPLEVEL="ACTIVE">
    <L>
   <P>ok</P>
   <P>quitter</P> 
   <P>annuler</P>
   <P>nono</P>
    <P>nico</P>
    </L>
</RULE>
<RULE NAME="choix" TOPLEVEL="ACTIVE">
    <L>
     <P>vache</P>
     <P>poisson</P>
	 <P>chat</P>
    </L>
</RULE>
</GRAMMAR> 
Code : Tout sélectionner
XIncludeFile "COMatePLUS.pbi"
;{ **************** init synthese Vocale ***************************************
;-init synthese vocale
Procedure Speak2(Text$)
	Interface ISpNotifySource Extends IUnknown
		SetNotifySink(a)
		SetNotifyWindowMessage(a,b,c,d)
		SetNotifyCallbackFunction(a,b,c)
		SetNotifyCallbackInterface(a,b,c)
		SetNotifyWin32Event()
		WaitForNotifyEvent(a)
		GetNotifyEventHandle()
	EndInterface
	
	Interface ISpEventSource Extends ISpNotifySource
		SetInterest(a,b)
		GetEvents(a,b,c)
		GetInfo(a)
	EndInterface
	
	Interface ISpVoice Extends ISpEventSource
		SetOutput(a,b)
		GetOutputObjectToken(a)
		GetOutputStream(a)
		Pause()
		Resume()
		SetVoice(a)
		GetVoice(a)
		Speak(a,b,c)
		SpeakStream(a,b,c)
		GetStatus(a,b)
		Skip(a,b,c)
		SetPriority(a)
		GetPriority(a)
		SetAlertBoundary(a)
		GetAlertBoundary(a)
		SetRate(a)
		GetRate(a)
		SetVolume(a)
		GetVolume(a)
		WaitUntilDone(a)
		SetSyncSpeakTimeout(a)
		GetSyncSpeakTimeout(a)
		SpeakCompleteEvent()
		IsUISupported(a,b,c,d)
		DisplayUI(a,b,c,d,e)
	EndInterface
	
	#CLSCTX_INPROC_SERVER  = $1
	#CLSCTX_INPROC_HANDLER = $2
	#CLSCTX_LOCAL_SERVER   = $4
	#CLSCTX_REMOTE_SERVER  = $10
	#CLSCTX_ALL = (#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER)
	
	Global VoiceObject.ISpVoice
	
	
	
	length = Len(Text$)*2+10
	*mem = AllocateMemory(length)
	MultiByteToWideChar_(#CP_ACP ,0,Text$,-1,*mem, length)
	VoiceObject\Speak(*mem,0,0)
	
	DataSection
		CLSID_SpVoice:
		;96749377-3391-11D2-9EE3-00C04F797396
		Data.l $96749377
		Data.w $3391,$11D2
		Data.b $9E,$E3,$00,$C0,$4F,$79,$73,$96
		IID_ISpVoice:
		;6C44DF74-72B9-4992-A1EC-EF996E0422D4
		Data.l $6C44DF74
		Data.w $72B9,$4992
		Data.b $A1,$EC,$EF,$99,$6E,$04,$22,$D4
	EndDataSection
	
	
EndProcedure
;} 
; **********************************************************************
;{ ************ init reconnaissance Vocale **************************************************************
;-init reconaissance Vocale
#CLSCTX_INPROC_SERVER  = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER   = $4
#CLSCTX_REMOTE_SERVER  = $10
#CLSCTX_ALL = (#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER)
enumeration
	#window
endenumeration
Structure Parametres
	SpRecoContext.i
	SpeechRecoGrammar.i
EndStructure
;Global VoiceObject.ISpVoice
Declare  OpenWindow_Window_0()
Declare  SpeechRecoContextEvents(event.COMateObject, event$, parameterCount)
Declare  Load_Speech_Recognition(*Speech_Recognition.Parametres, File.s)
Declare  Load_Speech_Recognition2(*Speech_Recognition.Parametres)
Declare  Finish_Speech_Recognition(*Speech_Recognition.Parametres)
Declare  Desactive_Recognition(*Speech_Recognition.Parametres, Valeur.l)
Declare  speakk(voix,text.s,volume,vitesse)
CoInitialize_(0)
; **********  chargement du Dico ************************
File.s = "dico_choix.xml"
If Load_Speech_Recognition(@Speech_Recognition.Parametres, File.s) = 0
	MessageRequester("Erreur", "L'initialisation du moteur de la reconnaissance vocale à échoué!")
	End
EndIf
;}
; ***************************************************************************************************
;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #CheckBox_3
  #CheckBox_4
  #CheckBox_5
  #Button_6
EndEnumeration
;}
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 488, 218, 490, 244, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 21, 16, 76, 40, "Ok")
      ButtonGadget(#Button_1, 114, 17, 76, 40, "annuler")
      ButtonGadget(#Button_2, 202, 17, 76, 40, "Nico")
      CheckBoxGadget(#CheckBox_3, 38, 110, 163, 24, "vache")
      CheckBoxGadget(#CheckBox_4, 38, 133, 163, 24, "poisson")
      CheckBoxGadget(#CheckBox_5, 38, 156, 163, 24, "chat")
      ButtonGadget(#Button_6, 392, 187, 76, 40, "quitter")
    EndIf
  EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
  Select WaitWindowEvent(2)
    ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Button_0
        Case #Button_1
        Case #Button_2
        Case #CheckBox_3
        Case #CheckBox_4
        Case #CheckBox_5
        Case #Button_6
      EndSelect
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
Forever
;
;}
;{ ******************** zone procedure Reconnaissance vocale ****************************************
;- procedure reconnaissance vocale
Macro GUID(iid, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, b0)
	DataSection
		IID:
		Data.l $a0
		Data.w $a1, $a2
		Data.b $a3, $a4, $a5, $a6, $a7, $a8, $a9, $b0
	EndDataSection
EndMacro
GUID(IID_ISpeechRecoGrammar ,B6D6F79F,2158,4E50,B5,BC,9A,9C,CD,85,2A,09)
GUID(IID_ISpeechRecognizer, 2D5F1C0C, BD75, 4B08, 94, 78, 3B, 11, FE, A2, 58, 6C) 
Procedure SpeechRecoContextEvents(event.COMateObject, event$, parameterCount)
	Protected iParam.iUnknown
	Protected SpeechRecoResult.COMateObject
	Protected SpeechPhraseInfo.COMateObject
	Protected Texte.s
	
	;Debug("EVT " + Str(parameterCount) + " " + event$)
	
	Select event$
		Case "FalseRecognition"
		;SetGadgetText(#String, "<Phrase ou mot non reconnu>")
		
		Case "Recognition"
		Debug "-------------Recognition-----------------"
		iParam = event\GetObjectEventParam(4)
		If iParam
			SpeechRecoResult = COMate_WrapCOMObject(iParam)
			If SpeechRecoResult
				SpeechPhraseInfo = SpeechRecoResult\GetObjectProperty("PhraseInfo()")
				If SpeechPhraseInfo
					mem_text.s=texte.s ; on retient le mot qui viens d'etre reconnu
					
					Texte.s = SpeechPhraseInfo\GetStringProperty("GetText(0, -1, 1)")  ; on recupere le mot entendu
					
					if mem_text<>texte.s ; ajout du teste qui empeche la diction du meme mot reconnu ..; ajout du teste qui empeche la diction du meme mot reconnu ; on parle seulement si ce n'est pas le meme mot que tout a l'heure
						
						;SetGadgetText(#String, Texte)
						debug texte
						Select Texte
							case "ok" ; terme reçu par la reconnaissance vocale
							MessageRequester("info","tu as choisi 'OK'")
							
							Case "annuler"; terme reçu par la reconnaissance vocale
							MessageRequester("info","tu as choisi 'ANNULER'")
							
							Case "nico"; terme reçu par la reconnaissance vocale
							MessageRequester("info","tu as choisi 'NICO'")
							
							case "vache"; terme reçu par la reconnaissance vocale
							SetGadgetState(#CheckBox_3, 1)
							SetGadgetState(#CheckBox_4, 0)
							SetGadgetState(#CheckBox_5, 0)
							
							case "poisson"; terme reçu par la reconnaissance vocale
							SetGadgetState(#CheckBox_3, 0)
							SetGadgetState(#CheckBox_4, 1)
							SetGadgetState(#CheckBox_5, 0)
							
							case "chat"; terme reçu par la reconnaissance vocale
							SetGadgetState(#CheckBox_3, 0)
							SetGadgetState(#CheckBox_4, 0)
							SetGadgetState(#CheckBox_5, 1)
							
							case "quitter"; terme reçu par la reconnaissance vocale
							CoUninitialize_() ; sert a quitter le moteur de reconnaissance vocale
							end
						EndSelect
						Texte=" "
						
						SpeechPhraseInfo\Release()
					endif
				EndIf
				SpeechRecoResult\Release()
			EndIf
			iParam\Release()
		EndIf
		
		Case "Hypothesis"
		;{
		;Debug "------------Hypothesis------------------"
		; 
		; SetGadgetText(#Text_Message, "Enregistrement en cours...")
		; 
		; iParam = event\GetObjectEventParam(3)
		; If iParam
		; SpeechRecoResult = COMate_WrapCOMObject(iParam)
		; If SpeechRecoResult
		; SpeechPhraseInfo = SpeechRecoResult\GetObjectProperty("PhraseInfo()")
		; If SpeechPhraseInfo
		; Texte = SpeechPhraseInfo\GetStringProperty("GetText(0, -1, 1)")
		; 
		; SetGadgetText(#Editor, Texte + Chr(13) + GetGadgetText(#Editor))
		; 
		; SpeechPhraseInfo\Release()
		; EndIf
		; SpeechRecoResult\Release()
		; EndIf
		; iParam\Release()
		; EndIf
		;}
		
		Case "SoundStart"
		Debug "SoundStart"
		;SetGadgetText(#String, "")
		
		Case "SoundEnd"
		Debug "SoundEnd"
		;SetGadgetText(#Text_Message, "Parler")
		
		Case "StartStream"
		; Debug "StartStream"
		
		
		Case "EndStream"
		; Debug "EndStream"
		ProcedureReturn
	EndSelect
	
EndProcedure
Procedure Load_Speech_Recognition(*Speech_Recognition.Parametres, File.s)
	Protected SpRecoContext.COMateObject
	Protected SpRecoGrammar.COMateObject
	Protected Init_Recognition.l = 0
	
	Protected SpRecognizer.COMateObject
	Protected SpeechRecognizer.COMateObject
	Protected SpObjectTokenCategory.COMateObject
	Protected SpObjectToken.COMateObject
	
	
	SpRecoContext = COMate_CreateObject("SAPI.SpInProcRecoContext")
	Debug COMate_GetLastErrorDescription()
	If SpRecoContext = 0 : Goto Clean : EndIf
	
	
	SpRecoGrammar = SpRecoContext\GetObjectProperty("CreateGrammar(0)")
	If SpRecoGrammar = 0 : Goto Clean : EndIf
	
	RecoGrammar.idispatch = SpRecoGrammar\GetCOMObject()
	If RecoGrammar = 0 : Goto Clean : EndIf
	
	RecoGrammar\QueryInterface(?IID_ISpeechRecoGrammar, @SpeechRecoGrammar_)
	If SpeechRecoGrammar_= 0 : Goto Clean : EndIf
	
	SpeechRecoGrammar.COMateObject = COMate_WrapCOMObject(SpeechRecoGrammar_)
	Debug COMate_GetLastErrorDescription()
	If SpeechRecoGrammar = 0 : Goto Clean : EndIf
	
	#SLOStatic = 0
	#SLODynamic = 1
	If SpeechRecoGrammar\invoke("CmdLoadFromFile('" + File + "', " + Str(#SLODynamic) + ")") <> 0
		Debug COMate_GetLastErrorDescription()
		Goto Clean
	EndIf
	
	If SpRecoContext\SetEventHandler(#COMate_CatchAllEvents, @SpeechRecoContextEvents()) <> 0
		Debug COMate_GetLastErrorDescription()
		Goto Clean
	EndIf
	
	SpRecognizer = SpRecoContext\GetObjectProperty("Recognizer()")
	If SpRecognizer = 0 : Goto Clean : EndIf
	
	
	Recognizer.idispatch = SpRecognizer\GetCOMObject()
	If Recognizer = 0 : Goto Clean : EndIf
	
	Recognizer\QueryInterface(?IID_ISpeechRecognizer, @SpeechRecognizer_)
	If SpeechRecognizer_ = 0 : Goto Clean : EndIf
	
	SpeechRecognizer.COMateObject = COMate_WrapCOMObject(SpeechRecognizer_)
	If SpeechRecognizer = 0 : Goto Clean : EndIf
	
	SpObjectTokenCategory = COMate_CreateObject("SAPI.SpObjectTokenCategory")
	If SpObjectTokenCategory = 0 : Goto Clean : EndIf
	
	#SpeechCategoryAudioIn="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput"
	If SpObjectTokenCategory\invoke("SetId('"+ #SpeechCategoryAudioIn +"', 0)") <> 0
		Debug comate_getlasterrordescription()
		Goto Clean
	EndIf
	
	SpObjectToken = COMate_CreateObject("SAPI.SpObjectToken")
	If SpObjectToken = 0 : Goto Clean : EndIf
	
	Audio$=SpObjectTokenCategory\GetStringProperty("Default()")
	Debug audio$
	If SpObjectToken\invoke("SetId('"+ Audio$ + "')") <> 0
		Goto Clean
	EndIf
	
	If SpeechRecognizer\Setpropertyref("AudioInput(" + Str(SpObjectToken) + " as COMateObject)") <> 0
		Goto Clean
	EndIf
	
	; La Règle de grammaire est active.
	#SGDSActive = 1
	If SpeechRecoGrammar\invoke("CmdSetRuleIdState(0, " + Str(#SGDSActive) + ")") <> 0
		Goto Clean
		Else
		Init_Recognition = 1
	EndIf
	
	Clean:
	
	If Init_Recognition = 0
		If SpRecoContext <> 0 : SpRecoContext\Release() : EndIf
		If SpRecoGrammar <> 0 : SpRecoGrammar\Release() : EndIf
		If SpeechRecoGrammar <> 0 : SpeechRecoGrammar\Release() : EndIf
		Else
		*Speech_Recognition\SpRecoContext = SpRecoContext
		*Speech_Recognition\SpeechRecoGrammar = SpeechRecoGrammar
	EndIf
	
	ProcedureReturn Init_Recognition
EndProcedure
Procedure Finish_Speech_Recognition(*Speech_Recognition.Parametres)
	Protected SpRecoContext.COMateObject
	Protected SpeechRecoGrammar.COMateObject
	
	SpRecoContext = *Speech_Recognition\SpRecoContext
	SpeechRecoGrammar = *Speech_Recognition\SpeechRecoGrammar
	
	If SpeechRecoGrammar <> 0
		; La Règle de grammaire est inactive.
		#SGDSInActive = 0
		SpeechRecoGrammar\invoke("CmdSetRuleIdState(0, " + Str(#SGDSInActive) + ")")
		SpeechRecoGrammar\Release()
	EndIf
	
	If SpRecoContext <> 0
		SpRecoContext\SetEventHandler(#COMate_CatchAllEvents, 0)
		SpRecoContext\Release()
	EndIf
	
EndProcedure
Procedure Desactive_Recognition(*Speech_Recognition.Parametres, Valeur.l)
	Protected SpeechRecoGrammar.COMateObject
	SpeechRecoGrammar = *Speech_Recognition\SpeechRecoGrammar
	
	#SGDSInActive = 0
	#SGDSActive = 1
	If Valeur = 0
		SpeechRecoGrammar\invoke("CmdSetRuleIdState(0, " + Str(#SGDSActive) + ")")
		Debug COMate_GetLastErrorDescription()
		ElseIf Valeur = 1
		SpeechRecoGrammar\invoke("CmdSetRuleIdState(0, " + Str(#SGDSInActive) + ")")
		Debug COMate_GetLastErrorDescription()
	EndIf
	
EndProcedure
;}
; *****************************************************************************************************
					Dernière modification par Backup le mer. 13/juin/2012 18:40, modifié 2 fois.
									
			
									
						Re: Speech Recognition Command (Reconnaissance vocale)
Je viens de saisir l'histoire des deux formats, celle que j'ai posté est pour le SAPI 5.1, pour le 5.3, une norme à été pondu, on y parle de sémantique, il faut faire appel à d'autres interfaces pour récupérer ces valeurs avec l'interface  ISpXMLRecoResult apparemment, il faudrait donc adapté le code pour le nouveau format.
			
			
									
									
						Re: Speech Recognition Command (Reconnaissance vocale)
.............
			
			
													
					Dernière modification par Backup le mer. 13/juin/2012 18:42, modifié 1 fois.
									
			
									
						Re: Speech Recognition Command (Reconnaissance vocale)
De toute façon, c'est clair qu'il faudrait utiliser le dernier format, mais j'ai voulu tester ce que tu dis et ça marche très bien, voici le fichier:
			
			
									
									
						Code : Tout sélectionner
<GRAMMAR LANGID="40C">
 <RULE NAME="cacher" TOPLEVEL="ACTIVE">
    <L>
	<P>cacher</P> 
	<P>disparaitre</P> 
    </L>
 </RULE>
 <RULE NAME="montrer" TOPLEVEL="ACTIVE">
    <L>
	<P>montrer</P> 
	<P>afficher</P> 
    </L>
 </RULE>
 <RULE NAME="programmation" TOPLEVEL="ACTIVE">
	<P>coder </P>  
 </RULE>
 <RULE NAME="fermer" TOPLEVEL="ACTIVE">
    <L>
     <P>sortir</P> 
     <P>terminer</P>
    </L>
 </RULE>
 <RULE NAME="fruits" TOPLEVEL="ACTIVE">
    <L>
     <P>orange</P> 
     <P>pomme</P>
    </L>
 </RULE>
</GRAMMAR>Re: Speech Recognition Command (Reconnaissance vocale)
ha mais oui , mais moi je partait sur la structure que tu avait mis en topic page 1  
 
là c'est deja plus la meme chose
			
			
									
									
						là c'est deja plus la meme chose
Re: Speech Recognition Command (Reconnaissance vocale)
faudra faire gaffe  pour les anglais
cette ligne semble poser probleme
c'est 
et
			
			
									
									
						cette ligne semble poser probleme
Code : Tout sélectionner
xml:lang="fr-FR" mode="voice" tag-format="semantics-ms/1.0" je pensexml:lang="en-GB" mode="voice" tag-format="semantics-ms/1.0"
et
pour l'ancien format<GRAMMAR LANGID="409">
Re: Speech Recognition Command (Reconnaissance vocale)
Oui, c'est sûr, en plus toutes les langues ne sont pas forcément implémentées,
j'ai vu que c'était bon pour l'anglais british et us, le français et l'espagnol mais pour le reste je ne sais pas.
J'ai updaté le code, j'ai ajouté la possibilité de récupérer le niveau de reconnaissance (-1,0,1) correspondant à bas, normal et haut, il ne faut utiliser que le retour de texte en niveau normal, voir même priviligier le niveau 1.
Il faudrait faire un petit algorithme lorsqu'on met une phrase au lieu d'un mot pour déterminer un seuil acceptable.
De plus, j'affiche aussi le nom du rule; c'est plus simple pour le codage; ça permet de mettre plusieurs textes pour une même commande, donc au lieu de travailler avec le texte, on travaille avec le nom du rule.
			
			
									
									
						j'ai vu que c'était bon pour l'anglais british et us, le français et l'espagnol mais pour le reste je ne sais pas.
J'ai updaté le code, j'ai ajouté la possibilité de récupérer le niveau de reconnaissance (-1,0,1) correspondant à bas, normal et haut, il ne faut utiliser que le retour de texte en niveau normal, voir même priviligier le niveau 1.
Il faudrait faire un petit algorithme lorsqu'on met une phrase au lieu d'un mot pour déterminer un seuil acceptable.
De plus, j'affiche aussi le nom du rule; c'est plus simple pour le codage; ça permet de mettre plusieurs textes pour une même commande, donc au lieu de travailler avec le texte, on travaille avec le nom du rule.
Re: Speech Recognition Command (Reconnaissance vocale)
j'ai lu que ce n'etait tout simplement pas pris en charge !nico a écrit : j'ai vu que c'était bon pour l'anglais british et us, le français et l'espagnol mais pour le reste je ne sais pas.
ha ! ça c'est enorme !J'ai updaté le code, j'ai ajouté la possibilité de récupérer le niveau de reconnaissance (-1,0,1) correspondant à bas, normal et haut, il ne faut utiliser que le retour de texte en niveau normal, voir même priviligier le niveau 1.
ça permet carrement de na pas tenir compte lorsqu'on est pas sur !
facile si <1 say (avec la voix de thierry Bourdon dans inconnu ) " Vous pouvez répéter la question ?"Il faudrait faire un petit algorithme lorsqu'on met une phrase au lieu d'un mot pour déterminer un seuil acceptable.
ce qui permettrai de faire réagir le programme sur "Fruit"De plus, j'affiche aussi le nom du rule; c'est plus simple pour le codage; ça permet de mettre plusieurs textes pour une même commande, donc au lieu de travailler avec le texte, on travaille avec le nom du rule.
alors que l'orateur dit "pomme" ou "orange" ... c'est bien ça ?
si oui, ça ouvre carrément les choix
sacres boulot !
et encore Désolé , pour le forum anglais ..
Re: Speech Recognition Command (Reconnaissance vocale)
Code : Tout sélectionner
facile si <1 say (avec la voix de thierry Bourdon dans inconnu ) " Vous pouvez répéter la question ?"