{"id":16616886,"url":"https://github.com/sebastienrousseau/akande","last_synced_at":"2026-02-01T17:09:19.719Z","repository":{"id":221871565,"uuid":"754845749","full_name":"sebastienrousseau/akande","owner":"sebastienrousseau","description":"An innovative, open-source voice assistant powered by OpenAI's GPT-3, designed to provide interactive, conversational experiences through both voice and text inputs. 🐍","archived":false,"fork":false,"pushed_at":"2025-04-24T17:05:22.000Z","size":681,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-22T02:07:41.286Z","etag":null,"topics":["openai","openai-chatgpt","pdf-generation","smartassistant","speechrecognition","speechrecognition-python","text-to-speech","voiceassistant","voicecontrol"],"latest_commit_sha":null,"homepage":"https://akande.co/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebastienrousseau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE-APACHE","code_of_conduct":".github/CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"sebastienrousseau","custom":"https://paypal.me/wwdseb"}},"created_at":"2024-02-08T21:47:45.000Z","updated_at":"2024-07-15T13:08:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"4718dc27-5487-405c-b8fd-5b67e20a982c","html_url":"https://github.com/sebastienrousseau/akande","commit_stats":null,"previous_names":["sebastienrousseau/akande"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/sebastienrousseau/akande","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fakande","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fakande/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fakande/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fakande/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebastienrousseau","download_url":"https://codeload.github.com/sebastienrousseau/akande/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fakande/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28983548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T16:29:42.054Z","status":"ssl_error","status_checked_at":"2026-02-01T16:29:41.428Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["openai","openai-chatgpt","pdf-generation","smartassistant","speechrecognition","speechrecognition-python","text-to-speech","voiceassistant","voicecontrol"],"created_at":"2024-10-12T02:14:34.286Z","updated_at":"2026-02-01T17:09:19.715Z","avatar_url":"https://github.com/sebastienrousseau.png","language":"Python","funding_links":["https://github.com/sponsors/sebastienrousseau","https://paypal.me/wwdseb"],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 MD041 --\u003e\n\n\u003cimg\nsrc=\"https://kura.pro/akande/images/logos/akande.webp\"\nalign=\"right\"\nalt=\"Akande Voice Assistant Logo\"\nheight=\"261\"\nwidth=\"261\"\n/\u003e\n\n\u003c!-- markdownlint-enable MD033 MD041 --\u003e\n\n# Àkàndé\n\n![Banner for Àkàndé - Voice Assistant][banner]\n\nÀkàndé is a self-hosted, provider-agnostic voice assistant that delivers\nstructured executive briefings from any of 10 supported LLM providers.\nAsk a question by voice or text; receive a concise\nOverview / Solution / Conclusion / Recommendations briefing with\nautomatic PDF and CSV artefact generation. Run it against OpenAI, or\nkeep your data entirely private with Ollama or LM Studio on your own\nhardware.\n\nThe name \"Àkàndé\" (Yoruba: \"firstborn\") signifies a pioneering approach\nto voice-driven intelligence briefings.\n\n![divider][divider]\n\n## Why Àkàndé?\n\nAsk a question. Get a structured briefing. Keep your data.\n\nThat is the entire workflow. Voice, text, or web -- Àkàndé listens,\nqueries the LLM of your choice, and delivers a four-section executive\nbriefing: Overview, Solution, Conclusion, Recommendations. PDF and CSV\nartefacts are generated automatically.\n\nNo framework to learn. No output parsing to build. No provider lock-in\nto accept.\n\nTen LLM providers -- including fully private local inference through\nOllama and LM Studio -- all behind one environment variable. Your\nhardware. Your models. Your data.\n\nEvery other tool gives you the engine and expects you to build the car.\nÀkàndé hands you the keys. This is how AI assistants should have always\nworked.\n\n![divider][divider]\n\n## Who is Àkàndé for?\n\n**Python developers** who deploy it: clone, configure a provider, and\nrun. Àkàndé is a standard Python package with a CLI entry point, a\nCherryPy web server mode, and 161 tests.\n\n**End users and executives** who interact with it: speak or type a\nquestion and receive a structured briefing read aloud and saved as\nPDF/CSV. No technical knowledge required once deployed.\n\n![divider][divider]\n\n## Quick Start\n\n### Prerequisites\n\n- Python 3.9+\n- PortAudio (for microphone input):\n  Ubuntu/Debian `sudo apt install portaudio19-dev`,\n  macOS `brew install portaudio`\n- ffmpeg (for audio conversion):\n  Ubuntu/Debian `sudo apt install ffmpeg`,\n  macOS `brew install ffmpeg`\n\n### Installation\n\n```bash\ngit clone https://github.com/sebastienrousseau/akande\ncd akande\npython -m venv venv \u0026\u0026 source venv/bin/activate\npip install -r requirements.txt\n\ncp .env.example .env\n# Edit .env: set OPENAI_API_KEY=sk-your-key-here\n\npython -m akande\n```\n\nSelect option **2** (\"Ask a question\"), type your query, and receive a\nstructured briefing.\n\n![divider][divider]\n\n## Provider Configuration\n\nSet `LLM_PROVIDER` in your `.env` file. Install extras for non-OpenAI\nproviders.\n\n| Provider | `LLM_PROVIDER` | Required env vars | Install extras | Default model |\n|---|---|---|---|---|\n| OpenAI | `openai` | `OPENAI_API_KEY` | *(included)* | `gpt-3.5-turbo` |\n| Anthropic | `anthropic` | `ANTHROPIC_API_KEY` | `pip install akande[anthropic]` | `claude-3-haiku-20240307` |\n| Google Gemini | `google` | `GOOGLE_API_KEY` | `pip install akande[google]` | `gemini-pro` |\n| Ollama | `ollama` | `OLLAMA_HOST` | *(included)* | `llama3` |\n| Azure OpenAI | `azure_openai` | `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT` | *(included)* | `gpt-35-turbo` |\n| Mistral | `mistral` | `MISTRAL_API_KEY` | `pip install akande[mistral]` | `mistral-small-latest` |\n| Cohere | `cohere` | `COHERE_API_KEY` | `pip install akande[cohere]` | `command-r` |\n| Hugging Face | `huggingface` | `HUGGINGFACE_API_KEY` | `pip install akande[huggingface]` | `mistralai/Mistral-7B-Instruct-v0.2` |\n| Groq | `groq` | `GROQ_API_KEY` | *(included)* | `llama3-8b-8192` |\n| LM Studio | `lmstudio` | `LMSTUDIO_HOST` | *(included)* | `local-model` |\n\nTo install all optional provider SDKs: `pip install akande[all]`\n\n![divider][divider]\n\n## Interaction Modes\n\nÀkàndé presents a CLI menu with four options:\n\n1. **Use voice** -- speak your question via microphone; response is read\n   aloud\n2. **Ask a question** -- type your question; response is printed and\n   read aloud\n3. **Start server** -- launches a web UI at `http://127.0.0.1:8080`\n   with voice and text input\n4. **Stop** -- exits the assistant\n\n![divider][divider]\n\n## Example Interaction\n\n**Question:** \"What is quantitative easing?\"\n\n\u003e **Overview**\n\u003e Quantitative easing (QE) is a monetary policy tool used by central\n\u003e banks to stimulate economic activity when conventional interest rate\n\u003e cuts are insufficient.\n\u003e\n\u003e **Solution**\n\u003e - Central banks purchase government bonds and other securities to\n\u003e   inject money into the economy\n\u003e - This lowers long-term interest rates, encouraging borrowing and\n\u003e   investment\n\u003e - QE increases the money supply without printing physical currency\n\u003e\n\u003e **Conclusion**\n\u003e QE can stabilise financial markets during crises but carries risks of\n\u003e asset bubbles and currency devaluation.\n\u003e\n\u003e **Recommendations**\n\u003e - Monitor inflation indicators alongside QE announcements\n\u003e - Consider the impact on bond yields for portfolio decisions\n\nEach response is automatically saved as a timestamped PDF and CSV in the\noutput directory.\n\n![divider][divider]\n\n## Troubleshooting\n\n| Problem | Cause | Fix |\n|---|---|---|\n| `Could not find PyAudio` | PortAudio missing | Ubuntu: `sudo apt install portaudio19-dev`. macOS: `brew install portaudio`. Then `pip install pyaudio`. |\n| `ffmpeg not found` | ffmpeg not installed | Ubuntu: `sudo apt install ffmpeg`. macOS: `brew install ffmpeg`. |\n| Microphone not detected | OS permissions | Grant microphone access in system settings. |\n| `ModuleNotFoundError: No module named 'anthropic'` | Provider SDK not installed | `pip install akande[anthropic]`. See the provider table above. |\n| `Invalid or missing OPENAI_API_KEY` | Key not set or malformed | Ensure `.env` contains a valid `sk-` prefixed key. |\n\n![divider][divider]\n\n## Roadmap\n\n- Streaming responses for reduced time-to-first-token\n- Conversation memory with multi-turn context\n- Markdown and HTML briefing output formats\n- Plugin system for domain-specific briefing templates\n- Docker image for single-command deployment\n\n![divider][divider]\n\n## Trust\n\n- **161 tests** covering providers, caching, services, server, and\n  utilities\n- **Apache 2.0 licence** -- permissive, enterprise-friendly\n- **Euxis-audited** architecture and security posture\n\n![divider][divider]\n\n## Contributing\n\nPull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for\nguidelines.\n\n![divider][divider]\n\n## License\n\nThis project is licensed under the Apache Software License -- see the\n[LICENSE](LICENSE) file for details.\n\n![divider][divider]\n\n[divider]: https://kura.pro/common/images/elements/divider.svg \"Divider\"\n[banner]: https://kura.pro/akande/images/titles/title-akande.webp \"Banner for Àkàndé - Voice Assistant\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastienrousseau%2Fakande","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebastienrousseau%2Fakande","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastienrousseau%2Fakande/lists"}