Application Settings

Application level settings are set in a configuration file ApplicationSettings.config.

This file is JSON formatted and the settings types are detailed below.

There are two decode sensitivity parameters because the different recognizer implementations may require different sensitivity levels,

The items below can be set in the configuration file.

File Version Number

The FileVersionNumber property is not used by the system. It is provided to allow users to specify a version number to easily determine whether or not if a device has the correct file deployed. This is a simple string property and can be any value meaningful to end users.

Sample Code:

"FileVersionNumber": "1.4",

Legacy Formatted Recognizer Settings

The LegacyFormattedRecognizerSettings property is a map of settings in the legacy VoiceConsole format. A user could use this section to copy values from VoiceConsole to the configuration file.

Sample Code:

"LegacyFormattedRecognizerSettings": {
    "en-US": { 
        "BlueStreak_Decode_Sensitivity_cancel": 0.0
    }
}

BlueStreak Decode Sensitivity

The BlueStreak_Decode_Sensitivity mapping defines the BlueStreak word rejection threshold. The default value for decode sensitivity (0.0) is tuned for warehouse case picking applications. However, this value may not be optimal for all applications. Increase the value of this parameter to make words more difficult to accept. Decrease the value to allow more words to be accepted.

Example: In applications where the operator is constantly talking, changing this parameter to a negative number may result in better overall system recognition performance (-0.5 is a good number to start with). The tradeoff is that out of vocabulary words and extraneous noises are more likely to be erroneously recognized as words.

VALID VALUES

-5 to 5

DEFAULT

0

The thresholds can be set for individual vocabulary words or globally for all vocabulary words. Use caution when setting decode sensitivity to non-default values.

Locale: this is the standard 5 character locale. <2 character language>-<2 character region> (i.e., "en-US" for English US)

Vocabulary Word: This is the vocabulary word to set the threshold for. An empty string "" means to set the threshold globally for all vocabulary.

Legacy platforms require users to replace spaces in vocabulary words with underscores (e.g. "sign off" specified as "sign_off"). For Guided Work you may specify the vocabulary word with spaces. However if you are familiar with legacy platforms and prefer to have the underscores vocabulary can be specified in that manner

Threshold: A floating point number between -5 to 5.

In the following example, we set the global threshold for English to 2.3 and the threshold for the vocab word "1" to 1.4. We also set the threshold for the Spanish vocab word "1" to 3.1 and all other Spanish vocab words would use the default of threshold value of 0.

Sample Code:

"BlueStreak_Decode_Sensitivity": { 
    "en-US": {
        "" 2.3,
        "1": 1.4,
    }
    "es-MX": {
        "1": 3.1,
    }
}

Pick Up & Go Decode Sensitivity

The PnG_Decode_Sensitivity mapping defines the Pick Up & Go word rejection threshold. The default value for decode sensitivity (4500) is tuned for warehouse case picking applications. However, this value may not be optimal for all applications. Increase the value of this parameter to make words more difficult to accept. Decrease the value to allow more words to be accepted.

In applications where the operator is constantly talking, changing this parameter to a lower number may result in better overall system recognition performance. The tradeoff is that out of vocabulary words and extraneous noises are more likely to be erroneously recognized as words.

Versions of DevKit prior to 1.4 used Bsx2_Decode_sensitivity. This parameter is obsolete and is replaced by PnG_Decode_sensitivity.

VALID VALUES

-5 to 5

DEFAULT

0

The thresholds can be set for individual vocabulary words or globally for all vocabulary words. Use caution when setting decode sensitivity to non-default values.

Locale: this is the standard 5 character locale. <2 character language>-<2 character region> (i.e., "en-US" for English US)

Vocabulary Word: This is the vocabulary word to set the threshold for. An empty string "" means to set the threshold globally for all vocabulary.

Legacy platforms require users to replace spaces in vocabulary words with underscores (e.g. "sign off" specified as "sign_off"). For Guided Work you may specify the vocabulary word with spaces. However if you are familiar with legacy platforms and prefer to have the underscores vocabulary can be specified in that manner

