Command-line Interface (CLI)

Command-line interface to the Dragonfly speech recognition framework

usage: python -m dragonfly [-h] {test,load,load-directory} ...

Positional Arguments

command Possible choices: test, load, load-directory

Sub-commands

test

Load grammars from Python files for testing with a dragonfly engine. By default input from stdin is passed to engine.mimic() after command modules are loaded.

python -m dragonfly test [-h] [-e ENGINE]
                         [-o ENGINE_OPTIONS [ENGINE_OPTIONS ...]]
                         [--language LANGUAGE] [-n] [-d DELAY]
                         [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-q]
                         [file [file ...]]

Positional Arguments

file Command module file(s).

Named Arguments

-e, --engine

Name of the engine to use for testing.

Default: “text”

-o, --engine-options
 

One or more engine options to be passed to get_engine(). Each option should specify a key word argument and value. Multiple options should be separated by spaces or commas. Values are treated as Python literals if possible, otherwise as strings.

Default: []

--language

Speaker language to use. Only applies if using an engine backend that supports changing the language (e.g. the “text” engine).

Default: “en”

-n, --no-input

Whether to load command modules and then exit without reading input from stdin or recognizing speech.

Default: False

-d, --delay

Time in seconds to delay before mimicking each command. This is useful for testing contexts.

Default: 0

-l, --log-level
 

Possible choices: DEBUG, INFO, WARNING, ERROR, CRITICAL

Log level to use.

Default: “INFO”

-q, --quiet

Equivalent to ‘-l WARNING’ – suppresses INFO and DEBUG logging.

Default: False

load

Load and recognize from command module files.

python -m dragonfly load [-h] [-e ENGINE]
                         [-o ENGINE_OPTIONS [ENGINE_OPTIONS ...]]
                         [--language LANGUAGE] [-n] [--no-recobs-messages]
                         [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-q]
                         [file [file ...]]

Positional Arguments

file Command module file(s).

Named Arguments

-e, --engine Name of the engine to use for loading and recognizing from command modules. By default, this is the first available engine backend.
-o, --engine-options
 

One or more engine options to be passed to get_engine(). Each option should specify a key word argument and value. Multiple options should be separated by spaces or commas. Values are treated as Python literals if possible, otherwise as strings.

Default: []

--language

Speaker language to use. Only applies if using an engine backend that supports changing the language (e.g. the “text” engine).

Default: “en”

-n, --no-input

Whether to load command modules and then exit without reading input from stdin or recognizing speech.

Default: False

--no-recobs-messages
 

Disable recognition state messages for each spoken phrase.

Default: False

-l, --log-level
 

Possible choices: DEBUG, INFO, WARNING, ERROR, CRITICAL

Log level to use.

Default: “INFO”

-q, --quiet

Equivalent to ‘-l WARNING’ – suppresses INFO and DEBUG logging.

Default: False

load-directory

Load and recognize from command module files in one or more directories. Only module files starting with an underscore (_*.py) are loaded by this command.

python -m dragonfly load-directory [-h] [-r] [-e ENGINE]
                                   [-o ENGINE_OPTIONS [ENGINE_OPTIONS ...]]
                                   [--language LANGUAGE] [-n]
                                   [--no-recobs-messages]
                                   [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                                   [-q]
                                   dir [dir ...]

Positional Arguments

dir One or more command module directories.

Named Arguments

-r, --recursive
 

Whether to recursively load command modules in sub-directories.

Default: False

-e, --engine Name of the engine to use for loading and recognizing from command modules. By default, this is the first available engine backend.
-o, --engine-options
 

One or more engine options to be passed to get_engine(). Each option should specify a key word argument and value. Multiple options should be separated by spaces or commas. Values are treated as Python literals if possible, otherwise as strings.

Default: []

--language

Speaker language to use. Only applies if using an engine backend that supports changing the language (e.g. the “text” engine).

Default: “en”

-n, --no-input

Whether to load command modules and then exit without reading input from stdin or recognizing speech.

Default: False

--no-recobs-messages
 

Disable recognition state messages for each spoken phrase.

Default: False

-l, --log-level
 

Possible choices: DEBUG, INFO, WARNING, ERROR, CRITICAL

Log level to use.

Default: “INFO”

-q, --quiet

Equivalent to ‘-l WARNING’ – suppresses INFO and DEBUG logging.

Default: False

Usage Examples

Below are some examples using each of the available sub-commands. All examples should work in Bash, PowerShell, cmd.exe, etc.

test examples

# Load a command module and mimic two commands separately.
echo "command one\n command two" | python -m dragonfly test module.py

# Same test without the pipe.
python -m dragonfly test module.py
command one
command two

# Same test with quieter output.
echo "command one\n command two" | python -m dragonfly test -q module.py

# Test loading two modules with the sphinx engine and exit without
# checking input.
python -m dragonfly test -e sphinx --no-input module1.py module2.py

# Load a command module with the text engine's language set to German.
python -m dragonfly test --language de module.py

# Use the --delay command to test context-dependent commands.
echo "save file" | python -m dragonfly test --delay 1 _notepad_example.py

load examples

# Load command modules and recognize speech in a loop using the default
# engine.
python -m dragonfly load _*.py

# Load command modules and exit afterwards.
python -m dragonfly load --no-input _*.py

# Load command modules and disable recognition state messages such as
# "Speech start detected".
python -m dragonfly load --no-recobs-messages _*.py

# Load one command module with the Sphinx engine.
python -m dragonfly load --engine sphinx sphinx_commands.py

# Initialize the Kaldi engine backend with custom arguments, then load
# command modules and recognize speech.
python -m dragonfly load _*.py --engine kaldi --engine-options " \
    model_dir=kaldi_model_zamia \
    vad_padding_end_ms=300"

load-directory examples

# Load command modules in the "command-modules" directory and recognize
# speech in a loop using the default engine.
python -m dragonfly load-directory command-modules

# Load command modules in the "command-modules" directory and any sub-
# directories, then recognize speech in a loop using the default engine.
python -m dragonfly load-directory -r command-modules
python -m dragonfly load-directory --recursive command-modules

# Load command modules in the "command-modules" directory and recognize
# speech without printing recognition state messages.
python -m dragonfly load-directory --no-recobs-messages command-modules

# Load command modules in the "wsr-modules" directory and recognize
# speech using the WSR/SAPI5 in-process engine backend.
python -m dragonfly load-directory -e sapi5inproc wsr-modules

# Initialize the Kaldi engine backend with some custom arguments, then
# load command modules in the current directory and recognize speech.
python -m dragonfly load-directory . --engine kaldi --engine-options " \
    model_dir=kaldi_model_zamia \
    vad_padding_end_ms=300"