KnowBrainer Speech Recognition
Decrease font size
Increase font size
Topic Title: Is there a way to make commands execute when they are not spoken in isolation?
Topic Summary:
Created On: 12/29/2020 10:55 AM
Status: Post and Reply
Linear : Threading : Single : Branch
 Is there a way to make commands execute when they are not spoken in isolation?   - wristofdoom - 12/29/2020 10:55 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Alan Cantor - 12/29/2020 11:27 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Edgar - 12/29/2020 11:28 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Lunis Orcutt - 12/29/2020 03:15 PM  
 Is there a way to make commands execute when they are not spoken in isolation?   - kkkwj - 12/29/2020 10:16 PM  
 Is there a way to make commands execute when they are not spoken in isolation?   - R. Wilke - 12/30/2020 04:29 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Stephan Kuepper - 01/04/2021 08:01 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Mav - 01/11/2021 03:14 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - wristofdoom - 01/11/2021 10:20 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Ag - 01/15/2021 01:48 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - R. Wilke - 01/15/2021 09:46 AM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Ag - 02/01/2021 05:14 PM  
 Is there a way to make commands execute when they are not spoken in isolation?   - Mav - 02/02/2021 01:55 AM  
Keyword
 12/29/2020 10:55 AM
User is offline View Users Profile Print this message

Author Icon
wristofdoom
Senior Member

Posts: 105
Joined: 09/03/2020

Is there a way to have a command execute without needing to pause when dictating?

 

For example, currently I have a command called "print today's date". When I say this out loud, the current date gets typed out.

 

But I need to say that phrase in isolation from other words that I am dictating, which interrupts the flow of my speech.

 

What I would like to do is have that command execute even when it's in the middle of a long string of words that I am dictating out loud. It's costing me time to pause this much to say commonly used commands.

 

So for example, I want to say out loud "today's date is print current date" all in one utterance, and then have the result be "today's date is December 29, 2020."

 

The other tricky part about this is that I only want certain commands to execute in this way. So I have the command "enter" or pressing the enter key, but I only want this command execute when there is a pause around my utterance.

 

Thanks.



-------------------------

Dragon Professional Individual v15.6. Windows 10. Knowbrainer 2017.

 12/29/2020 11:27 AM
User is offline View Users Profile Print this message


Alan Cantor
Top-Tier Member

Posts: 3987
Joined: 12/08/2007

It's straightforward if there are only a small number of commands.

The command named "today's date is print current date" does this (in pseudo code)

SendKeys "today's date is "
SendKeys Today

If you want a more general solution, it may be possible if there is a pattern to the "embedded" commands. Perhaps these commands always start with the same words or phrases. Let's call it a trigger word, and assume it's either "todays" "tomorrmows," or "yesterdays." The three trigger words are in a list called <when>.

Then your command might look like this:

Name: <when><dictation>

and the script might look like this (in pseudo-code):

Let x = Listvar2

If x Contains "print current date" Then
SendKeys "today's date is "
SendKeys Today
End if

If x Contains "print yesterdays date" Then
SendKeys "today's date is "
SendKeys Today-1
End if

etc.

Although this command may be technically possible, I wouldn't do it. There may be side-effects that cause more mischief than the need to pause a fraction of a second between "today's date is" and "print current date."
 12/29/2020 11:28 AM
User is offline View Users Profile Print this message

Author Icon
Edgar
Top-Tier Member

Posts: 1036
Joined: 04/03/2009

I doubt that there is any direct way (other than using the assigned keyboard short to force command recognition which I do not think your wrists would appreciate). I do something like this in an external program (think something like Dragon®’s Dictation Box) which captures an utterance and parses it (not very smartly) for a couple of specific commands. Vaguely, what you would need to do is have a command/macro like: Gobbledygook <dictation> (obviously a poor choice of macro name). Then, when you are going to order a phrase which you want parsed you would preface that phrase with "gobbledygook" - I suspect that this would add more time and trouble instead of improving the situation!

