Ich habe mir vor ein paar Wochen die Professional-Version von Dragon Naturally Speaking gekauft und mich ein wenig mit Scripten beschäftigt. Gemeinsam mit der Software "EventGhost" lassen sich nun so gut wie alle möglichen Dinge auf meinem Computer über Sprachbefehl steuern.
Da ich die Dragonleiste allerdings immer im Hintergrund habe, weiß ich oft nicht, ob Dragon (im Befehlsmodus) meinen Befehl auch verstanden hat? Daher hätte ich gerne, dass Dragon zB eine Sounddatei abspielt, wenn der gesprochene Text keinem Befehl zugeordnet werden konnte. Dann würde ich nämlich wissen, dass ich den Befehl noch einmal wiederholen muss. Beim Aufwachbefehl lässt sich das ja recht einfach mittels einer WAV-Datei und einer kleinen Änderung in der system.dvc machen.
Da ich das Thema schon oft und intensiv erforscht habe, kann ich nach bestem Wissen und Gewissen sagen: es geht nicht.
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Hallo trentacid, so allgemein und unspezifisch, wie die Aufgabe gestellt ist, kann die Antwort auch nur allgemein heißen: Geht nicht. Eine Prüfung, ob erkannter Text einem Befehl entspricht, ist nicht möglich. Außerdem macht das ja schon der Befehlsmodus.
Aber was genau ist Ihr Anliegen? Es geht doch wohl eher darum zu kontrollieren, ob ein Befehl AUSGEFÜHRT wurde. Wollen Sie nun ALLE (also auch die implementierten) Befehle kontrollieren oder nur die von Ihnen selbst geschriebenen, benutzerdefinierten? Und geht es im letzten Fall eigentlich nur um diejenigen, deren Aktion nicht unmittelbar erlebbar ist? (Einen Befehl "Licht an" braucht man nicht zusätzlich zu überwachen, das Licht geht an oder eben nicht).
Eine mögliche Lösung haben Sie doch schon für "Wach auf"-Befehls genannt: da lassen Sie doch auch nicht signalisieren, dass wach-auf nicht erkannt wurde, sondern im Fall der Erkennung sagt Dragon etwas wie "Mikrofon ist wieder an". Oder? Falls Sie also einige (oder auch alle) Ihrer benutzerdefinieren Befehle kontrollieren wollen, dann beenden Sie doch jedes Skript (Sie müssen selbstverständlich alle Befehle als Skripte schreiben) mit der TTSPlayString-Anweisung (Playsound ist nicht so performant).
Erstmal vielen Dank für die prompte Beantwortung meiner Frage. So wie es aussieht, gibt es also dafür leider wirklich keine Möglichkeit - schade.
Es ist schon richtig, dass man bei 90% der Befehle sofort erkennt, ob der Befehl angenommen wurde oder nicht (siehe Ihr Beispiel mit "Licht an"), allerdings handelt es sich dabei um mehrere verschachtelte Skripte, die über EventGhost gesteuert werden und teilweise eben nur funktionieren, wenn der Befehl vorher erfolgreich ausgeführt wurde. Aber Sie haben recht, ich werde den Spieß jetzt einfach umdrehen und stattdessen bei jedem Befehl eine Sprachausgabe einfügen, wenn er entsprechend angenommen wurde.
Es dürfte alllerdings möglich sein, mittels Skript zwischen dem Befehls- und dem Diktiermodus zu wechseln? Gibt es da Vorlagen? Ich habe in der Forumsuche nichts dazu gefunden.
Ja, das ist möglich, "Vorlagen" in dem Sinne gibt es hier nicht, aber weil ich gute Laune habe, und Sie für talentiert halte, hier ein Beispiel. Mit dem unten stehenden Skript kann man zwischen Normal- und Befehlsmodus hin- und herschalten:
Sub Main Dim EngineControl As New DgnEngineControl If ( EngineControl.RecognitionMode = dgnrecmodeNormal ) Then EngineControl.RecognitionMode = dgnrecmodeCommand Else EngineControl.RecognitionMode = dgnrecmodeNormal End If End Sub
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD