Für längere Zeit suchte Ich verzweifelt nach einer Möglichkeit, einem AutoIt Skript über ein Headset mündliche Befehle zu erteilen. Ich wollte wenn möglich nicht auf überteuerte zusätzliche Programme wie z.B. "Dragon Naturally Speaking" zurückgreifen, und hatte auch standartmäßig auf Win XP keine windowseigene Spracherkennung. Nachdem mir mehrmals in verschiedenen Skriptercommunitys versichert wurde, dass so etwas nicht möglich sei, wurde Ich durch Zufall in
fündig. Es ist nämlich sehr wohl möglich und funktioniert sehr gut. Das braucht man:


So funktioniert es:
Zuerst einmal müsst ihr das Microsoft Speech SDK installieren.
Ab dann könnt ihr die das oben verlinkte Script wie gewohnt in jedes andere Skript einbinden:
Code:
#include <SAPIListBox.au3>
Code:
#include <GuiConstantsEx.au3>
[COLOR="Red"]#include <SAPIListBox.au3>[/COLOR]
$fester = GUICreate("Beispiel zur Spracherkennung",400,300)
GUISetState()
While 1
$msg = GUIGetMsg()
switch $msg
case $GUI_Event_Close
ExitLoop
EndSwitch
WEnd
Code:
$fester = GUICreate("Beispiel zur Spracherkennung",400,300)
[COLOR="Red"]$wortbox = _GUICtrlSAPIListBox_Create(10, 10, 380, 280)[/COLOR]
Code:
#include <GuiConstantsEx.au3>
#include <SAPIListBox.au3>
[COLOR="Green"]dim $msg, $wortbox_array[5] = ["Up","Down","Left","Right","Wait"][/COLOR]
$fester = GUICreate("Beispiel zur Spracherkennung",400,300)
$wortbox = _GUICtrlSAPIListBox_Create(10, 10, 380, 280)
GUISetState()
[COLOR="Red"]_GUICtrlSAPIListBox_EnableSpeech($wortbox, 1)[/COLOR]
[COLOR="Green"]_GUICtrlSAPIListBox_AddArray($wortbox, $wortbox_array)[/COLOR]
Code:
While 1 $msg = GUIGetMsg() [COLOR="Red"]$mausposition = MouseGetPos()[/COLOR] [COLOR="Red"]if _GUICtrlSAPIListBox_CurSelChanged($wortbox) = True Then if StringCompare(_GUICtrlSAPIListBox_GetText($wortbox), "Up") = 0 Then MouseMove($mausposition[0],$mausposition[1]-50) EndIf if StringCompare(_GUICtrlSAPIListBox_GetText($wortbox), "Down") = 0 Then MouseMove($mausposition[0],$mausposition[1]+50) EndIf if StringCompare(_GUICtrlSAPIListBox_GetText($wortbox), "Left") = 0 Then MouseMove($mausposition[0]-50,$mausposition[1]) EndIf if StringCompare(_GUICtrlSAPIListBox_GetText($wortbox), "Right") = 0 Then MouseMove($mausposition[0]+50,$mausposition[1]) EndIf EndIf[/COLOR] switch $msg case $GUI_Event_Close ExitLoop EndSwitch WEnd
UDF Befehle
Troubleshooting & FAQ
Q: Funktioniert das ganze auch für Vista und/oder Win7?
A: Dem englischen Forum nach nicht - ich habe es aber auch noch nicht getestet.
Q: Obwohl ich das Microsoft Speech SDK installiert habe, bekomme ich sobald Ich mein Skript ausführen möchte einen "Could not create SAPI List Box control. Ensure you have installed the Microsoft Speech SDK 5.1..." Error?!
A: Man muss in diesem Fall von Hand die "SAPI51ListBox.ocx" Active X control auf seinem Computer registrieren. Dazu klickt man auf "Start" > "Ausführen", gibt den Pfad zur .ocx Datei an ("C:\Programme\Microsoft Speech SDK 5.1\Bin\SAPI51ListBox.ocx") und drückt OK. Nun sollte es funktionieren.
Credits
Die UDF (SAPIListBox.au3) sowie teile des Tutorials stammen von seangriffin von autoitscript.com. Ich habe nur zusammengefasst und auf Deutsch übersetzt.






