Page 2 sur 2

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : lun. 10/févr./2014 10:30
par Ar-S
J'ai installé les 2 runtimes de tes liens chez crosoft x86 et x64.. Pas de dossier plateform :?

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : lun. 10/févr./2014 11:27
par nico
Du coup je viens de vérifier les liens et je me suis gouré pour le runtime, j'ai mis à jour le lien, désolé.

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : lun. 10/févr./2014 13:21
par Ar-S
Voilà qui est mieux ! :P
ça marche

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mar. 11/févr./2014 18:56
par nico
J'ai rectifié le premier post car on ne peut pas installer les deux version x86 ou x64, car bien que cela semble fonctionner la première fois, au reboot ça ne sera plus le cas.

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mar. 11/févr./2014 19:05
par Backup
marche bien chez moi en x86 ... :)

sympath la Hortense , elle cause bien :)

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mar. 11/févr./2014 21:43
par nico
Bon, je voulais faire un essai de reconnaissance vocal en remplaçant sapi par speech mais comateplus fait des siennes, je verrais ça plus tard, je travaille en x64.

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mar. 11/févr./2014 22:04
par poshu
Questions vraiment innocentes (j'ai pas de Windows, donc je ne peux pas tester):
_ Le text to speech est compréhensible sans avoir à faire des efforts?
_ Le speech recognition, ça donne quoi? Je suis très impressionné par Kinect Xbox One de ce coté là, qui reconnait très bien le français et mon anglais approximatif (même sans apprentissage: je l'ai testé chez un pote), j'aimerais bien ajouter quelques fonctions, même basiques, avec de la reconnaissance vocale à mon media center...

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mar. 11/févr./2014 22:56
par nico
_ Le text to speech est compréhensible sans avoir à faire des efforts?
Oui sans aucun problème.
_ Le speech recognition, ça donne quoi? Je suis très impressionné par Kinect Xbox One de ce coté là, qui reconnait très bien le français et mon anglais approximatif (même sans apprentissage: je l'ai testé chez un pote), j'aimerais bien ajouter quelques fonctions, même basiques, avec de la reconnaissance vocale à mon media center...
Je dois dire qu'il faut passer par une phase d'apprentissage sinon ça reste relativement aléatoire.

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mer. 12/févr./2014 19:30
par poshu
Et tu as testé avec un micro d'ambiance? En tous cas, je suis tenté... Faut que j'installe ça sur ma machine virtuelle. Y'a moyen de lui faire analyser un fichier son aussi, où il est conditionné à l'écoute d'une entrée?

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mer. 12/févr./2014 19:57
par nico
Il est possible de lui faire analyser un fichier son, lors d'un test, j'ai constaté que le résultat était très médiocre; cependant vu que la phase d'apprentissage de la voix se cale donc sur celle ci, il aurait été intéressant d'enregistrer sa voix pour faire le test, évidemment ça limite l'intérêt.

Voici le code que j'ai utilisé à l'époque, je ne peux garantir le fonctionnement (faite le test et dîte moi!) Attention SAPI 5 seulement:

Code : Tout sélectionner

XIncludeFile "COMatePLUS.pbi"

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Text_Message
  #String
  #Text_2
  #Text_3
  #Editor
EndEnumeration
;}
;{ Fonts
Enumeration
  #Font_Text_Message
  #Font_String_1
EndEnumeration
;}
;}

Structure Parametres
  SpRecoContext.i
  SpRecoGrammar.i
EndStructure

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 "Recognition"
      Debug "-------------Recognition-----------------"
      iParam = event\GetObjectEventParam(4)
      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))
            
            
            If FindString(LCase(Texte), "bonjour")
              MessageRequester("Info", "Vous avez dit le mot Bonjour!")
            EndIf
            
            SpeechPhraseInfo\Release()
          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"
      
  EndSelect
  
EndProcedure

