Deployments
Jarvis UI¶
Connects to Jarvis
running in the backend to process request and response via API calls.
Kick off¶
Install
python -m pip install jarvis-ui
Initiate
import jarvis_ui
if __name__ == '__main__':
jarvis_ui.start()
Environment Variables¶
Env vars are loaded from a .env
file and validated using pydantic
To use custom .env files
To use a custom .env
file, set the filename to the env var env_file
before importing jarvis_ui
module.
import os
os.environ['env_file'] = "jarvis_ui.env"
import jarvis_ui
if __name__ == '__main__':
jarvis_ui.start()
Mandatory¶
TOKEN: Authentication token.
Constructed¶
SERVER_URL: URL for the API server.
SERVER_HOST: Hostname of the API server.
SERVER_IP: IP address of the API server.
SERVER_PORT: Port numbmer of the API server.
server_url
is mandatory, however it can be skipped and constructed during run-time with a combination ofserver_host
[OR]server_ip
[AND]server_port
Optional¶
HEART_BEAT: Defaults to
None
- Interval in seconds to trigger background healthcheck on the server with automatic restartDEBUG: Defaults to
False
- Enable debug level loggingSPEECH_TIMEOUT: Defaults to
0
for macOS,10
for Windows - Timeout for speech synthesisNATIVE_AUDIO: Defaults to
False
- If set toTrue
, the response is generated in the server’s default voiceWAKE_WORDS: Defaults to
jarvis
(Defaults toalexa
in macOS older than10.14
) - Wake words to initiate JarvisSENSITIVITY: Defaults to
0.5
- Sensitivity of wake word detectionMICROPHONE_INDEX: Defaults to
None
- Use peripherals.py to get the index valuesVOICE_NAME: Defaults to the author’s favorite per the OS. Name of the voice supported by the OperatingSystem
VOICE_RATE: Defaults to the value in
py3-tts
module - Speed/rate at which the text should be spokenVOICE_PITCH: Defaults to the value in
py3-tts
module - Currently available only for Linux OSVOLUME: Default volume for the UI.
LISTENER_TIMEOUT: Defaults to
2
- Timeout for listener once wake word is detected - Awaits for a speech to begin until this limitLISTENER_PHRASE_LIMIT: Defaults to
5
- Timeout for phrase once listener is activated - Listener will be deactivated after this limitRECOGNIZER_SETTINGS: JSON object of customized speech recognition settings.
Custom settings for speech recognition
The default values for RECOGNIZER_SETTINGS are customized according to the author’s voice pitch. Please use test_listener.py to figure out the suitable values in a trial and error method.
Sample settings (formatted as JSON object)
RECOGNIZER_SETTINGS: '{"energy_threshold": 1100, "dynamic_energy_threshold": false, "pause_threshold": 1, "phrase_threshold": 0.1}'
Description
energy_threshold: Minimum audio energy to consider for recording. Greater the value, louder the voice should be.
dynamic_energy_threshold: Change considerable audio energy_threshold dynamically.
pause_threshold: Seconds of non-speaking audio before a phrase is considered complete.
phrase_threshold: Minimum seconds of speaking audio before it can be considered a phrase - values below this are ignored. This helps to filter out clicks and pops.
non_speaking_duration: Seconds of non-speaking audio to keep on both sides of the recording.
:bulb: Refer Jarvis’ README for more information on setting up the backend server.
Coding Standards¶
Docstring format: Google
Styling conventions: PEP 8
Clean code with pre-commit hooks: flake8
and
isort
Release Notes¶
Requirement
python -m pip install gitverse
Usage
gitverse-release reverse -f release_notes.rst -t 'Release Notes'
Linting¶
PreCommit
will ensure linting, and the doc creation are run on every commit.
Requirement
python -m pip install sphinx==5.1.1 pre-commit recommonmark
Usage
pre-commit run --all-files
Pypi Package¶
Runbook¶
License & copyright¶
© Vignesh Rao
Licensed under the MIT License