Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 14 Antworten
und wurde 151 mal aufgerufen
 Skripte und Zusatzprogramme
SJE Offline



Beiträge: 4

14.07.2016 14:12
RE: Kombinierte diktateingabe Zitat · Antworten

Hallo zusammen,

ich brauchte mal eure Hilfe,

Ich versuche eine kombinierte Eingabe zu erstellen.

Hierbei soll Dragon einzelne Zahlen zu einem Gesamtstring zusammen führen.
Anwendungsbereich soll die Eingabe von Aktenzeichen aus einzeln erkannten Zahlen (ein und zweistellig) im Skript zusammen geführt werden. Die Zahlen sind hierbei unterbrochen durch wenige feststehende Buchstabenkombinationen.

Gibt eine Objektübersicht oder ggf. ein bestehendes Script(das ich wohl übersehen haben muss) welches erkannte Worte in Strings überführt, intern verändert und an eine MessageBox zurückgibt?

Noch unvollständig aber in folgende Richtung soll die Reise gehen:

Sub Main
Dim Eingabe As Variant
Dim Ausgabe As String

SendSystemKeys"{F3}" 'öffenen der Dialogbox
Eingabe_var = GetRecognizedWord 'Diktateingabe holen
Ausgabe = CStr(Eingabe) & "Js"
Eingabe_var = GetRecognizedWord 'weitere Diktateingabe holen
Ausgabe = Ausgabe & CStr(Eingabe)
SendDragonKeys Ausgabe
SendKeys "~"
End Sub

Oder ist es hier notwendig eine Riesenschleife mit 'HeardWord" aufzubauen?

Vielen Dank im Voraus

P.Roch Offline



Beiträge: 1.261

14.07.2016 17:21
#2 RE: Kombinierte diktateingabe Zitat · Antworten

Wie soll denn der Sprachbefehl lauten? Etwa so: "Aktenzeichen "?
Oder?
Gruß, Pascal

R.Wilke Offline



Beiträge: 6.334

14.07.2016 22:06
#3 RE: Kombinierte diktateingabe Zitat · Antworten

Zitat von P.Roch
Wie soll denn der Sprachbefehl lauten? Etwa so: "Aktenzeichen "?
Oder?
Gruß, Pascal



Nein, Pascal, ich denke, der Ansatz ist viel komplizierter, und wahrscheinlich unmöglich. Aber ich verstehe auch nur zur Hälfte, was gemeint ist.

_______________________________________

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

SJE Offline



Beiträge: 4

18.07.2016 10:55
#4 RE: Kombinierte diktateingabe Zitat · Antworten

Der Sprachbefehl könnte so lauten wie du das vorgeschlagen hast.

Also: Aktenzeichen aus

nur benötige ich die Spracheingabe die DRAGON bei den Variablen erkennt.

Sprich:

"Aktenzeichen aus "

Soll zu einem String: "24 Js 1052/16" umgewandelt und in das entsprechende Formfeld in der Anwendung eingefügt werden.

P.Roch Offline



Beiträge: 1.261

18.07.2016 11:59
#5 RE: Kombinierte diktateingabe Zitat · Antworten

Mit einem Sprachbefehl geht das nicht so ohne weiteres: Für die variablen Stellen müssten Listen mit zulässigen Werten definiert werde. Das dürfte kaum möglich sein, evtl. noch für Jahr und Kammer, aber nicht für die laufende Nummer.

Das Ganze lässt sich einfach über das Vokabular regeln:
1. Fügen Sie das Wort "Js", gesprochene Form "J S" oder "jott ess", hinzu, definieren Sie als Worteigenschaften "Zahlen davor / danach" als Ziffern schreiben.
2. Für das Wort "aus" definieren Sie die Worteigenschaften: gedruckte Form 1 als "/", Eigenschaften "keine Leerstelle davor/danach", Zahlen davor / danach als Ziffern.

Ich hoffe, Sie kommen mit der skizzenhaften Beschreibung zurecht - probieren Sie, dabei lernt man ja auch.
Gruß, Pascal

SJE Offline



Beiträge: 4

19.07.2016 10:56
#6 RE: Kombinierte diktateingabe Zitat · Antworten

Zitat von P.Roch
Mit einem Sprachbefehl geht das nicht so ohne weiteres: Für die variablen Stellen müssten Listen mit zulässigen Werten definiert werde. Das dürfte kaum möglich sein, evtl. noch für Jahr und Kammer, aber nicht für die laufende Nummer.

