{"id":17526907,"url":"https://github.com/alxpez/alts","last_synced_at":"2026-01-18T10:04:38.807Z","repository":{"id":214701185,"uuid":"735758289","full_name":"alxpez/alts","owner":"alxpez","description":"100% free, local \u0026 offline voice assistant with speech recognition","archived":false,"fork":false,"pushed_at":"2024-10-08T04:03:54.000Z","size":3415,"stargazers_count":72,"open_issues_count":1,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-22T03:02:17.816Z","etag":null,"topics":["assistant","chatbot","llm","local","offline","ollama","speech-recognition","stt","tts","voice","voice-assistant","whisper"],"latest_commit_sha":null,"homepage":"https://github.com/alxpez/alts","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alxpez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-12-26T02:24:20.000Z","updated_at":"2025-06-03T07:54:00.000Z","dependencies_parsed_at":"2024-01-29T03:30:28.504Z","dependency_job_id":"794805f9-1be0-4d7d-9c3a-b7594f72d75b","html_url":"https://github.com/alxpez/alts","commit_stats":null,"previous_names":["alxpez/alts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alxpez/alts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxpez%2Falts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxpez%2Falts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxpez%2Falts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxpez%2Falts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alxpez","download_url":"https://codeload.github.com/alxpez/alts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxpez%2Falts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["assistant","chatbot","llm","local","offline","ollama","speech-recognition","stt","tts","voice","voice-assistant","whisper"],"created_at":"2024-10-20T15:02:36.922Z","updated_at":"2026-01-18T10:04:38.791Z","avatar_url":"https://github.com/alxpez.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003ealts\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/alxpez/alts\" target=\"_blank\"\u003e\n    \u003cimg width=\"180\" src=\"icon_v2.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e( 🎙️ \u003cstrong\u003el\u003c/strong\u003eistens | 💭 \u003cstrong\u003et\u003c/strong\u003ehinks | 🔊 \u003cstrong\u003es\u003c/strong\u003epeaks )\u003c/p\u003e\n\n\u003c/br\u003e\n\n## 💬 about\n100% free, local and offline assistant with speech recognition and talk-back functionalities.\n\n## 🤖 default usage\n\u003c!-- \nTODO: FUTURE FEATURES:\n- long-term-memory: ability to save conversations\n(thinking of redis - ease of use and speed)\n\n[OTHER FAST_MODES... customizable?]\n- voice-to-clipboard: talk to take notes, write emails... paste raw or parsed text.\n(Use the LLM to reshape/process/parse the whisper result to get a refined result)\n(research if possible to paste automatically in the focused text-box)\n\n- task-bar-icon: make the python script into a proper app\n(or a simple installable package at least)\n(include interface to text too)\n\n- UI interface for config: run a local http server and serve a simple js UI\n--\u003e\nALTS runs in the background and waits for you to press `cmd+esc` (or `win+esc`).\n- 🎙️ While holding the hotkey, your voice will be recorded _(saves in the project root)_.\n- 💭 On release, the recording stops and a transcript is sent to the LLM _(the recording is deleted)_.\n- 🔊 The LLM responses then get synthesized and played back to you _(also shown as desktop notifications)_.\n\nYou can modify the hotkey combination and other settings in your `config.yaml`.\n\n\u003e ALL processes are local and __NONE__ of your recordings or queries leave your environment; the recordings are deleted as soon as they are used; it's __ALL PRIVATE__ by _default_\n\n## ⚙️ pre-requisites\n- ### python\n  \u003e (tested on) version \\\u003e=3.11 on macOS and version \\\u003e=3.8 on windows\n\n- ### llm\n  By default, the project is configured to work with [Ollama](https://ollama.ai/), running the [`stablelm2` model](https://ollama.ai/library/stablelm2) (a very tiny and quick model). This setup makes the whole system completely free to run locally and great for low resource machines.\n\n  However, we use [LiteLLM](https://github.com/BerriAI/litellm) in order to be provider agnostic, so you have full freedom to pick and choose your own combinations.\n  Take a look at the supported [Models/Providers](https://docs.litellm.ai/docs/providers) for more details on LLM configuration.\n  \u003e See `.env.template` and `config-template.yaml` for customizing your setup\n\n\u003c!-- TODO: Include extra information and examples of LLM configurations --\u003e\n\n- ### stt\n  We use `openAI's whisper` to transcribe your voice queries. It's a general-purpose speech recognition model.\n\n  You will need to have [`ffmepg`](https://ffmpeg.org/) installed in your environment, you can [download](https://ffmpeg.org/download.html) it from the official site.\n\n  Make sure to check out their [setup](https://github.com/openai/whisper?tab=readme-ov-file#setup) docs, for any other requirement.\n  \u003e if you stumble into errors, one reason could be the model not downloading automatically. If that's the case you can run a `whisper` example transcription in your terminal ([see examples](https://github.com/openai/whisper?tab=readme-ov-file#command-line-usage)) or manually download it and place the model-file in the [correct folder](https://github.com/openai/whisper/discussions/63)\n\n\n- ### tts\n  We use `coqui-TTS` for ALTS to talk-back to you. It's a library for advanced Text-to-Speech generation.\n\n  You will need to install [`eSpeak-ng`](https://github.com/espeak-ng/espeak-ng) in your environment:\n  - macOS – `brew install espeak`\n  - linux – `sudo apt-get install espeak -y`\n  - windows – [download](https://github.com/espeak-ng/espeak-ng/releases) the executable from their repo\n    \u003e on __windows__ you'll also need `Desktop development with C++` and `.NET desktop build tools`.\n    \u003e Download the [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) and install these dependencies.\n\n  Make sure to check out their [setup](https://github.com/coqui-ai/TTS/tree/dev#installation) docs, for any other requirement.\n  \u003e if you don't have the configured model already downloaded it should download automatically during startup, however if you encounter any problems, the default model can be pre-downloaded by running the following:\n  \u003e  ```ssh\n  \u003e  tts --text \"this is a setup test\" --out_path test_output.wav --model_name tts_models/en/vctk/vits --speaker_idx p364\n  \u003e  ```\n  \u003e The default model has several \"speakers\" to choose from; running the following command will serve a demo site where you can test the different voices available:\n  \u003e ```ssh\n  \u003e tts-server --model_name tts_models/en/vctk/vits\n  \u003e ```\n\n## ✅ get it running\nclone the repo\n```ssh\ngit clone https://github.com/alxpez/alts.git\n```\n\ngo to the main folder\n```ssh\ncd alts/\n```\n\ninstall the project dependencies\n```ssh\npip install -r requirements.txt\n```\n\u003e see the [pre-requisites](#%EF%B8%8F-pre-requisites) section, to make sure your machine is ready to start the ALTS\n\nduplicate and rename the needed config files\n```ssh\ncp config-template.yaml config.yaml\ncp .env.template .env\n```\n\u003e modify the default configuration to your needs\n\nstart up ALTS\n```ssh\nsudo python alts.py\n```\n\u003e the `keyboard` package requires to be run as admin (in macOS and Linux), it's not the case on Windows\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxpez%2Falts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falxpez%2Falts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxpez%2Falts/lists"}