What do you have set up in your Options for the delay time before Dragon® tries to recognize a command? Play with various settings to see what the bare minimum is that you can get away with (for me it is the second fastest setting). I use this pause to take a breath when dictating - those of you who are musicians will probably be accustomed to taking brief silent breaths in the rests <grin>.



-------------------------

-Edgar
DPI 15.3, 64-bit Windows 10 Pro, OpenOffice & Office 365, Norton Security, Shure X2U XLR to USB mic adapter with Audio Technica DB135 vocal mic, Asus X299-Deluxe Prime, Intel Core i9-7940X (14 core, 4.3 GHz overclocked to 4.9 GHz), G.SKILL TridentZ Series 64GB (4 x 16GB) DDR4 3333 (PC4 26600) F4-3333C16Q-64GTZ, NVIDIA GIGABYTE GeForce GTX 1060 GV-N1060G1 GAMING-6GD REV 2.0 6GB graphics card with 3 1920x1080 monitors

 12/29/2020 03:15 PM
User is offline View Users Profile Print this message

Author Icon
Lunis Orcutt
Top-Tier Member

Posts: 38491
Joined: 10/01/2006

Dragon does not permit end-users to create Vocabulary Commands. You can only use the 30 manufacturer vocabulary commands that you will find in the Vocabulary Editor. The following 2 examples include built-in no-pause vocabulary command examples.

 

1. Say "Lunis Orcut new line Bethpage Sheriff Jail new line Inmate Number 213" without pausing.

2. “Lunis's blind cat is an All-Caps-On PARTY ANIMAL All-Caps-Off and a COVID-19 spreader. 

 



-------------------------

Forum Mission Statement
Trial Downloads
Dragon/Sales@KnowBrainer.com 
(615) 884-4558 ext 1

 12/29/2020 10:16 PM
User is offline View Users Profile Print this message

Author Icon
kkkwj
Top-Tier Member

Posts: 645
Joined: 11/05/2015

Hey, I recognize those two built-in no-pause vocabulary commands: new line and new paragraph. I have learned over time to pause whenever I am going to say those words in a sentence (and hold down the shift key to force data mode). I never knew there were specific commands *designed* to do that, or that there were 30 of them!! Thank you for the explanation.

-------------------------

Win10/x64, AMD Ryzen 7 3700X, 64GB RAM, Dragon 15.61, SP 6 PRO, SpeechStart, Office 365, KB 2017, Dragon Capture, Samson Meteor USB Desk Mic, Klim and JUKSTG earbuds with microphones, 3 BenQ 2560x1440 monitors, Microsoft Sculpt Keyboard and fat mouse

 12/30/2020 04:29 AM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 7437
Joined: 03/04/2007

They are not commands. Although they are sometimes also referred to as inline-commands, but this is confusing somehow.

They are words with empty spoken forms, empty written forms, and custom word properties. So pausing or not pausing before and after won't make any difference. And yes, you can also create custom words with empty written forms, and if I recall correctly, it will not work via the editor, but via import. At least, I had a couple of them in the past, but stopped using them at some point.

-------------------------



No need to buy if all you want to do is try ...

DragonCapture KB Download (Latest)
DragonCapture Homepage

 01/04/2021 08:01 AM
User is offline View Users Profile Print this message

Author Icon
Stephan Kuepper
Top-Tier Member

Posts: 2130
Joined: 10/04/2006

Originally posted by: wristofdoom Is there a way to have a command execute without needing to pause when dictating?

 

 

 

For example, currently I have a command called "print today's date". When I say this out loud, the current date gets typed out.

 

 

 

But I need to say that phrase in isolation from other words that I am dictating, which interrupts the flow of my speech.

 

 

 

What I would like to do is have that command execute even when it's in the middle of a long string of words that I am dictating out loud. It's costing me time to pause this much to say commonly used commands.

 

 

 