Das Ganze lässt sich einfach über das Vokabular regeln:
1. Fügen Sie das Wort "Js", gesprochene Form "J S" oder "jott ess", hinzu, definieren Sie als Worteigenschaften "Zahlen davor / danach" als Ziffern schreiben.
2. Für das Wort "aus" definieren Sie die Worteigenschaften: gedruckte Form 1 als "/", Eigenschaften "keine Leerstelle davor/danach", Zahlen davor / danach als Ziffern.

Ich hoffe, Sie kommen mit der skizzenhaften Beschreibung zurecht - probieren Sie, dabei lernt man ja auch.
Gruß, Pascal



Vielen Dank erst einmal für die Info. Das könnte zumindest für den Anfang weiterhelfen.

Wie sähe denn diese Variante in VB bzw. DragonScript aus?

d.h. wie kann ich auf das erkannte Wort zugreifen?

Geht das nur über das Objekt "heardword" oder wie kann ich auf die Eigenschaften des Objekts "GetRecognizedWord" zugreifen.

Gibt es ggf. noch weitere Objekte die für das Auslesen der erkannten Worte in Variablen nutzbringend sein könnten?

Ist irgendwo eine Objektbibliothek verfügbar, die mal ein wenig mehr beschreibt als nur die Hilfe-Datei?

Das geht schon tiefer in die Objektorientierte-Programmierung ist aber wohl in dem Fall auch nötig.

Gruß Stephan

P.Roch Offline



Beiträge: 1.261

19.07.2016 15:31
#7 RE: Kombinierte diktateingabe Zitat · Antworten

So ganz verstehen kann ich den Nutzen der Übung nicht.

Für einen Sprachbefehl gäbe es verschiedene Möglichkeiten (neben den schon genannten):
a) Aufruf eines VBA-Dialogs, in dessen Felder die Zahlen diktiert werden.
b) einen Befehl "Aktenzeichen ". Die Eingabe kann dann als ListVar1 bzw. utilityprovider.contextvalue(0) ausgewertet werden.

Ihre Fragen korrekt und kurz zu beantworten fällt mir schwer, da wir möglicherweise unterschiedliche Vorstellungen von Objekten haben - weder HeardWord noch GetRecognizedWord sind Objekte. Wo haben Sie denn das gelesen? Was verstehen Sie denn unter Objektbibliothek?

Gruß, Pascal

R.Wilke Offline



Beiträge: 6.334

19.07.2016 23:03
#8 RE: Kombinierte diktateingabe Zitat · Antworten

Zitat von P.Roch
So ganz verstehen kann ich den Nutzen der Übung nicht.



Pascal, es ist so schlimm, wie ich weiter oben befürchtet habe, oder schlimmer. Das Beste, was er bekommen kann, hast Du ihm schon gezeigt, aber er sieht es nicht, wie auch.

Was er hier vorträgt, ist ein Sammelsurium aus dem, was er irgendwo aufgeschnappt hat, und was aber weder hinten noch vorne Sinn macht. Wenn ich spekulieren darf, ist er ein System Administrator (mit Betonung auf: Mini) in irgendeiner größeren Organisation, kennt sich ein wenig aus mit Web-Development, JavaScript, Office Anwendungen, vielleicht hat er auch in .NET reingeschnuppert, und bestimmt schon mal ein bisschen Linux gemacht.

Bei der Gelegenheit ist er irgendwie auf Objekt-Orientierte Programmierung gestoßen, und hat in dem Zusammenhang von Bibliotheken gehört.

So weit, so gut. Mal abwarten, was er antworten wird, wenn überhaupt.

_______________________________________

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

SJE Offline



Beiträge: 4

20.07.2016 12:03
#9 RE: Kombinierte diktateingabe Zitat · Antworten

@Pascal:
Vielen Dank für deine konstruktiven Antworten. Vielleicht haben wir ein wenig an einander vorbei geredet, aber ich denke ich habe genug Anhaltspunkte um einen Lösungsversuch zu erarbeiten. Wahrscheinlich wird eine Kombination von neuem Vokabular und Scriptbefehlen zu nutzen sein.

