Skrip Posted May 17, 2006 Share Posted May 17, 2006 (edited) Is there a way to make this script 'speak' faster? Main Code: expandcollapse popup#include <talk.au3> hotkeyset('{esc}', 'halt') func halt() exit endFunc ;----------------------Variables------------------------------------ #cs Total Keys: 36 #ce Global $freq Global $delay=50 ;----------------------------Default----------------------------------- ;---------------------------_IsPressed Function---------------------------- Func _IsPressed($hexKey) ; $hexKey must be the value of one of the keys. ; _IsPressed will return 0 if the key is not pressed, 1 if it is. ; $hexKey should entered as a string, don't forget the quotes! ; (yeah, layer. This is for you) Local $aR, $bO $hexKey = '0x' & $hexKey $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey) If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then $bO = 1 Else $bO = 0 EndIf Return $bO EndFunc;==>_IsPressed ;----------------------------What The Whole script is------------------ While 1 ;~~~Numbers If _IsPressed(30) then;0 While _IsPressed(30) _Talk("0") Wend Endif If _IsPressed(31) then;1 While _IsPressed(31) _Talk("1") WEnd Endif If _IsPressed(32) then;2 While _IsPressed(32) _Talk("2") WEnd Endif If _IsPressed(33) then;3 While _IsPressed(33) _Talk("3") WEnd Endif If _IsPressed(34) then;4 While _IsPressed(34) _Talk("4") WEnd Endif If _IsPressed(35) then;5 While _IsPressed(35) _Talk("5") WEnd Endif If _IsPressed(36) then;6 While _IsPressed(36) _Talk("6") WEnd Endif If _IsPressed(37) then;7 While _IsPressed(37) _Talk("7") WEnd Endif If _IsPressed(38) then;8 While _IsPressed(38) _Talk("8") WEnd Endif If _IsPressed(39) then;9 While _IsPressed(39) _Talk("9") WEnd Endif ;~~~Letters---------------------------------- If _IsPressed(41) then;a While _IsPressed(41) _Talk("a") WEnd Endif ;~~~~~~ If _IsPressed(42) then;b While _IsPressed(42) _Talk("b") WEnd Endif ;~~~~~~ If _IsPressed(43) then;c While _IsPressed(43) _Talk("c") WEnd Endif ;~~~~~~ If _IsPressed(44) then;d While _IsPressed(44) _Talk("d") WEnd Endif ;~~~~~~ If _IsPressed(45) then;e While _IsPressed(45) _Talk("e") WEnd Endif ;~~~~~~ If _IsPressed(46) then;f While _IsPressed(46) _Talk("f") WEnd Endif ;~~~~~~ If _IsPressed(47) then;g While _IsPressed(47) _Talk("g") WEnd Endif ;~~~~~~ If _IsPressed(48) then;h While _IsPressed(48) _Talk("h") WEnd Endif ;~~~~~~ If _IsPressed(49) then;i While _IsPressed(49) _Talk("i") WEnd Endif ;~~~~~~ If _IsPressed("4A") then;j While _IsPressed("4A") _Talk("j") WEnd Endif ;~~~~~~ If _IsPressed("4B") then;k While _IsPressed("4B") _Talk("k") WEnd Endif ;~~~~~~ If _IsPressed("4C") then;l While _IsPressed("4C") _Talk("l") WEnd Endif ;~~~~~~ If _IsPressed("4D") then;m While _IsPressed("4D") _Talk("m") WEnd Endif ;~~~~~~ If _IsPressed("4E") then;n While _IsPressed("4E") _Talk("n") WEnd Endif ;~~~~~~ If _IsPressed("4F") then;o While _IsPressed("4F") _Talk("o") WEnd Endif ;~~~~~~ If _IsPressed(50) then;p While _IsPressed(50) _Talk("p") WEnd Endif ;~~~~~~ If _IsPressed(51) then;q While _IsPressed(51) _Talk("q") WEnd Endif ;~~~~~~ If _IsPressed(52) then;r While _IsPressed(52) _Talk("r") WEnd Endif ;~~~~~~ If _IsPressed(53) then;s While _IsPressed(53) _Talk("s") WEnd Endif ;~~~~~~ If _IsPressed(54) then;t While _IsPressed(54) _Talk("t") WEnd Endif ;~~~~~~ If _IsPressed(55) then;u While _IsPressed(55) _Talk("u") WEnd Endif ;~~~~~~ If _IsPressed(56) then;v While _IsPressed(56) _Talk("v") WEnd Endif ;~~~~~~ If _IsPressed(57) then;w While _IsPressed(57) _Talk("w") WEnd Endif ;~~~~~~ If _IsPressed(58) then;x While _IsPressed(58) _Talk("x") WEnd Endif ;~~~~~~ If _IsPressed(59) then;y While _IsPressed(59) _Talk("y") WEnd Endif ;~~~~~~ If _IsPressed("5A") then;z While _IsPressed("5A") _Talk("z") WEnd Endif ;~~~~~~ Wend Talk.au3 #cs Name: _Talk 1.0 Author: El-Trucha <eltrucha14@gmail.com> Date|Time: 2/25/05 | 10:44 PM Dev Tool: AutoIt v3.1.0 Requirements: WSH 5.6 ENABLED!! Description: This function speaks whatever string you specify in $sText #ce Func _Talk($sText) $tempFile = @TempDir & '\talktemp.vbs' ; Set the temp file FileWriteLine($tempFile, 'Dim Talk' & @CRLF & _ 'Set Talk = WScript.CreateObject("SAPI.SpVoice")' & _ @CRLF & 'Talk.Speak "' & $sText & '"'); Add contents to the temp file RunWait('Wscript.exe talktemp.vbs', @TempDir); Run the VBScript FileDelete($tempFile) EndFunc Edited May 17, 2006 by Firestorm [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
Valuater Posted May 17, 2006 Share Posted May 17, 2006 (edited) still not as fast as i would like HotKeySet('{esc}', 'halt') ;----------------------Variables------------------------------------ $oi_speech = ObjCreate("SAPI.SpVoice") $P_key = StringSplit("30,31,32,33,34,35,36,37,38,39", ",") $S_Key = StringSplit("0,1,2,3,4,5,6,7,8,9", ",") $dll = DllOpen("user32.dll") ;----------------------------What The Whole script is------------------ While 1 ;~~~Numbers1234 For $x = 1 To $P_key[0] $a_R = DllCall($dll, "int", "GetAsyncKeyState", "int", '0x' & $P_key[$x]) If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then $oi_speech.Speak ($S_Key[$x]) Next WEnd Func halt() $dll = "" $oi_speech = "" Exit EndFunc ;==>halt 8) Edited May 18, 2006 by Valuater Link to comment Share on other sites More sharing options...
Skrip Posted May 18, 2006 Author Share Posted May 18, 2006 C:\autoit\testtalk.au3 (5) : ==> Unknown function name.: $oi_speech = ObjCreate("SAPI.SpVoice") $oi_speech = ^ ERROR Error? (Tried with beta and 3) [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
Valuater Posted May 18, 2006 Share Posted May 18, 2006 try this Speak_Now("How are you") Func Speak_Now($Now_text) Local $oi_speech = ObjCreate("SAPI.SpVoice") $oi_speech.Speak ($Now_text) $oi_speech = "" EndFunc ;==>Speak_Now Exit 8) Link to comment Share on other sites More sharing options...
Valuater Posted May 18, 2006 Share Posted May 18, 2006 C:\autoit\testtalk.au3 (5) : ==> Unknown function name.: $oi_speech = ObjCreate("SAPI.SpVoice") $oi_speech = ^ ERROR Error? (Tried with beta and 3) thats a beta issue... you are not running the beta version 8) Link to comment Share on other sites More sharing options...
Skrip Posted May 18, 2006 Author Share Posted May 18, 2006 I updated and it didn't quite work (the script). Please help. [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
Valuater Posted May 18, 2006 Share Posted May 18, 2006 (edited) I updated and it didn't quite work (the script). Please help.1copy the script to scite2in scite...press tools > Beta Run 8)PS i am sure of the beta issue because your error says that function is not recognizedUnknown function name.: Edited May 18, 2006 by Valuater Link to comment Share on other sites More sharing options...
Neoborn Posted May 18, 2006 Share Posted May 18, 2006 works for me with beta 123. Key delay is pretty bad though, instant is always better cept if yo lovemaking. ~Projects~1. iPod Ejector 1.0 - Tool Used To Eject iPod in Windows - Uses DevEject.exe :P2. SmartFTP Close Popup Tool - Closes reminders from freeware SmartFTP.~Helpful Links For New Users~1. LXP's Learning AutoIT PDF Guide - <<< Go here for a PDF Guide on learning AutoIT from the ground up!<<<2. AutoIt 1-2-3 <<<Want to learn more about AutoIT quickly? Go Here<<<3. How To Install The Beta And Production Versions Of AutoIT / SciteAutoIT Link to comment Share on other sites More sharing options...
MHz Posted May 18, 2006 Share Posted May 18, 2006 Some more options including speed _Talk( 'Fast Talking Computer Voice', 5 ) Func _Talk( $sText, $iRate = 1, $iVolume = 100 ) If $iRate > 10 Or $iVolume > 100 Then Return Local $oTalk = ObjCreate( 'SAPI.SpVoice' ) If Not @error Then $oTalk.Rate = $iRate $oTalk.Volume = $iVolume $oTalk.Speak( $sText ) EndIf EndFunc Use latest AutoIt Beta Link to comment Share on other sites More sharing options...
Skrip Posted May 18, 2006 Author Share Posted May 18, 2006 1copy the script to scite2in scite...press tools > Beta Run 8)PS i am sure of the beta issue because your error says that function is not recognizedTurns out the beta was installed into the wrong folder...Testing your script now. [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now