Threshold: A floating point number between -5 to 5.

In the following example, we set the global threshold for English to-1.0 and the threshold for the vocab word "sign off" to 1.4. We also set the threshold for the Spanish vocab word "1" to 2.2 and all other Spanish vocab words would use the default of threshold value of 0.

Sample Code:

"PnG_Decode_Sensitivity": {
    "en-US": {
        "": -1.0,
        "sign off": 1.4,
    }
    "es-MX": {
        "1": 2.2,
    }
}

Disable Vocabulary Words

If vocabulary words are not used in an environment, those vocabulary words can be disabled. A common example is disabling Alpha characters if they are not needed, but other vocabulary can be disabled if the functionality is not needed.

If a vocabulary word is disabled then workers are not able to speak that word, and in most cases cannot access the functionality via the UI either

Vocabulary words may be disabled for an entire application, or if the application has multiple work flows, the vocabulary may be disabled for just some of the work flows defined.

There are four properties that may be used in the application settings file for disabling vocabulary:

  • DisableAllAlphas: This may be set to "true" or "false" and disables all the US alpha vocabulary, A through Z. This applies to all work flows in the application
  • DisabledVocabWords: This is a list of individual vocabulary words to disable. This applies to all work flows in an application
  • DisableAllAlphas_ByWorkFlow: This is a list of work flow names where alphas should be disabled. This only applies to the specified work flows
  • DisabledVocabWords_ByWorkFlow: This is a set of work flows, each with a list of vocabulary to disabled. Only vocabulary in the list of the specified work flow are disabled when running that work flow.

Specify work flows and vocabulary as follows:

<workflowname>: The internal string of the workflow name. If unknown, contact the application developer to obtain the work flow names. Work flow names may also be retrieved from log information.

<vocab>: Vocabulary words may be specified in either method below:

  • Actual vocabulary word: Use the actual vocabulary word the user would train during enrollment training. When the app is running in multiple languages, this method would require the word to be added for each of the languages.

  • Resource key for vocab word: The resource key, or localization key can be specified. This allows entry once in the configuration file and disables the word for all languages. If resource keys are not known, contact the application developer to obtain the keys. The localization key may also be found in the logs of an application

Sample Code:

//For Global, All
    "DisableAllAlphas": true/false
    "DisabledVocabWords": ["<vocab1>", "<vocab2>", ...],
//By Workflow
    "DisableAllAlphas_ByWorkflow": ["<workflowname>", "<workflowname>", ...],
    "DisabledVocabWords_ByWorkflow": {
        "<workflowname>": ["<vocab>", "<vocab>", ...],
        "<workflowname>": ["<vocab>", "<vocab>", ...]
    }

Phonetics

If certain words or phrases are not pronounced correctly by the Text To Speech engine being used, phonetic substitutions allow them to be spoken correctly. For any word or phrase, define a phonetic substitution and a display substitution.

  • Phonetic substitution: This substitution is applied to all spoken strings, whether the originate from an application or are a system phrase

  • Display substitution: This substitution is only applied to user strings provided via the intent. this is due to the nature of display strings and that the screen does not change them at all (TTS may pronounce things in unexpected ways). If system display strings need modified then they should be change via the resx resource files.

In the PhoneticsDefinition section, phonetics are defined by locale, and only if a phonetic substitution is required for the locale. So under the PhoneticDefinition section there is a map of locales each containing a list of phonetic

  • <locale>: The 5 character locale for list of phonetic substitutions (i.e. "en-US" for English United State)
    • List of phonetics:
      • Phrase: The phrase to replace
      • SpokenValue: The replacement for the phrase when spoken
      • DisplayValue: The replacement for the phrase when displayed

All three values for a phonetic MUST be specified, even ifthe DisplayValue is same as the Phrase, it still needs to be specified.

Sample code:

