The Naomi profile is a small hierarchical database in YAML format. It is located in the Naomi configuration directory which defaults to ~/.naomi (a hidden directory), but can be overridden by setting the NAOMI_SUB environment variable. The default location for the profile.yml file is
If Naomi cannot locate the profile.yml file, it will walk you through the settings required to set up the core program and plugins. You can also re-configure Naomi by passing in the --repopulate flag, ie:
$ ./Naomi.py --repopulate
Some plugin-specific settings are described in the specific plugin sections (Audio, TTS, STT, VAD) but there are also a few setting that are specific to the core Naomi program and not addressed in the populate.py program that you might want to be aware of.
passive_listen (default: False) - this is a boolean value and can be set to True or False. When the value is False, the default, Naomi will poll the incoming audio using the passive_stt engine listening for the keyword. When the keyword is detected, Naomi will either play a high beep noise or say something to let you know it is listening. At that point it will start recording audio. When it detects that the user has stopped speaking, it will stop recording and analyze the captured audio using the active_stt engine. This makes Naomi work similar to the way that Siri works with conversations proceeding along the lines of:
You: Naomi Naomi: high beep You: What time is it? Naomi: low beep Naomi: It is 4:30 PM right now
When the value is True, Naomi will start recording when you start speaking, then when it detects a pause in the audio it will use the passive_stt engine to check for the keyword, and if the keyword is found, will pass the same block of recorded audio directly to the active_stt engine for analysis, resulting in conversations that proceed more like this:
You: Naomi, what time is it? Naomi: high beep Naomi: It is 4:30 PM right now Naomi: low beep
passive_stt: engine: (default: same as active_stt: engine:)- this setting is used to configure the passive speech to text engine, allowing you to specify different engines for passive and active listening. It has one sub-setting which is "engine". This is the engine that will listen for you to say the wake word, and then either activate active listening mode or pass the audio to the active listening engine depending on the value of the passive_listen setting.
passive_stt: engine: sphinx
print_transcript: (default: False) - this setting is used to tell Naomi to print out a transcript of conversations. It is especially useful for troubleshooting problems with the passive and active speech to text engines. Both the passive and active passes will be printed with a "<" indicating the passive engine transcribe result and "<<" indicating the active engine transcribe result. ">>" indicates something naomi is speaking using the Text To Speech engine. A query about the time while passive_listening is enabled and using the pocketsphinx engine for both active and passive listening might look something like this:
< ['NAOMI ON'] << ['NO MEANING TIME'] >> It is 4:30 PM right now
In this case, the passive engine was able to understand 'Naomi' and the active engine was able to understand 'time'. The passive engine did not know the word 'time' so it selected the best match it could find in its dictionary, and the active engine did not know the word 'Naomi' so it also tried to find the nearest match.