{"id":13584927,"url":"https://github.com/ggeop/Python-ai-assistant","last_synced_at":"2025-04-07T05:36:25.177Z","repository":{"id":37671930,"uuid":"187098112","full_name":"ggeop/Python-ai-assistant","owner":"ggeop","description":"Python AI assistant 🧠","archived":false,"fork":false,"pushed_at":"2024-11-17T19:30:20.000Z","size":3134,"stargazers_count":964,"open_issues_count":38,"forks_count":250,"subscribers_count":44,"default_branch":"develop","last_synced_at":"2025-04-06T10:06:17.860Z","etag":null,"topics":["ai","google-speech-recognition","google-speech-to-text","linux-assistant","mongodb","nlp","nlp-machine-learning","nltk","pymongo","python","python35","sklearn","voice-activity-detection","voice-assistant","voice-chat","voice-commands","voice-control","voice-recognition","voice-recognition-experiment","wolfram-language"],"latest_commit_sha":null,"homepage":"","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/ggeop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2019-05-16T20:38:31.000Z","updated_at":"2025-04-05T14:35:02.000Z","dependencies_parsed_at":"2024-09-02T16:20:51.743Z","dependency_job_id":"95645ce3-7ffc-4fc2-8348-96fd74537f1a","html_url":"https://github.com/ggeop/Python-ai-assistant","commit_stats":{"total_commits":574,"total_committers":14,"mean_commits":41.0,"dds":0.5383275261324042,"last_synced_commit":"7dbca6fdc9397638f430386a837122905aeed5e0"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggeop%2FPython-ai-assistant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggeop%2FPython-ai-assistant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggeop%2FPython-ai-assistant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggeop%2FPython-ai-assistant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ggeop","download_url":"https://codeload.github.com/ggeop/Python-ai-assistant/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601488,"owners_count":20964862,"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":["ai","google-speech-recognition","google-speech-to-text","linux-assistant","mongodb","nlp","nlp-machine-learning","nltk","pymongo","python","python35","sklearn","voice-activity-detection","voice-assistant","voice-chat","voice-commands","voice-control","voice-recognition","voice-recognition-experiment","wolfram-language"],"created_at":"2024-08-01T15:04:36.405Z","updated_at":"2025-04-07T05:36:25.170Z","avatar_url":"https://github.com/ggeop.png","language":"Python","readme":"[![CodeFactor](https://www.codefactor.io/repository/github/ggeop/python-ai-assistant/badge)](https://www.codefactor.io/repository/github/ggeop/Python-ai-assistant)\n[![Maintainability](https://api.codeclimate.com/v1/badges/8c90305e22186cc2c9d5/maintainability)](https://codeclimate.com/github/ggeop/Python-ai-assistant/maintainability)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Build Status](https://app.travis-ci.com/ggeop/Python-ai-assistant.svg?branch=master)](https://app.travis-ci.com/ggeop/Python-ai-assistant)\n\n![alt text](https://github.com/ggeop/Python-ai-assistant/blob/master/imgs/jarvis_logo.png)\n\n# About Jarvis - An Intelligent AI Consciousness 🧠\nJarvis is a voice commanding assistant service in [Python 3.8](https://www.python.org/downloads/release/python-360/)\nIt can recognize human speech, talk to user and execute basic commands.\n\n#### Requirements\n\n* Operation system: **Ubuntu 20.04 (Focal Fossa)**\n* Python Version: **3.8.x**\n\n\n#### Assistant Skills \n*   **Opens a web page** (e.g 'Jarvis open youtube')\n*   **Play music in Youtube** (e.g 'Jarvis play mozart')\n*   **Increase/decrease** the speakers master volume (also can set max/mute speakers volume) ** (e.g 'Jarvis volume up!')\n*   **Opens libreoffice suite applications (calc, writer, impress)** (e.g 'Jarvis open calc')\n*   **Tells about something**, by searching on the internet (e.g 'Jarvis tells me about oranges')\n*   **Tells the weather** for a place (e.g 'Jarvis tell_the_skills me the weather in London')\n*   **Tells the current time and/or date** (e.g 'Jarvis tell me time or date')\n*   **Set an alarm** (e.g 'Jarvis create a new alarm')\n*   **Tells the internet speed (ping, uplink and downling)** (e.g 'Jarvis tell_the_skills me the internet speed')\n*   **Tells the internet availability** (e.g 'Jarvis is the internet connection ok?')\n*   **Tells the daily news** (e.g 'Jarvis tell me today news')\n*   **Spells a word** (e.g 'Jarvis spell me the word animal')\n*   **Creates a reminder** (e.g 'Jarvis create a 10 minutes reminder')\n*   **Opens linux applications** (e.g 'Jarvis open bash/firefox')\n*   **Tells everything it can do** (e.g 'Jarvis tell me your skills or tell me what can you do')\n*   **Tells the current location** (e.g 'Jarvis tell me your current location')\n*   **Tells how much memory consumes** (e.g 'Jarvis tell me your memory consumption)\n*   **Tells users commands history** (e.g 'Jarvis tell me my history')\n*   **Write/tell 'remember' and enable learning mode and add new responses on demand!** (e.g 'Jarvis remember')\n*   **Clear bash console** (e.g 'Jarvis clear console')\n*   **Has help command, which prints all the skills with their descriptions** (e.g 'Jarvis help')\n*   **Do basic calculations** (e.g 'Jarvis (5 + 6) * 8' or 'Jarvis one plus one')\n*   **Change settings on runtime** (e.g 'Jarvis change settings')\n\n#### Assistant Features\n*   **Asynchronous command execution \u0026 speech recognition and interpretation**\n*   Supports **two different user input modes (text or speech)**, user can write or speek in the mic.\n*   Answers in **general questions** (via call Wolfram API), e.g ('Jarvis tell me the highest building') \n*   **Change input mode on run time**, triggered by a phrase e.g 'Jarvis change settings')\n*   Easy **voice-command customization**\n*   Configurable **assistant name** (e.g 'Jarvis', 'Sofia', 'John' etc.) (change on run time supported)\n*   **Log preview** in console\n*   **Vocal or/and text response**\n*   **Keeps commands history and learned skills** in MongoDB.'\n\n## Getting Started\n### Create KEYs for third party APIs\nJarvis assistant uses third party APIs for speech recognition,web information search, weather forecasting etc.\nAll the following APIs have free no-commercial API calls. Subscribe to the following APIs in order to take FREE access KEYs.\n*   [OpenWeatherMap](https://openweathermap.org/appid): API for weather forecast.\n*   [WolframAlpha](https://developer.wolframalpha.com/portal/myapps/): API for answer questions.\n*   [IPSTACK](https://ipstack.com/signup/free): API for current location.\n### Setup Jarvis in Ubuntu/Debian system\n* Download the Jarvis repo locally:\n```bash\ngit clone https://github.com/ggeop/Jarvis.git --branch master\n```\n\n**For Contribution**:\n```bash\ngit clone https://github.com/ggeop/Jarvis.git --branch develop\n```\n\n*   Change working directory\n```bash\ncd Jarvis\n```\n*   Setup Jarvis and system dependencies:\n```bash\nbash setup.sh\n```\n\n*   Put the Keys in settings\n\n**NOTE:** *For better experience, before you start the application you can put the free KEYs in the settings.py*\n\n```bash\nnano Jarvis/src/jarvis/jarvis/setting.py\n```\n\n### Start voice commanding assistant\n![alt text](https://github.com/ggeop/Jarvis/blob/master/imgs/Jarvis_printscreen.PNG)\n\n*   Start the assistant service:\n```bash\nbash run_jarvis.sh\n```\n\n### How to add a new Skill to assistant\nYou can easily add a new skill in two steps.\n*   Create a new configuration SKILLS in **skills/registry.py**\n```python\n{ \n  'enable': True,\n  'func': Skills.new_skill,\n  'tags': 'tag1, tag2',\n  'description': 'skill description..'\n}               \n```\n*   Create a new skill module in **skills/collection**\n\n### Decision Model\n![alt text](https://github.com/ggeop/Jarvis/blob/master/imgs/desicion_model.png)\n\n### Extract skill\nThe skill extraction implement in a matrix of [TF-IDF features](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html) for each skill.\nIn the following example he have a dimensional space with three skills.\nThe user input analyzed in this space and by using a similarity metric (e.g cosine) we find the most similar skill.\n![alt text](https://github.com/ggeop/Jarvis/blob/master/imgs/skill_space_desicion.png)\n\n---\n\n## Contributing\n* Pull Requests (PRs) are welcome :relaxed:\n* The process for contribution is the following:\n    * Clone the project\n    * Checkout `develop` branch and create a feature branch e.g `feature_branch`\n    * Open a PR to `develop`\n    * Wait for review and approval !!\n    * `master` branch update and release is automated via [Travis CI/CD](https://app.travis-ci.com/github/ggeop/Python-ai-assistant)\n* Try to follow PEP-8 guidelines and add useful comments!\n\n## CI/CD Flow\n![alt text](https://github.com/ggeop/Python-ai-assistant/blob/master/imgs/TravisFlow.png)\n\n## 🔗 Related Projects\n\nIf you enjoy this virtual assistant, you might also be interested in my other AI-powered project: [DataDialogue](https://github.com/ggeop/DataDialogueLLM)\n\nTransform the way you interact with databases through natural conversations! DataDialogue enables anyone to:\n\n- 💬 **Query databases using natural language**\n- 📊 **Get instant data visualizations**\n- 🔍 **Explore data without SQL knowledge**\n- 🤝 **Bridge the gap between data and business users**\n\n\u003cdiv align=\"center\"\u003e\n\u003cdiv style=\"position: relative; display: inline-block; width: fit-content;\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=breOr5o7r3Y\" style=\"text-decoration: none;\"\u003e\n    \u003cimg src=\"https://github.com/ggeop/DataDialogueLLM/blob/main/media/imgs/data_dialogue_agent_responses.png\" alt=\"DataDialogue Demo\" width=\"600\" style=\"display: block; border-radius: 8px; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.1);\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n","funding_links":[],"categories":["Python","语音识别与合成_其他"],"sub_categories":["网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggeop%2FPython-ai-assistant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fggeop%2FPython-ai-assistant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggeop%2FPython-ai-assistant/lists"}