Die komplette Zahl oder das komplette Aktenzeichen als eine Eingabe () zu nutzen, war auch mein erster Gedanke. Nur dürfte die Spracheingabe recht störanfällig sein, sodass ich die Eingabe lieber segmentieren würde um die Erkennungsgenauigkeit zu erhöhen. Wenn eine Eingabe x mal wiederholt werden muss führt das eher zu Frustration beim Anwender.

Ist die Möglichkeit gegeben in DNS häufiger verwendete Prozeduren/Funktionen global für andere Scripte verfügbar zu machen? Geht das wie in VB generell vorgesehen über 'call' wenn ich die globale Prozedur vorher als 'public' definiert ist? Oder sind solche Aufrufe nicht vorgesehen/gesperrt?

Mit Objektbibliothek meine ich eine Auflistung aller verfügbaren/nutzbaren Objekte/Methoden/Prozeduren/Funktionen/Eigenschaften die für die Erstellung von DN-Skripten zur Verfügung stehen und weitreichender in der Erklärung sind als die Hilfedatei. Meinetwegen auch ne Buchempfehlung, wenn da was auf dem Markt sein sollte. Aufgrund fehlender Doku sind mir die Möglichkeiten, die ich mit dem Script habe, noch nicht klar, daher auch meine Fragen.

GetRecognizedWord wird bei dem (wohl) Objekt DngDictExtraction aufgeführt als Parameter wird angegeben:
byVal iWordIndex as PortInt angegeben.

Gefunden im Skripterstellungsfenster unter {F2} Browse Object. Da steckt zwar noch jede Menge mehr drin, womit ich mich jetzt noch nicht näher beschäftigt hab.

HeardWord und dessen Anwendung hatte ich in einem bestehenden Script gelesen (dort ohne vorherige Objekt-Referenzierung)

Genutzt wurde dort die Methode/Prozedur (?) wie folgt

if HeardWord "1" than variable = 1 endif

if HeardWord "2" than variable = 2 endif

if HeardWord "3" than variable = 3 endif

.... und immer so weiter

Ich würde das als Äquivalent zur Erstellung einer Liste werten. Was jetzt aufgrund der bestehenden Listenfunktion nicht wirklich als Script umgesetzt werden müsste. Aber der "Befehl" hat ja noch anderen Anwendungen.

Der Hinweis auf "utilityprovider.contextvalue(0)" war genau das was ich brauchte. Danke dafür



Geschenkt, wenn die Bezeichnungen (was jetzt ein komplettes Objekt ist und was nur eine Methode oder Eigenschaft darstellt) nicht korrekt ausgedrückt sein mag. Dafür bräuchte ich Einblicke in die Interne Struktur des Scripts, was ich erst erarbeiten muss.

Vielen Dank Pascal für deine Unterstützung.

PS: Schade nur, dass nicht alle die den Status "Moderator" besitzen auch wirklich unterstützen wollen und scheinbar einfach nur nicht zugeben wollen, dass sie ein Antwort nicht haben. Ich dachte, dass die Forenregeln auch für Moderatoren gelten?

Marius_ Offline



Beiträge: 1.266

20.07.2016 14:07
#10 RE: Kombinierte diktateingabe Zitat · Antworten

Sinnvolle Antworten kann es nur auf sinnvolle Fragen geben. Ihre Beiträge folgten demgegenüber eher dem Muster: „Welche Farbe hat Dienstag?“

Mein Rat wäre, dass die Staatsanwaltschaft ("Js" bringt es an den Tag) die Erstellung von Skriptbefehlen lieber jemandem anvertrauen sollte, der programmieren kann. Alles andere ist eine Verschwendung von Steuermitteln (zum Glück nicht meinen - anderes 'Bundes'land).

Fröhliches Scheitern weiterhin!

__________________________________________________
Dragon Legal 16, Win 11 Pro, Microsoft 365 64-bit, SpeechMike Premium Air, i7-11700, 2,5 GHz, 64 GB RAM, 1TB SSD;
+ DLG 15.71, Win 10, unter Parallels Pro auf iMac Retina 5K 4,0 GHz i7-6700K, 32 GB RAM, 1TB SSD; + DLG 15.6, Win 10, Bootcamp auf MBP 2017 i5

P.Roch Offline



Beiträge: 1.261

20.07.2016 14:24
#11 RE: Kombinierte diktateingabe Zitat · Antworten

Hallo SJE,