So for example, I want to say out loud "today's date is print current date" all in one utterance, and then have the result be "today's date is December 29, 2020."

 

 

 

The other tricky part about this is that I only want certain commands to execute in this way. So I have the command "enter" or pressing the enter key, but I only want this command execute when there is a pause around my utterance.

 

 

 

Thanks.

 

 

In spite of the excellent ideas, the answer is no you cannot.

 

Dragon expects a pause before a command (and after - you could get around that with an open-ended command but I wouldn't exactly recommend it). There is no way to have it recognize a command that's embedded in dictation. 

 

Believe me, it's a feature. You don't even want Dragon to extract possible commands from your string of dictation. Right now, I have a browser tab open that is called "Marketing". If I happen to say the word "marketing" in isolation, Dragon will switch to that tab. Now imagine if Dragon would switch to the tab if you said "the VP of marketing is an expert in relying to a message". Dragon would switch to the "Marketing" tab and then back to "Replying to a message" (the current tab). 

 

Hope that helps, Stephan



-------------------------

www.egs-vertrieb.de - www.spracherkennungscloud.de

 01/11/2021 03:14 AM
User is offline View Users Profile Print this message

Author Icon
Mav
Top-Tier Member

Posts: 317
Joined: 10/02/2008

While I agree that it would be very confusing if Dragon tried executing every possible voice command within a piece of dictation, being able to specify on a command-by-command basis whether or not a brief pause before the command is required would be very helpful.

 

In theory at least it should not be too complicated - I guess Dragon always prepends voice commands' grammar with a <SP> (short pause) phoneme for user-defined voice commands.

If you could specify whether or not you want to have this short pause that would be the solution...

 

Regards,

mav

 01/11/2021 10:20 AM
User is offline View Users Profile Print this message

Author Icon
wristofdoom
Senior Member

Posts: 105
Joined: 09/03/2020

Yes, I was looking for something like what Matt is saying. I want to designate some commands to execute inline the way utterances like "new line" and "all caps" currently work, while most commands would execute only after a pause.

Thanks for the  answers Everybody.

 



-------------------------

Dragon Professional Individual v15.6. Windows 10. Knowbrainer 2017.

 01/15/2021 01:48 AM
User is offline View Users Profile Print this message

Author Icon
Ag
Top-Tier Member

Posts: 518
Joined: 07/08/2019

One of the non-Dragon/KnowBrainer speech interfaces - I think probably DragonFly, the one that I'm most interested in switching to eventually, although I have not yet - provides composable commands.

You say COMMAND_1 COMMAND_2 ... without pauses between the commands, and as long as there's no ambiguity it extracts the first manned executes it goes on to the second and so on.

I have started doing that in my AHK scripts invoked via PUFF -- basically parsing multiple commands out of the

Obviously that's only separating multiple commands.

In order to be able to extract commands out of the middle of free-flowing speech, at my current level of integration with Dragon I would pretty much have to send all utterances through my AHK scripts - since I am not properly integrating my code, but I'm relying on Dragon/KnowBrainer to forward. And defining a KnowBrainer command doesn't work all that well.

If did work, then my own code would have to be stateful, spanning boundaries between utterances. And the code invoked by Dragon/KnowBrainer doesn't have any idea of the timing. It does know the timing of when it was invoked, but it does not know the timing of the words within the utterance that it has been passed.

Without being able to make timing like short pause significant ( the speech recognition equivalent of indentation sensitivity in languages like Python), I will have to fall back to non-timing grammar - which I'm already doing with my PUFF prefix on nearly all of my commands. I would need syntax that does not appear in normal text to start command parsing. ending command parsing could be done just by parsing a complete command, but if you want have compound commands might need termination syntax

--

Integrating more tightly with Dragon, e.g. the way DragonCapture does, would allow the tool to make more use of timing information in parsing commands. Although I've had so many stalls that I am reluctant to rely on it - the time that I utter something can definitely be separated by minutes from when it calls AutoHotKey. Although I don't know where the delay is in the

Utter --> Dragon/Natspeak --> DragonCapture

pipeline

--

At first I was very concerned that passing all utterances to a command recognizer would lose much of the advantage of Dragon's bringing on documents for dictation. However, PUFF receives words that seem to have pretty good recognition, as do the many other XXX angle brackets dictation commands, so it looks like the HMM word transition processing is done before directing the word stream to dictation or commands. or at least some of it.

So, I'm getting more optimistic about the sort of thing were talking about here. R.Wilke could certainly do it in DragonCapture, but it begins to look like I could do it, if only a command whose name/pattern was the global wildcard "" was usable.




-------------------------

DPG15.6 (also DPI 15.3) + KB, Sennheiser MB Pro 1 UC ML, BTD 800 dongle, Windows 10 Pro, MS Surface Book 3, Intel Core i7-1065G7 CPU @ 1.3/1.5GHz (4 cores, 8 logical, GPU=NVIDIA Quadro RTX 3000 with Max-Q Design.

 01/15/2021 09:46 AM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 7437
Joined: 03/04/2007

I think probably DragonFly, the one that I'm most interested in switching to eventually, although I have not yet - provides composable commands.


It has been a feature of Vocola since early on, and the people over there call it "Continuous Command Recognition" (CCR). From what I have read, you can set a variable as to the "depth" of the structure (the limit of the number of commands you can speak in a row), and the higher the number, the higher the risk to fail. But that's about all I know about it.

I am not remotely familiar with how it works under the hood, since I never closely looked at it, not being interested really. Personally, I am a big fan of multi-step commands, created to get repetitive jobs done by calling a single command. But they tend to be very custom, in terms of your individual workflow. But I am also a big fan of speaking a command and watch it being executed successfully, before moving on to the next thing I do. And I appreciate the little pauses, and so does my attention.

I am definitely not fit for multi-tasking facilitated by chaining up commands randomly. This, however, is just my personal take on it.



-------------------------



No need to buy if all you want to do is try ...

DragonCapture KB Download (Latest)
DragonCapture Homepage



 02/01/2021 05:14 PM
User is offline View Users Profile Print this message

Author Icon
Ag
Top-Tier Member

Posts: 518
Joined: 07/08/2019

I think that what I would want is not so much contiguous command recognition, but changing to a command mode via an utterance more user-friendly than "command mode on". that is more than half of the reason why I use my prefix "PUFF" before commands; but it gets a bit tiring to say things like "PUFF select line", "PUFF highlight red". (for this example I have things like " "PUFF highlight line red", but I want the more general case.)

Text editors like emacs and vi/vim provide limited composability, typically of movement or selection commands and the action.

E.g. most vim commands are of the form ,
so that you can say something like
d - or delete
the command that moves four lines forward

or d - the command that finds the fourth instance of a pattern

I think the speech equivalent might be something like



-------------------------

DPG15.6 (also DPI 15.3) + KB, Sennheiser MB Pro 1 UC ML, BTD 800 dongle, Windows 10 Pro, MS Surface Book 3, Intel Core i7-1065G7 CPU @ 1.3/1.5GHz (4 cores, 8 logical, GPU=NVIDIA Quadro RTX 3000 with Max-Q Design.

 02/02/2021 01:55 AM
User is offline View Users Profile Print this message

Author Icon
Mav
Top-Tier Member

Posts: 317
Joined: 10/02/2008

One way to achieve something like a command mode very easily is to keep the Ctrl key pressed, thus coercing command recognition. It's a lot faster than "command mode on", but also doesn't work mid-sentence.

hth,

mav

Statistics
31935 users are registered to the KnowBrainer Speech Recognition forum.
There are currently 1 users logged in.
The most users ever online was 12124 on 09/09/2020 at 04:59 AM.
There are currently 456 guests browsing this forum, which makes a total of 457 users using this forum.

FuseTalk Standard Edition v4.0 - © 1999-2021 FuseTalk™ Inc. All rights reserved.