Jump to content

Surya

Active Members
  • Posts

    209
  • Joined

  • Last visited

  • Days Won

    1

Community Answers

  1. Surya's post in How to Add Grammar to Speech Recognition? was marked as the answer   
    Finally found a Solution got lot of help from the forum '?do=embed' frameborder='0' data-embedContent>>I took the parts and made it
    to a UDF for speech recognition and other sapi stuffs
    #cs -------------------------------------------------------------------------- (Utter UDF) Utter UDF (SAPI.au3)needs SAPI installed (mostly pre-installed)on your computer to work properly.You can use and manage SAPI (Speech Recognition API).Please remember to shutdown the function before starting another insatnce of the engine. Current Functions:- _Utter_Speech_StartEngine() _Utter_Speech_CreateGrammar() _Utter_Speech_CreateTokens() _Utter_Speech_GrammarRecognize() _Utter_Speech_Pass() _Utter_Speech_ShutdownEngine() _Utter_Speech_CreateFreeGrammar() _Utter_Speech_FreegrammarPass() _Utter_Speech_ShutdownFreeGrammar() _Utter_Voice_Setvolume() _Utter_Voice_GetCurrentvoice() _Utter_Voice_Setvoice () _Utter_Voice_Getvoice () _Utter_Voice_StartEngine() _Utter_Voice_SetRate() _Utter_Voice_Transcribe() _Utter_Voice_Shutdown() _Utter_DebugOut() Internal Functions ---------------------------------------------------- _getpath($file) _Fetchextension($file) _checkgrammar($atb) _CheckObject($ark) MyErrFunc() RecoContext_Recognition($iStr, $vStr, $iRec, $iRe) SpRecEvent_Recognition($iStr, $vStr, $iRec, $iRe) Variables ------------------------------------------------------------- $UTTER_SPEECH_RECOGNIZE :- Contains currently recognised word _Utter_Speech_CreateFreeGrammar() function can also set this variable as well as the _Utter_Speech_GrammarRecognize() function this variable is changed when each time the user speaks a different word.Changes to empty string when you shutdown the function or start a new instance of the engine $UTTER_SPEECH_VAR :- The word to be recognized the recognition variable changes to empty string each time you create a new instance of the speech engine $UTTER_SPEECH_RECOSTATE :- This variable is set to 0 If the recognition verb matches the currently recognised verb $UTTER_SPEECH_ERROR :- Shows the @error instance of the _Utter_Speech_GrammarRecognize() function $UTTER_SPEECH_RESPONSE :- Sets variable to 0 if any thing is recognised and 1 if Not $UTTER_SPEECH_FUNC :- Function to call for after recognising a word and to send that word to a function as paramter.NOTE THE FUNCTION To BE CALLED MUST ACCEPT ONLY ONE PARAMETER. $UTTER_SPEECH_PASS :- Sets the value to 1 if pause parameter (1) is issued to _Utter_Speech_Pass() function and To 0 if resume parameter (1) is issued to _Utter_Speech_Pass() $UTTER_SPEECH_DEBUG :- Debug Variable change to true by calling _Utter_DebugOut(True) to print out output to console ----------Examples----------- (Transcription Audio) $hm = _Utter_Voice_StartEngine() _Utter_Voice_Transcribe($hm,@ScriptDir &"\intro.mp3","This is an example for transcription of audio",0,@ScriptDir &"\lame.exe") _Utter_Voice_Shutdown() SoundPlay (@ScriptDir &"\intro.mp3",1) (Grammar Example) Local $handl = _Utter_Speech_StartEngine() Local $txt1 = "Red is my favourite|Yellow is fine|blue colour reveals excitement|black is for speed|Green Colour" Local $txt2 = "Colors|Animals are good|Regions|Country" _Utter_Speech_CreateGrammar($handl,$txt1,$txt2) _Utter_Speech_CreateTokens($handl) _Utter_Speech_GrammarRecognize($handl,"Red",0) While 1 Sleep (50) ConsoleWrite (@CRLF &"Recognised=" &$UTTER_SPEECH_RECOGNIZE) WEnd _Utter_Speech_ShutdownEngine() -------------Examples-------------------- Author ..........: SuryaSaradhi.B Modified ........: 18/02/2015 #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include-once Global $UTTER_SPEECH_RECOGNIZE Global $UTTER_SPEECH_VAR Global $UTTER_SPEECH_ERROR Global $UTTER_SPEECH_RECOSTATE Global $UTTER_SPEECH_RESPONSE Global $UTTER_SPEECH_FUNC Global $UTTER_SPEECH_PASS = 0 Global $UTTER_SPEECH_DEBUG = False Global Const $SAFT48kHz16BitMono = 38 Global Const $SSFMCreateForWrite = 3 Global Const $SVSFPurgeBeforeSpeak = 2 Global Const $SVSFNLPSpeakPunc = 64 ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_StartEngine() ; Description: Creates a new instance of Speech Recognition Grammar Object. ; ; Parameter(s): Null ; Requirement(s): SAPI Installed on your computer ; Return Value(s): Returns an empty array of handles to Recognition objects ; this array handle is given to other functions in the ; group for adding grammar ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_StartEngine() Global $h_Context = ObjCreate("SAPI.SpInProcRecoContext") $comer = @error Global $h_Recognizer = $h_Context.Recognizer ;Global $h_Grammar = $h_Context.CreateGrammar(1) $oRecoContext = $h_Context ;ObjCreate('SAPI.SpSharedRecoContext') Global $oVBS = ObjCreate("ScriptControl") $oVBS.Language = "VBScript" Global $oNothing = $oVBS.Eval("Nothing") $oRecoContext.CreateGrammar(0) $oGrammar = $oRecoContext.CreateGrammar() Global $h_Grammar = $oGrammar Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") _nullifyvariable() Global $array[8] $array[0] = $oRecoContext ;spinprorecocontext $array[1] = $h_Recognizer ;main recognizer $array[2] = 'null' ;Null handler $array[3] = $oVBS ;Script $array[4] = $oNothing ;Nothing $array[5] = $h_Grammar ;Grammar verbs $array[6] = "Error:" &$comer ;error notifications $array[7] = $oMyError Return $array EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_CreateGrammar($ark,$gramr="",$trn="") ; Description: Adds Grammar to the Speech Recognition Dictionary for recognition ; the computer will recognize the word only making recognition more ; specific and accurate. ; ; Parameter(s): $ark : Array handle from _Utter_Speech_StartEngine() function ; $gramr :- (Main Phrase)Grammar to add to the input grammar can be a one ; dimensional array (two or more dimensions will return an error) ; word or string seperated by '|' delimeter.Without the paramter ; grammar added is an empty String. ; $trn :- (transitional Verb)Word to be said after the main verb.This word is recognised to ; be coming after the first verb ; Requirement(s): SAPI Installed on your computer For Accurate Recognition Train your computer before ; adding grammar and starting the recognition procedure. ; Return Value(s): Returns an empty array of handles to Dictionary Objects ; this array handle is given to other functions in the ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_CreateGrammar($ark,$gramr="",$trn="") ;run a check function _CheckObject($ark) $ftr = _checkgrammar($gramr) $btr = _checkgrammar($trn) $oGrammar = $ark[5] $oTopRule = $oGrammar.Rules.Add('RUN', 1, 0) $oWordsRule = $oGrammar.Rules.Add('WORDS', BitOR(1, 32), 1) $oAfterCmdState = $oTopRule.AddState() For $i = 0 To UBound ($ftr)-1 $oTopRule.InitialState.AddWordTransition($oAfterCmdState, $ftr[$i]) $oAfterCmdState.AddRuleTransition($ark[4], $oWordsRule) Next For $i = 0 To UBound ($btr) -1 $oWordsRule.InitialState.AddWordTransition($ark[4], $btr[$i]) Next ;~ $oWordsRule.InitialState.AddWordTransition($oNothing, 'whatever') $oGrammar.Rules.Commit() $oGrammar.CmdSetRuleState('RUN', 1) Local $array[3] $array[0] = $oTopRule $array[1] = $oAfterCmdState $array[2] = $oWordsRule Return $array[2] EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_CreateTokens($ark) ; Description: Creates tokens for redirecting the input of Microphone into the ; main recognition channel. ; ; Parameter(s): $ark :- Handle from the _Utter_Speech_StartEngine() function ; Requirement(s): SAPI Installed on your computer,Microphone installed on your computer ; Return Value(s): Returns an empty array of handles to token objects ; this array handle is given to other functions in the ; group for adding grammar ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_CreateTokens($ark) $h_Recognizer = $ark[1] Global $h_Category = ObjCreate("SAPI.SpObjectTokenCategory") $h_Category.SetId("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput\TokenEnums\MMAudioIn\") Global $h_Token = ObjCreate("SAPI.SpObjectToken") $h_Token.SetId("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput\TokenEnums\MMAudioIn\") $h_Recognizer.AudioInput = $h_Token Local $array[2] $array[0] = $h_Category $array[1] = $h_Token Return $array[1] EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_GrammarRecognize($ark,$grm="",$delay=1000,$func=False) ; Description: Starts the Speech recognition procedure.$UTTER_SPEECH_ERROR is set To ; the @error of the Object Handler and $UTTER_SPEECH_VAR is set to The ; recognising verb. ; ; Parameter(s): $ark :- Handle from the _Utter_Speech_StartEngine() function ; $grm :- Grammar to Recognise without this parameter the grammar ; to recognise is an empty String ; $delay :- The time to stop the script for the object handler to ; recognise phrases and word said by the user.you can issue ; 0 to this paramter if there is a While...WEnd loop after this ; function ; $func :- The function to be called after recognising the word.Defaulty ; it will not call any function but will only set a recognized ; verb $UTTER_SPEECH_RECOGNIZE variable.If a parameter or a function ; name is issued when the user speaks and when it is recognised the ; function will be called with the recognised verb as the parameter ; NOTE:THE FUNCTION MUST EXIST AND THE FUNCTION SHOULD ONLY ACCEPT ; ONE PARAMETER.Issuing this parameter will also set the function ; variable $UTTER_SPEECH_FUNC to the function name.Function name ; must be given in quotes ; Requirement(s): SAPI Installed on your computer,For Better acuuracy train your computers ; speech recognition module. ; Return Value(s): Returns empty variable containing handle to event handler module. ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_GrammarRecognize($ark,$grm="",$delay=1000,$func="") $hk = ObjEvent($ark[0], 'RecoContext_') $UTTER_SPEECH_ERROR = @error $UTTER_SPEECH_VAR = $grm $UTTER_SPEECH_FUNC = "" If Not $func = "" Then $UTTER_SPEECH_FUNC = $func Sleep ($delay) Return $hk EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_Pass($in = 0) ; Description: Pauses and resumes the recognition instance. ; ; Parameter(s): $in = Defaultly 0 if issued 1 Then recognition instance will stop ; giving output which will resume on giving 0 to the function ; as a parameter.This will also set the $UTTER_SPEECH_PASS variable. ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_Pass($in = 0) If $in = 0 Then $UTTER_SPEECH_PASS = 0 ElseIf $in = 1 Then $UTTER_SPEECH_PASS = 1 Else $UTTER_SPEECH_PASS = 1 EndIf EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_ShutdownEngine() ; Description: Shuts down the handles created by _Utter_Speech_StartEngine() function ; and nullifies every object. ; ; Parameter(s): Null ; Requirement(s): Already called the _Utter_Speech_StartEngine() function ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_ShutdownEngine() _nullifyvariable() Global $hk = 0 Global $h_Context = 0 Global $h_Recognizer = 0 Global $oRecoContext = 0 Global $oVBS = 0 Global $oGrammar = 0 Global $oMyError = 0 Global $oTopRule = 0 Global $oWordsRule = 0 Global $oAfterCmdState = 0 Global $h_Category = 0 Global $h_Token = 0 Global $hk = 0 Global $oNothing = 0 EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_CreateFreeGrammar($delay = 3000,$func = "") ; Description: Starts the Speech recognition Module with system dictionary loaded ; no grammar has to be specified by the user.Delay time can be set to ; 0 if called before a While...WEnd loop.All variables are changed by ; the function.Accuracy is very low for this type of recognition ; ; Parameter(s): $delay :- The delay time for the script to wait for the verb ; recognition you can issue 0 if there is a While...WEnd ; loop after calling this Function. ; $func :- The function to be called after recognising the word.Defaulty ; it will not call any function but will only set a recognized ; verb $UTTER_SPEECH_RECOGNIZE variable.If a parameter or a function ; name is issued when the user speaks and when it is recognised the ; function will be called with the recognised verb as the parameter ; NOTE:THE FUNCTION MUST EXIST AND THE FUNCTION SHOULD ONLY ACCEPT ; ONE PARAMETER.Issuing this parameter will also set the function ; variable $UTTER_SPEECH_FUNC to the function name.Function name ; must be given in quotes ; Requirement(s): SAPI installed in your computer it is also highly recommended to train ; your computer before starting the procedure. ; Return Value(s): @error of The main Event Handler. ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_CreateFreeGrammar($delay = 3000,$func = "") _nullifyvariable() If Not $func = "" Then $UTTER_SPEECH_FUNC = $func Global $h_Contextm = ObjCreate("SAPI.SpInProcRecoContext") Global $h_Recognizerm = $h_Contextm.Recognizer Global $h_Grammarm = $h_Contextm.CreateGrammar(1) $h_Grammarm.Dictationload $h_Grammarm.DictationSetState(1) ;Create a token for the default audio input device and set it Global $h_Categorym = ObjCreate("SAPI.SpObjectTokenCategory") $h_Categorym.SetId("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput\TokenEnums\MMAudioIn\") Global $h_Tokenm = ObjCreate("SAPI.SpObjectToken") $h_Tokenm.SetId("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\AudioInput\TokenEnums\MMAudioIn\") $h_Recognizerm.AudioInput = $h_Tokenm Global $i_ObjInitializedm = 0 Global $h_ObjectEventsm = ObjEvent($h_Contextm, "SpRecEvent_") If @error Then $i_ObjInitializedm = 0 Else $i_ObjInitializedm = 1 EndIf $UTTER_SPEECH_ERROR = $i_ObjInitializedm Sleep ($delay) Return $i_ObjInitializedm EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_FreegrammarPass($in = 0) ; Description: Pauses and resumes the recognition instance. ; ; Parameter(s): $in = Defaultly 0 if issued 1 Then recognition instance will stop ; giving output which will resume on giving 0 to the function ; as a parameter.This will also set the $UTTER_SPEECH_PASS variable. ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_FreegrammarPass($in = 0) If $in = 0 Then $UTTER_SPEECH_PASS = 0 ElseIf $in = 1 Then $UTTER_SPEECH_PASS = 1 Else $UTTER_SPEECH_PASS = 1 EndIf EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Speech_ShutdownFreeGrammar() ; Description: Nullifies all variables and shutsdown the objects created by ; the _Utter_Speech_CreateFreeGrammar() function. ; ; Parameter(s): Null ; Requirement(s): Already Called _Utter_Speech_CreateFreeGrammar() function ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Speech_ShutdownFreeGrammar() _nullifyvariable() Global $h_Contextm = 0 Global $h_Recognizerm = 0 Global $h_Grammarm = 0 Global $h_Categorym = 0 Global $h_Tokenm = 0 Global $i_ObjInitializedm = 0 Global $h_ObjectEventsm = 0 EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_Shutdown() ; Description: Shutsdown Objects created by the _Utter_Voice_StartEngine() function ; ; Parameter(s): Null ; Requirement(s): Already Called _Utter_Voice_StartEngine() function ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_Shutdown() Global $lop = 0 EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_Setvolume(ByRef $ark,$val) ; Description: Sets Volume of _Utter_Voice_StartEngine() function TTS Engine ; ; Parameter(s): $ark :- Handle returned from _Utter_Voice_StartEngine() ; $val :- Volume to be set (0-100) ; Requirement(s): Already Called _Utter_Voice_StartEngine() function,SAPI installed ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_Setvolume(ByRef $ark,$val) $oSpeech = $ark $oSpeech.Volume = $val EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_GetCurrentvoice(ByRef $ark) ; Description: Gets the current voice Activated in TTS (Text to Speech) Engine ; ; Parameter(s): $ark :- Handle returned from _Utter_Voice_StartEngine() ; Requirement(s): Already Called _Utter_Voice_StartEngine() function,SAPI installed ; Return Value(s): Current Active Voice Profile ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_GetCurrentvoice(ByRef $ark) $hl = $ark.getvoices.item (0) $ml = $hl.GetDescription() Return $ml EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_Setvoice (ByRef $Object, $sVoiceName) ; Description: Sets an available voice from library as active current TTS voice ; ; Parameter(s): $ark :- Handle returned from _Utter_Voice_StartEngine() ; $sVoiceName :- Voice Profile Name returned from _Utter_Voice_Getvoice() ; function ; Requirement(s): Already Called _Utter_Voice_StartEngine() function,SAPI installed ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_Setvoice (ByRef $Object, $sVoiceName) Local $VoiceNames, $VoiceGroup = $Object.GetVoices For $VoiceNames In $VoiceGroup If $VoiceNames.GetDescription() = $sVoiceName Then $Object.Voice = $VoiceNames Return EndIf Next EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_Getvoice(ByRef $ark,$bReturn = True) ; Description: Gets available voice profile names installed on your Computer ; ; Parameter(s): $ark :- Handle returned from _Utter_Voice_StartEngine() ; $bReturn :- Boolean value paramater if True is issued returns an ; array containing the available installed profile names ; If False is issued returns a String consisting of profile ; names seperated by the '|' character ; Requirement(s): Already Called _Utter_Voice_StartEngine() function,SAPI installed ; Return Value(s): Returns an array or String (seperated by '|' delimeter) containing ; available profile names installed in your computer ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_Getvoice (ByRef $ark,$bReturn = True) $oSpeech = $ark Local $sVoices, $VoiceGroup = $oSpeech.GetVoices For $Voices In $VoiceGroup $sVoices &= $Voices.GetDescription() & '|' Next If $bReturn Then Return StringSplit(StringTrimRight($sVoices, 1), '|', 2) Return StringTrimRight($sVoices, 1) EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_StartEngine() ; Description: Starts an instance of TTS Engine Object ; ; Parameter(s): Null ; Requirement(s): SAPI installed ; Return Value(s): Returns a handle to TTS Engine Object. ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_StartEngine() $lop = ObjCreate ("SAPI.spVoice") Return $lop EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_SetRate(ByRef $ark,$val) ; Description: Sets the rate of voice OR how fast the voice speaks. ; ; Parameter(s): $ark :- Handle returned by the _Utter_Voice_StartEngine() function ; $val :- Rate or Speed of the voice (-10 to 10) ; Requirement(s): Already called _Utter_Voice_StartEngine(),SAPI installed ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_SetRate(ByRef $ark,$val) $oSpeech = $ark $oSpeech.Rate = $val EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_Voice_Transcribe(ByRef $ark,$file,$txt,$comp = 1,$lame="") ; Description: Transcribes speech to audio OR Converts text to Speech which is ; being saved to an mp3 or wav fileNo other formats than .wav and .mp3 ; are allowed.System can save the audio as wav only if you want the file ; to be an mp3 then you will have to issue the lame parameter. ; ; Parameter(s): $ark :- Handle returned by the _Utter_Voice_StartEngine() function ; $file :- The path with the name of the file to be saved to if to Be ; saved as an mp3 then specify the file extension as .mp3 ; otherwise as .wav ; $txt :- The text to convert to audio ; $comp :- Without issuing the parameter (value = 1) the file will be ; saved as .wav issue the parameter with 0 value to save the ; audio as .mp3 also specify the lame location otherwise this ; will return an error. ; $lame :- Location of the Lame.exe file for converting the .wav to .mp3 ; Requirement(s): Already called _Utter_Voice_StartEngine(),SAPI installed ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_Voice_Transcribe(ByRef $ark,$file,$txt,$comp = 1,$lame="") $ext = _Fetchextension($file) If $ext=0 Or $ext = 2 Then $oStream = ObjCreate ( "SAPI.SpFileStream" ) $ark.AllowAudioOutputFormatChangesOnNextSet = True $oStream.Format.Type = $SAFT48kHz16BitMono If $ext = 2 Then $mh = ".wav" Else $mh = "" EndIf $oStream.Open ( $file &$mh, $SSFMCreateForWrite, True ) $ark.AudioOutputStream = $oStream $ark.Speak ( $txt, $SVSFPurgeBeforeSpeak + $SVSFNLPSpeakPunc ) $oStream.Close ( ) $ark.AudioOutput = $ark.GetAudioOutputs ( '' ).Item ( 0 ) If $ext &$comp = 20 Then If FileExists ($lame ) Then RunWait ( '"' &$lame &'"' &' -q0 "' & $file &'.wav" "' &_getpath($file) & '.mp3"', '', @SW_HIDE) FileDelete ($file &".wav") Else $txt = "Utter Cant Perform conversion operation because lame directory you enterd is not valid") ConsoleWrite ($txt) EndIf EndIf Else $msg = "Utter cant convert text to other formats than .wav lame is required to convert to .mp3" ConsoleWrite (@CRLF &$msg) EndIf EndFunc ;#FUNCTION# ;=============================================================================== ; Function Name: _Utter_DebugOut($ffl=False) ; Description: turns on Printing recognised words to the console stream for debugging. ; ; Parameter(s): $ffl :- Defaultly False if set to True will print out recognised ; words to the console strem. ; Requirement(s): Null ; Return Value(s): Null ; Author ........: Surya Saradhi.B ; Modified.......: 18/02/15 by Surya ;============================================================================================ Func _Utter_DebugOut($ffl=False) $UTTER_SPEECH_DEBUG = $ffl EndFunc ;#INTERNAL FUNCTION# ;=============================================================================== ; Below Functions are called by the functions which are in the group and are not to be called by the ; User.These are support functions which provide help with the main function. ;============================================================================================ #Region :Internal Functions Start Func _nullifyvariable() Global $UTTER_SPEECH_RECOGNIZE = "" Global $UTTER_SPEECH_VAR = "" Global $UTTER_SPEECH_ERROR = "" Global $UTTER_SPEECH_RECOSTATE = "" Global $UTTER_SPEECH_RESPONSE = "" Global $UTTER_SPEECH_FUNC = "" Global $UTTER_SPEECH_PASS = "" EndFunc Func _getpath($file) Local $spk = StringRegExp($file, "^\h*((?:\\\\\?\\)*(\\\\[^\?\/\\]+|[A-Za-z]:)?(.*[\/\\]\h*)?((?:[^\.\/\\]|(?(?=\.[^\/\\]*\.)\.))*)?([^\/\\]*))$", 1) Return $spk[1] &$spk[2] &$spk[3] EndFunc Func _Fetchextension($file) Local $aArray = StringRegExp($file, "^\h*((?:\\\\\?\\)*(\\\\[^\?\/\\]+|[A-Za-z]:)?(.*[\/\\]\h*)?((?:[^\.\/\\]|(?(?=\.[^\/\\]*\.)\.))*)?([^\/\\]*))$", 1) If $aArray[4] = ".wav" Then Return 0 ElseIf $aArray[4] = ".mp3" Then Return 2 Else Return 1 EndIf EndFunc Func _checkgrammar($atb) If IsArray($atb) Then Return $atb ElseIf StringInStr ($atb,"|") Then $split = StringSplit ($atb,"|",$STR_NOCOUNT) Return $split Else Local $ark[1] $ark[0] = $atb Return $ark EndIf EndFunc Func _CheckObject($ark) ObjName ($ark[0]) If @error Then MsgBox ("","Utter","Handler not valid") EndFunc Func MyErrFunc() Msgbox(0,"Utter COM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) Local $err = $oMyError.number If $err = 0 Then $err = -1 $g_eventerror = $err ; to check for after this function returns Endfunc Func SpRecEvent_SoundStart($StreamNumber, $StreamPosition) $UTTER_SPEECH_RESPONSE = 0 EndFunc Func SpRecEvent_SoundEnd($StreamNumber, $StreamPosition) $UTTER_SPEECH_RESPONSE = 1 EndFunc Func RecoContext_SoundStart($StreamNumber, $StreamPosition) $UTTER_SPEECH_RESPONSE = 0 EndFunc Func RecoContext_SoundEnd($StreamNumber, $StreamPosition) $UTTER_SPEECH_RESPONSE = 1 EndFunc Func RecoContext_Recognition($iStreamNumber, $vStreamPosition, $iRecognitionType, $iResult) $said = $iResult.PhraseInfo.GetText() If $UTTER_SPEECH_PASS = 0 Then If $UTTER_SPEECH_DEBUG Then ConsoleWrite( @CRLF &"--UTTER NOTIFIED:" &$said) If Not $UTTER_SPEECH_FUNC = "" Then Call ($UTTER_SPEECH_FUNC,$said) EndIf If $UTTER_SPEECH_VAR = $UTTER_SPEECH_RECOGNIZE Then $UTTER_SPEECH_RECOSTATE = 0 Else $UTTER_SPEECH_RECOSTATE = 1 EndIf $UTTER_SPEECH_RECOGNIZE = $said Else If $UTTER_SPEECH_DEBUG Then ConsoleWrite( @CRLF &"--UTTER PAUSED RECOGNITION STATE") EndIf EndFunc Func SpRecEvent_Recognition($StreamNumber, $StreamPosition, $RecognitionType, $Result) $said = $iResult.PhraseInfo.GetText() If $UTTER_SPEECH_PASS = 0 Then If Not $UTTER_SPEECH_FUNC = "" Then Call ($UTTER_SPEECH_FUNC,$said) EndIf If $UTTER_SPEECH_DEBUG Then ConsoleWrite( @CRLF &"--UTTER NOTIFIED:" &$said) $UTTER_SPEECH_VAR = $said $UTTER_SPEECH_RECOGNIZE = $said Else If $UTTER_SPEECH_DEBUG Then ConsoleWrite( @CRLF &"--UTTER PAUSED RECOGNITION STATE") EndIf EndFunc #EndRegion :Internal Functions End If any bugs please report
×
×
  • Create New...