die Passage über die Moderatoren sollten wir mal ganz schnell vergessen. Ohne diese "ehrenamtlichen" Moderatoren gäbe dieses Forum überhaupt nicht. Da dürfte es doch legitim sein, etwas abwegigen Beiträgen nicht weiter zu folgen und mal eben nicht zu antworten. Zumal sich kaum weitere der zweitausend Forumsmitglieder bemüßigt fühlen, gelegentlich eigene Gedanken beizusteuern.

Zum Aktenzeichen-Problem:

Zitat
Nur dürfte die Spracheingabe recht störanfällig sein, sodass ich die Eingabe lieber segmentieren würde um die Erkennungsgenauigkeit zu erhöhen.

Ich gehe jede Wette ein, dass sich kaum ein Anwender darüber freuen wird, dass er das Aktenzeichen stückweise diktieren soll. Hier lauert wirklich Frustration. Da nimmt er doch gleich die Tastatur. Oder die von mir vorgeschlagene Lösung.

Zitat
Ist die Möglichkeit gegeben in DNS häufiger verwendete Prozeduren/Funktionen global für andere Scripte verfügbar zu machen?

Nein, in der angedachten Weise (globale Proceduren und Funktionen) gibt es da nichts. Es gibt lediglich die uses-Anweisung, um Programmcode mehrfach zu nutzen. Generell: der in Dragon verwendete Basic-Dialekt ist WinWrap-Basic, ergänzt durch dragon-eigene Anweisungen wie Heardword usw. (advanced scripting language). Das von Dragon verwendete Objektmodell ist im SDK dargestellt, ein spezielles Buch dazu ist mir nicht bekannt.

"if HeardWord "1" than variable = 1 endif" ist absoluter Schwachsinn, jedenfalls als Dragon-Script.

Zitat
Geschenkt, wenn die Bezeichnungen (was jetzt ein komplettes Objekt ist und was nur eine Methode oder Eigenschaft darstellt) nicht korrekt ausgedrückt sein mag.

Nein, das ist nicht geschenkt. Entweder korrekte Sprache oder man lässt es bleiben, bis man die Sache verstanden hat. Oder auf welcher Basis soll man sich sonst mit "Kollegen" verständigen?

Wenn Sie sich wirklich intensiv mit Sprachbefehlen befassen wollen, empfehle ich das Buch "Skripting für Dragon NaturallySpeaking" (falls es nicht vergriffen ist. Wenden Sie sich an info(at)voelter-online.de) Meines Wissens die einzige deutschsprachige Literatur zum Thema. Als Beigabe gibt es dort auch die ins Deutsche übertragenen teilweise ziemlich komplexen Nuance-Beispiele.

Noch mal: Das Aktenzeichen-Problem ist nicht gerade das geeigneteste, um sich mit Sprachbefehlen, insbesondes Skripten, vertraut zu machen. Und da es eine einfache Lösung gibt, habe ich weder Zeit noch Lust, mich intensiver damit zu beschäftigen.
Gruß, Pascal

R.Wilke Offline



Beiträge: 6.334

20.07.2016 22:14
#12 RE: Kombinierte diktateingabe Zitat · Antworten

Zitat von SJE
Schade nur, dass nicht alle die den Status "Moderator" besitzen auch wirklich unterstützen wollen und scheinbar einfach nur nicht zugeben wollen, dass sie ein Antwort nicht haben.



Auch darin irren Sie, aber ganz gewaltig. Die Dragon-API kenne ich zufällig recht gut, und hätte jede Menge Antworten für Sie, nur keine Lust, Sie ab Punkt Null an die Hand zu nehmen, zumal ich ernsthafte Fragen bei Ihnen nicht entdecken kann. Ihre Ausführungen und vor allem die Code-Schnipsel, die Sie von Anfang an präsentiert haben, lassen in einen tiefen Abgrund blicken.

Und übrigens, was Ihnen vorschwebt, würde ich sogar hinbekommen, aber selbst wenn Sie mich dafür bezahlen, würde ich es nicht machen, weil es Unsinn ist.

Ihren Anwendern kann man nur wünschen, dass Sie Meinhards Empfehlung folgen und die Programmierung erst einmal beiseite legen - und stattdessen Pascals so simple wie überzeugende Lösung verwenden, nämlich den Weg über das Vokabular. Aus Sicht der Anwender ist das die bequemste und zuverlässigste Methode.

_______________________________________

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

rc.otto Offline