"PhoneticDefinitions": {
    "en-US": [
        {"Phrase": "<phrase1>", "SpokenValue": "<spoken1>", "DisplayValue": "<display1>" },
        {"Phrase": "<phrase2>", "SpokenValue": "<spoken2>", "DisplayValue": "<display2>" }
    ],
    "fr-CA": [
        {"Phrase": "<phrase1>", "SpokenValue": "<spoken1>", "DisplayValue": "<display1>" },
        {"Phrase": "<phrase3>", "SpokenValue": "<spoken3>", "DisplayValue": "<display3>" }
    ]
}

Speech Delay

When using priority prompts, users are not allowed to speak until prompt has completed. In some environments, the user may speak right at and of prompt, and their first utterance may not get recognized, or users may speak a too soon before hearing the entire prompt. This setting allows customers to adjust the default timing at end of priority prompts before users may start speaking.

This setting is in milliseconds, and the default value is 200.

Synonyms

Synonyms allow a user to speak alternative words for an existing vocabulary word. Those additional words are added to the settings and are available for the user to speak. For example, a user may try to speak "okay" or "yes" instead of "ready" at a simple ready prompt. Use the synonym section to allow for "okay" and "yes" to be added as additional vocabulary substitutions anywhere the vocab word ready is used.

If one or more of the synonym words specified is already available at the same place as ready, the original functionality for that word stays associated with the word and it is not available as a synonym.

The synonyms for a given word are one way. This means that if you add synonyms "okay" and "yes" for the vocab word "ready", then "ready" is not able to be spoken when "yes" is the expected vocab word. To enable that, a second synonym definition needs added with "ready" as a synonym for "yes".

The synonyms are defined based on locale since each locale may not have the same number of synonyms. The Synonyms section structure is a map of locale to synonyms, and the synonyms are defined as a map of original vocab word to a list of synonyms for that word.

  • <locale>: The 5 character locale for list of phonetic substitutions (i.e., "en-US" for English United States)
    • vocabulary word: Original vocabulary word
      • Synonym: a list of synonyms to allow for specified vocabulary word

Sample Code

"Synonyms": {
    "en-US": { "ready": ["okay", "yes"],
        "sign off": ["log off"]}
}

Sample ApplicationSettings.config File

{    "FileVersionNumber": "1.4",
    "LegacyFormattedRecognizerSettings": {
        "en-US": {
            "BlueStreak_Decode_Sensitivity_cancel": 0.0
        }    
     }    
     "BlueStreak_Decode_Sensitivity": {  
        "en-US": {
            "" 2.3,
            "1": 1.4,
        }
        "es-MX": {
            "1": 3.1,
        }
    },
    "PnG_Decode_Sensitivity": {
        "en-US": {
            "": -1.0,
            "sign off": 1.4,
        }
        "es-MX": {
            "1": 2.2,
        }
    }     
    "DisableAllAlphas": true,
    "DisabledVocabWords": ["take a break"],
    "DisableAllAlphas_ByWorkflow": ["Picking"], //not needed in this case because alphas disable globally above, just an example
    "DisabledVocabWords_ByWorkflow": {
        "Picking": ["Skip slot", "Skip_Aisle_Key"],
        "CycleCounting": ["Change_Region_Key"]
    },
    "PhoneticDefinitions": {
        "en-US": [
            {"Phrase": "<phrase1>", "SpokenValue": "<spoken1>", "DisplayValue": "<display1>" },
            {"Phrase": "<phrase2>", "SpokenValue": "<spoken2>", "DisplayValue": "<display2>" }
        ],
        "fr-CA": [
            {"Phrase": "<phrase1>", "SpokenValue": "<spoken1>", "DisplayValue": "<display1>" },
            {"Phrase": "<phrase3>", "SpokenValue": "<spoken3>", "DisplayValue": "<display3>" }
        ]
    },
    "SpeechOutSpeechInDelay": 200 
    "Synonyms": {
        "en-US": { "ready": ["okay", "yes"],
            "sign off": ["log off"]}
    }
}