{"id":16135642,"url":"https://github.com/thevickypedia/jarvis_ui","last_synced_at":"2025-03-18T15:31:33.771Z","repository":{"id":37272946,"uuid":"501683322","full_name":"thevickypedia/Jarvis_UI","owner":"thevickypedia","description":"Light weight UI to interact with Jarvis via API calls","archived":false,"fork":false,"pushed_at":"2024-08-03T16:59:45.000Z","size":5966,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-19T12:12:26.999Z","etag":null,"topics":["fastapi","jarvis","speech-recognition","speech-synthesis-api","wake-word-detection"],"latest_commit_sha":null,"homepage":"https://github.com/thevickypedia/Jarvis/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thevickypedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-09T14:19:28.000Z","updated_at":"2024-08-08T12:59:32.000Z","dependencies_parsed_at":"2024-05-18T06:30:23.151Z","dependency_job_id":"400be172-dab9-4130-b010-49041dea1837","html_url":"https://github.com/thevickypedia/Jarvis_UI","commit_stats":{"total_commits":51,"total_committers":1,"mean_commits":51.0,"dds":0.0,"last_synced_commit":"e20b3ca9d9d0b7f50746015ec1c277d3232d01c2"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FJarvis_UI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FJarvis_UI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FJarvis_UI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thevickypedia%2FJarvis_UI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thevickypedia","download_url":"https://codeload.github.com/thevickypedia/Jarvis_UI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243936387,"owners_count":20371505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","jarvis","speech-recognition","speech-synthesis-api","wake-word-detection"],"created_at":"2024-10-09T23:08:49.712Z","updated_at":"2025-03-18T15:31:32.981Z","avatar_url":"https://github.com/thevickypedia.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Python](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue)\n\n**Deployments**\n\n[![pages-build-deployment](https://github.com/thevickypedia/Jarvis_UI/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/thevickypedia/Jarvis_UI/actions/workflows/pages/pages-build-deployment)\n\n[![pypi](https://github.com/thevickypedia/Jarvis_UI/actions/workflows/python-publish.yml/badge.svg)](https://github.com/thevickypedia/Jarvis_UI/actions/workflows/python-publish.yml)\n\n# Jarvis UI\n\nConnects to [`Jarvis`](https://github.com/thevickypedia/Jarvis/blob/master/jarvis/api/fast.py) running in the backend to process request and response via API calls.\n\n### Kick off\n**Install**\n```shell\npython -m pip install jarvis-ui\n```\n\n**Initiate**\n```python\nimport jarvis_ui\n\n\nif __name__ == '__main__':\n    jarvis_ui.start()\n```\n\n### Environment Variables\nEnv vars are loaded from a `.env` file and validated using `pydantic`\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ci\u003eTo use custom .env files\u003c/i\u003e\u003c/strong\u003e\u003c/summary\u003e\n\nTo use a custom `.env` file, set the filename to the env var `env_file` before importing `jarvis_ui` module.\n\n```python\nimport os\nos.environ['env_file'] = \"jarvis_ui.env\"\n\nimport jarvis_ui\n\nif __name__ == '__main__':\n    jarvis_ui.start()\n```\n\n\u003c/details\u003e\n\n#### Mandatory\n- **TOKEN**: Authentication token.\n\n#### Constructed\n- **SERVER_URL**: URL for the API server.\n- **SERVER_HOST**: Hostname of the API server.\n- **SERVER_IP**: IP address of the API server.\n- **SERVER_PORT**: Port numbmer of the API server.\n\n\u003e `server_url` is mandatory, however it can be skipped and constructed during run-time with a combination of `server_host` [OR] `server_ip` [AND] `server_port`\n\n#### Optional\n- **HEART_BEAT**: Defaults to `None` - _Interval in seconds to trigger background healthcheck on the server with automatic restart_\n- **DEBUG**: Defaults to `False` - _Enable debug level logging_\n\u003cbr\u003e\u003cbr\u003e\n- **SPEECH_TIMEOUT**: Defaults to `0` for macOS, `10` for Windows - _Timeout for speech synthesis_\n\u003cbr\u003e\u003cbr\u003e\n- **NATIVE_AUDIO**: Defaults to `False` - _If set to `True`, the response is generated in the server's default voice_\n- **WAKE_WORDS**: Defaults to `jarvis` (Defaults to `alexa` in macOS older than `10.14`) - _Wake words to initiate Jarvis_\n- **SENSITIVITY**: Defaults to `0.5` - _Sensitivity of wake word detection_\n\u003cbr\u003e\u003cbr\u003e\n- **MICROPHONE_INDEX**: Defaults to `None` - _Use [peripherals.py](https://github.com/thevickypedia/Jarvis_UI/blob/main/modules/peripherals.py) to get the index values_\n- **VOICE_NAME**: Defaults to the author's favorite per the OS. _Name of the voice supported by the OperatingSystem_\n- **VOICE_RATE**: Defaults to the value in `py3-tts` module - _Speed/rate at which the text should be spoken_\n- **VOICE_PITCH**: Defaults to the value in `py3-tts` module - _Currently available only for Linux OS_\n- **VOLUME**: Default volume for the UI.\n\u003cbr\u003e\u003cbr\u003e\n- **LISTENER_TIMEOUT**: Defaults to `2` - _Timeout for listener once wake word is detected - Awaits for a speech to begin until this limit_\n- **LISTENER_PHRASE_LIMIT**: Defaults to `5` - _Timeout for phrase once listener is activated - Listener will be deactivated after this limit_\n- **RECOGNIZER_SETTINGS**: JSON object of customized speech recognition settings.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCustom settings for speech recognition\u003c/strong\u003e\u003c/summary\u003e\n\nThe default values for **RECOGNIZER_SETTINGS** are customized according to the author's voice pitch.\nPlease use [test_listener.py](https://github.com/thevickypedia/Jarvis_UI/blob/main/test_listener.py) to figure out the suitable values in a trial and error method.\n\nSample settings (formatted as JSON object)\u003cbr\u003e\n\n**RECOGNIZER_SETTINGS**: `'{\"energy_threshold\": 1100, \"dynamic_energy_threshold\": false, \"pause_threshold\": 1, \"phrase_threshold\": 0.1}'`\n\n**Description**\n- **energy_threshold**: Minimum audio energy to consider for recording. Greater the value, louder the voice should be.\n- **dynamic_energy_threshold**: Change considerable audio **energy_threshold** dynamically.\n- **pause_threshold**: Seconds of non-speaking audio before a phrase is considered complete.\n- **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.\n- **non_speaking_duration**: Seconds of non-speaking audio to keep on both sides of the recording.\n\n\u003c/details\u003e\n\n---\n\n:bulb: \u0026nbsp; **Refer Jarvis' [README](https://github.com/thevickypedia/Jarvis/blob/master/README.md) for more information on setting up the backend server.**\n\n### Coding Standards\nDocstring format: [`Google`](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) \u003cbr\u003e\nStyling conventions: [`PEP 8`](https://www.python.org/dev/peps/pep-0008/) \u003cbr\u003e\nClean code with pre-commit hooks: [`flake8`](https://flake8.pycqa.org/en/latest/) and\n[`isort`](https://pycqa.github.io/isort/)\n\n### [Release Notes](https://github.com/thevickypedia/Jarvis_UI/blob/main/release_notes.rst)\n**Requirement**\n```shell\npython -m pip install gitverse\n```\n\n**Usage**\n```shell\ngitverse-release reverse -f release_notes.rst -t 'Release Notes'\n```\n\n### Linting\n`PreCommit` will ensure linting, and the doc creation are run on every commit.\n\n**Requirement**\n\u003cbr\u003e\n```bash\npython -m pip install sphinx==5.1.1 pre-commit recommonmark\n```\n\n**Usage**\n\u003cbr\u003e\n```bash\npre-commit run --all-files\n```\n\n### Pypi Package\n[![pypi-module](https://img.shields.io/badge/Software%20Repository-pypi-1f425f.svg)](https://packaging.python.org/tutorials/packaging-projects/)\n\n[https://pypi.org/project/jarvis-ui/](https://pypi.org/project/jarvis-ui/)\n\n### Runbook\n[![made-with-sphinx-doc](https://img.shields.io/badge/Code%20Docs-Sphinx-1f425f.svg)](https://www.sphinx-doc.org/en/master/man/sphinx-autogen.html)\n\n[https://thevickypedia.github.io/Jarvis_UI/](https://thevickypedia.github.io/Jarvis_UI/)\n\n### License \u0026 copyright\n\n\u0026copy; Vignesh Rao\n\nLicensed under the [MIT License](https://github.com/thevickypedia/Jarvis_UI/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevickypedia%2Fjarvis_ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthevickypedia%2Fjarvis_ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthevickypedia%2Fjarvis_ui/lists"}