Beiträge: 207

22.07.2016 10:11
#13 RE: Kombinierte diktateingabe Zitat · Antworten

Ich verwende selbst regelmäßig Aktenzeichen und Dragon mach aus "einhundertdreiundachtzig aus sechzehn" zuverlässig "183/16". Weshalb das mit der zusätzlichen Kammerbezeichnung und dem "Js" nicht klappen sollte, weiß ich nicht, es sei denn, Dragon hat einen gewissen Sinn für Liberalität. ; -)
Wenn es also nur darum geht, das Aktenzeichen einzutragen, sollte das in der beschriebenen Weise funktionieren.
Wenn aber beabsichtigt sein sollte, damit ein Programm zu steuern, und deshalb der komplizierte Weg erforderlich sein sollte, müsste ich passen; ich verwende Dragon fast nur in Verbindung mit Word.

Gusa Offline



Beiträge: 2

09.10.2016 22:15
#14 RE: Kombinierte diktateingabe Zitat · Antworten

Hallo zusammen,

ich lese schon seit längerem in diesem Forum mit und habe bereits viel Interessantes und (zum Großteil für mich) Neues lernen können.
Ich weiß nicht, ob ich das Problem des Thread-Erstellers richtig verstanden habe, aber eigentlich dürfte die Auswertung doch kein Problem darstellen.
Ich habe mich mit meinen bescheidenen Scripting-Kenntnissen einmal versucht und bin zu folgender Lösung gekommen. Bei mir funktioniert das Skript übrigens einwandfrei.

1
2
3
4
5
6
7
8
9
10
11
12
13
 

Sub Main
 
Worte=Split(Listvar1," ")
z="Aktenzeichen " + Listvar1
If UBound(worte)=3 Then
If worte(2)="aus" And IsNumeric(worte(0))=True And IsNumeric(worte(1))=True And IsNumeric(worte(3))=True Then
z= worte(0) + " Js " + worte(1) + "/" + worte(3)
End If
End If
SendKeys z,True
End Sub
 
 


Aufgerufen wird es mit: Aktenzeichen
Vielleicht habe ich aber auch einen Denkfehler und das Problem ist ein ganz anderes.
Über eine Rückmeldung würde ich mich freuen.

Edit 10.10.2016:
Ich habe einmal ein wenig mit meinem Skript experimentiert. Für das vom Thread-Ersteller angegebene Beispiel funktioniert mein Skript.

Zitat


Der Sprachbefehl könnte so lauten wie du das vorgeschlagen hast.

Also: Aktenzeichen aus

nur benötige ich die Spracheingabe die DRAGON bei den Variablen erkennt.

Sprich:

"Aktenzeichen aus "

Soll zu einem String: "24 Js 1052/16" umgewandelt und in das entsprechende Formfeld in der Anwendung eingefügt werden.


Aber im täglichen Einsatz würde ich es nicht einsetzen wollen.
Es gibt nämlich zwei erhebliche Schwächen:

  1. Die beiden Zahlenwerte und werden gern zu einer Zahl „zusammen verstanden“.[/*]
  2. Bei Zahlen <13 wird die ausgeschriebene Schreibweise benutzt und dementsprechend von meinem Skript nicht korrekt ausgewertet.[/*]

Es ist somit eher eine Machbarkeitsstudie, als eine sinnvolle und produktive Erleichterung.

DPI 15 auf Windows 7 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.7.370.7)
Jabra Link 220 USB / Olympus DS-3500 / Jabra Pro 9470
Intel i7 2600 QuadCore - 3.4 GHz - 16 GB RAM

Gusa Offline



Beiträge: 2

05.11.2016 00:53
#15 RE: Kombinierte diktateingabe Zitat · Antworten

@SJE: Hallo Threadersteller,
hast Du mein Skript einmal ausprobiert und geschaut, ob es wie gewünscht funktioniert?
Es wäre schön zu erfahren, ob Dein Problem damit gelöst ist oder ob ich etwas falsch verstanden habe und es doch komplexer ist.

DPI 15 auf Windows 7 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.7.370.7)
Jabra Link 220 USB / Olympus DS-3500 / Jabra Pro 9470
Intel i7 2600 QuadCore - 3.4 GHz - 16 GB RAM

 Sprung  
Xobor Ein Kostenloses Forum | Einfach ein Forum erstellen
Datenschutz