Procedure Load_Speech_Recognition(*Speech_Recognition.Parametres)
  Protected SpRecoContext.COMateObject
  Protected SpRecoGrammar.COMateObject
  Protected SpRecognizer.COMateObject
  Protected SpeechRecognizer.COMateObject
  Protected SpObjectTokenCategory.COMateObject
  Protected SpObjectToken.COMateObject
  Protected Init_Recognition.l = 0
  
  SpRecoContext = COMate_CreateObject("SAPI.SpInProcRecoContext")
  If SpRecoContext = 0 : Goto Clean : EndIf
  
  
  SpRecoGrammar = SpRecoContext\GetObjectProperty("CreateGrammar(0)")
  If SpRecoGrammar = 0 : 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_SpeechRecognizer, @SpeechRecognizer_)
  If SpeechRecognizer_ = 0 : Goto Clean : EndIf
  
  SpeechRecognizer.COMateObject = COMate_WrapCOMObject(SpeechRecognizer_)
  If SpeechRecognizer = 0 : Goto Clean : EndIf
  
 
  
  #SPLO_STATIC = 0
  SpRecoGrammar\invoke("Dictationload('', " + Str(#SPLO_STATIC) + ")")
  
  SpFileStream.COMateObject = COMate_CreateObject("SAPI.SpFileStream")
  Debug comate_getlasterrordescription()
  
  * SpFileStream\Invoke("Open('E:\essai.wav')") ;modifier le chemin du fichier wav !!!
  Debug comate_getlasterrordescription()
  
  SpeechRecognizer\Setpropertyref("AudioInputStream(" + Str(SpFileStream) + " As COMateObject )")
  Debug comate_getlasterrordescription()
  
  If SpRecoContext\SetEventHandler(#COMate_CatchAllEvents, @SpeechRecoContextEvents()) <> 0
    Goto Clean
  EndIf
  
;   Lance le moteur de reconnaissance vocale
  #SGDSActive = 1
  If SpRecoGrammar\invoke("DictationSetState(" + Str(#SGDSActive) + ")") <> 0
    Goto Clean
  Else
    Init_Recognition = 1
  EndIf
  
  Clean:
  If SpRecognizer <> 0 : SpRecognizer\Release() : EndIf
  If SpeechRecognizer <> 0 : SpeechRecognizer\Release() : EndIf
  If SpObjectTokenCategory <> 0 : SpObjectTokenCategory\Release() : EndIf
  If SpObjectToken <> 0 : SpObjectToken\Release() : EndIf
  
  If Init_Recognition = 0
    If SpRecoContext <> 0 : SpRecoContext\Release() : EndIf
    If SpRecoGrammar <> 0 : SpRecoGrammar\Release() : EndIf
  Else
    *Speech_Recognition\SpRecoContext = SpRecoContext
    *Speech_Recognition\SpRecoGrammar = SpRecoGrammar
  EndIf
  
  ProcedureReturn Init_Recognition
EndProcedure

Procedure Finish_Speech_Recognition(*Speech_Recognition.Parametres)
  Protected SpRecoContext.COMateObject
  Protected SpRecoGrammar.COMateObject
  
  SpRecoContext = *Speech_Recognition\SpRecoContext
  SpRecoGrammar = *Speech_Recognition\SpRecoGrammar
  
  If SpRecoGrammar <> 0
    ; Arrête le moteur de reconnaissance vocale
    #SGDSInActive = 0
    SpRecoGrammar\invoke("DictationSetState(" + Str(#SGDSInActive) + ")")
    SpRecoGrammar\Release()
    Debug "ok"
  EndIf
  
  If SpRecoContext <> 0
    SpRecoContext\SetEventHandler(#COMate_CatchAllEvents, 0)
    SpRecoContext\Release()
  EndIf
  
EndProcedure

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 0, 0, 400, 400, "Speech Recognition", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
    TextGadget(#Text_Message, 0, 0, 400, 50, "Parler et commencer par dire : Bonjour", #PB_Text_Center)
    StringGadget(#String, 0, 95, 400, 35, "")
    TextGadget(#Text_2, 0, 75, 400, 20, "  Phrase Reconnue:")
    TextGadget(#Text_3, 0, 160, 400, 20, "  Phrase décryptée au fur et à mesure de l'enregistrement:")
    EditorGadget(#Editor, 0, 180, 400, 220)
    ; Gadget Fonts
    SetGadgetFont(#Text_Message, LoadFont(#Font_Text_Message, "Microsoft Sans Serif", 12, 272))
    SetGadgetFont(#String, LoadFont(#Font_String_1, "Microsoft Sans Serif", 12, 16))
  EndIf
EndProcedure

CoInitialize_(0)

If Load_Speech_Recognition(@Speech_Recognition.Parametres) = 0
  MessageRequester("Erreur", "L'initialisation du moteur de la reconnaissance vocale à échoué!")
  End
EndIf

OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ;/ //////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Text_Message
        Case #String
        Case #Text_2
        Case #Text_3
        Case #Editor
      EndSelect
      ;/ ///////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Finish_Speech_Recognition(@Speech_Recognition.Parametres)
          CoUninitialize_()
          Break
      EndSelect
  EndSelect
ForEver
;
;}


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_SpeechRecognizer, 2D5F1C0C, BD75, 4B08, 94, 78, 3B, 11, FE, A2, 58, 6C)

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Publié : mer. 12/févr./2014 20:20
par poshu
Je vois un intérêt à enregistrer sa voix :
Mon media center codé avec mes petites mimines a un port ouvert pour recevoir des commandes via mon téléphone (j'ai codé une pitite application android capable de faire play/pause... s'pas magique, mais j'avais pas de télécommande); hors donc, je pourrais faire une fonction vocale via le téléphone qui enregistre la voix et l'envoi au HTPC pour traitement :p

Merci, je testerai quand j'aurais le courage de relancer la machine virtuelle ^_^