{"id":13602094,"url":"https://github.com/wangzongming/esp-ai","last_synced_at":"2025-05-14T16:13:43.638Z","repository":{"id":246168951,"uuid":"820274347","full_name":"wangzongming/esp-ai","owner":"wangzongming","description":"The simplest and lowest-cost AI integration solution. If you like this project, please give it a Star~ | 最简单、最低成本的AI接入方案。喜欢本项目的话点个 Star 吧~","archived":false,"fork":false,"pushed_at":"2025-04-04T17:29:29.000Z","size":264582,"stargazers_count":729,"open_issues_count":0,"forks_count":79,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-06T16:02:35.748Z","etag":null,"topics":["aiot","arduino","arduino-llm","esp-ai","esp32","esp32-ai","esp32-idf","esp32-llm","esp8266","iat","llm","rag","tts"],"latest_commit_sha":null,"homepage":"https://espai.fun","language":"HTML","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/wangzongming.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,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":"https://afdian.com/a/esp-ai"}},"created_at":"2024-06-26T06:39:06.000Z","updated_at":"2025-04-06T10:13:20.000Z","dependencies_parsed_at":"2025-01-18T02:01:24.638Z","dependency_job_id":"a4696f0c-498f-4635-b48c-27fa50178aa2","html_url":"https://github.com/wangzongming/esp-ai","commit_stats":{"total_commits":100,"total_committers":6,"mean_commits":"16.666666666666668","dds":0.38,"last_synced_commit":"12140eb77b50a8e142271f7b199b3b070d1ca945"},"previous_names":["wangzongming/esp-ai"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangzongming%2Fesp-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangzongming%2Fesp-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangzongming%2Fesp-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangzongming%2Fesp-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangzongming","download_url":"https://codeload.github.com/wangzongming/esp-ai/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248759404,"owners_count":21157151,"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":["aiot","arduino","arduino-llm","esp-ai","esp32","esp32-ai","esp32-idf","esp32-llm","esp8266","iat","llm","rag","tts"],"created_at":"2024-08-01T18:01:13.984Z","updated_at":"2025-04-13T18:25:26.613Z","avatar_url":"https://github.com/wangzongming.png","language":"HTML","funding_links":["https://afdian.com/a/esp-ai"],"categories":["JavaScript"],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e \n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv style=\"background:#fff;border-radius: 12px;width:300px;\"\u003e\n  \u003cimg src=\"https://espai.fun/images/logo.png\"/\u003e \n\u003c/div\u003e\n\n\u003ch1\u003eESP-AI\u003c/h1\u003e\n\n硬件接入AI最简单、最低成本的方案\u003cbr/\u003eThe simplest and lowest cost solution for any item to access AI\n\n\n[![NPM version][npm-image]][npm-url] \n[![NPM downloads][download-image]][download-url]\n[![][bundlephobia-image]][bundlephobia-url] \n\n[Changelog](https://espai.fun/change-logs.html) · \n[中文文档](https://espai.fun/) · \n[English Docs](https://espai.fun/en)\n\n![](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png)\n\n[npm-image]: https://img.shields.io/npm/v/esp-ai.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/esp-ai\n[download-url]: https://npmjs.org/package/esp-ai\n[bundlephobia-image]: https://badgen.net/bundlephobia/minzip/esp-ai?style=flat-square\n[download-image]: https://img.shields.io/npm/dm/esp-ai.svg?style=flat\n[bundlephobia-url]: https://bundlephobia.com/package/esp-ai \n   \n\n\u003cdiv style=\"background:#fff;border-radius: 12px;\"\u003e\n\u003cimg src=\"https://espai.fun/images/ESP-AI.png\"/\u003e\n\u003c/div\u003e\n\n\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n# language\n\n\u003ch3\u003e\n\u003ca href=\"./readme_zh.md\"\u003e👉简体中文\u003c/a\u003e \n\u003c/h3\u003e\n\u003ch3\u003e \n\u003ca href=\"./readme_ja.md\"\u003e👉Japanese\u003c/a\u003e\n\u003c/h3\u003e\n\n\n# Intro\n\n\u003e Provides a complete AI dialogue solution for your development board, including but not limited to the `IAT(ASR)+LLM+TTS` integration solution for the `ESP32` series development boards. It is injected into the project as a dependency without affecting existing projects.\n\nFor developing the dialogue functionality of robots, you only need to prepare the `IAT(ASR)`, `LLM`, and `TTS` services, and leave the rest to `ESP-AI`.\n\nThe server-side code of this project is based on `Node.js`, and the hardware code is based on `Arduino`/`IDF`.\n\nOpen source is not easy, click the `Star` button in the upper right corner to show your support~\n\n# 🖥 Website\n\n- [中文网站](https://espai.fun/)\n- [English](https://espai.fun/en)\n\n\n# 🖥 open platform \n\nA platform based on ESP-AI that provides end services and management services to businesses and individuals. [Visit the Open Platform](https://dev.espai.fun/).\nIt offers free ASR (Automatic Speech Recognition), TTS (Text-to-Speech), and LLM (Large Language Model) services. On this platform, you can clone a custom voice with just a 15-second audio clip.\n\n# ✨ Features\n\n- ✔️ Customizable offline wake words with multiple built-in wake-up methods (voice, button, serial port, Tianwen ASRPro)\n- ✔️ Complete conversation chain: IAT (ASR) ➡️ LLM/RAG ➡️ TTS\n- ✔️ Fast response algorithms for TTS/LLM, designed to balance service cost while providing the quickest response time\n- ✔️ Supports conversation interruption\n- ✔️ Recognizes user commands (appliance control, singing, etc.) and can dynamically respond based on context\n- ✔️ Configurable\n- ✔️ Plugin-based, allowing integration with any LLM/TTS/IAT using plugins\n- ✔️ One-to-many relationship between service and clients, with independent configuration for each client (hardware)\n- ✔️ Connection supports authentication\n- ✔️ Full-chain streaming data interaction\n- ✔️ Developer platform offers: free services, visual configuration, etc.\n- ✔️ Client configuration webpage provided\n- ✔️ Easily handles high concurrency scenarios (requires Nginx for load balancing)\n- ✔️ Ready to use out of the box\n\n# 🧐 Next Steps\n\n- [ ] 🤔 Improve accuracy of built-in offline wake-up (currently recommended to use Tianwen ASRPro) \n- [ ] 🤔 Online wake word generation \n- [ ] 🤔 Develop plugins in other languages (to avoid relying solely on Node.js for plugin development) \n\n# 📦 Install\n\n\n### Server\n```bash\ndocker run -itd -p 8088:8088 -v /esp-ai-server/index.js:/server/index.js --name esp-ai-server registry.cn-shanghai.aliyuncs.com/xiaomingio/esp-ai:1.0.0\n```\n### Client\nDownload the dependency on the release page and burn it to the development board, see details: [Client Install](https://espai.fun/start.html#%E5%AE%A2%E6%88%B7%E7%AB%AF)\n\n# 🔨 Inject Soul into Your Robot with Just a Few Lines of Code\n\nBelow are the `Node.js` and `Arduino` codes you need to write if you only require dialogue functionality.\n\n\u003c!-- \u003cimg src=\"./imgs/arduino.png\" /\u003e --\u003e\n\u003c!-- \u003cimg src=\"./imgs/nodejs.png\" /\u003e --\u003e\n\u003cimg src=\"https://espai.fun/images/arduino.png\" /\u003e\n\u003cimg src=\"https://espai.fun/images/nodejs.png\" /\u003e\n\n\n# 🏪 Discussion Group\nQQ Discussion Group: 854445223\n \n# 🎥 Case Study Video\n[bilibili](https://www.bilibili.com/video/BV1gE421w7Dw/?share_source=copy_web\u0026vd_source=041c9610a29750f498de1bafe953086b)\n \n\n## 🤝 Contributing [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nLet's build a better `esp-ai` together.\n\nWe warmly invite contributions from everyone. Feel free to share your ideas through [Pull Requests](https://github.com/wangzongming/esp-ai/pulls) or [GitHub Issues](https://github.com/wangzongming/esp-ai//issues).\n \n\u003ctable\u003e\n\u003ctr\u003e\n  \u003ctd\u003e \n\u003ca href=\"https://next.ossinsight.io/widgets/official/compose-recent-top-contributors?repo_id=820274347\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/compose-recent-top-contributors/thumbnail.png?repo_id=820274347\u0026image_size=auto\u0026color_scheme=dark\" width=\"280\" height=\"auto\"\u003e\n    \u003cimg alt=\"Top Contributors of wangzongming/esp-ai - Last 28 days\" src=\"https://next.ossinsight.io/widgets/official/compose-recent-top-contributors/thumbnail.png?repo_id=820274347\u0026image_size=auto\u0026color_scheme=light\" width=\"280\" height=\"auto\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n \n  \u003c/td\u003e\n  \u003ctd rowspan=\"2\"\u003e \n    \u003ca href=\"https://next.ossinsight.io/widgets/official/compose-last-28-days-stats?repo_id=820274347\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n    \u003cpicture\u003e\n        \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=820274347\u0026image_size=auto\u0026color_scheme=dark\" width=\"655\" height=\"auto\"\u003e\n        \u003cimg alt=\"Performance Stats of wangzongming/esp-ai - Last 28 days\" src=\"https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=820274347\u0026image_size=auto\u0026color_scheme=light\" width=\"655\" height=\"auto\"\u003e\n    \u003c/picture\u003e\n    \u003c/a\u003e \n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd\u003e \n\u003ca href=\"https://next.ossinsight.io/widgets/official/compose-recent-active-contributors?repo_id=820274347\u0026limit=30\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/compose-recent-active-contributors/thumbnail.png?repo_id=820274347\u0026limit=30\u0026image_size=auto\u0026color_scheme=dark\" width=\"273\" height=\"auto\"\u003e\n    \u003cimg alt=\"Active Contributors of wangzongming/esp-ai - Last 28 days\" src=\"https://next.ossinsight.io/widgets/official/compose-recent-active-contributors/thumbnail.png?repo_id=820274347\u0026limit=30\u0026image_size=auto\u0026color_scheme=light\" width=\"273\" height=\"auto\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e \n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\n# 🌍 Star geographical distribution\n\u003ca href=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-map?repo_id=820274347\u0026activity=stars\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?repo_id=820274347\u0026activity=stars\u0026image_size=auto\u0026color_scheme=dark\" width=\"721\" height=\"auto\"\u003e\n    \u003cimg alt=\"Star Geographical Distribution of wangzongming/esp-ai\" src=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-map/thumbnail.png?repo_id=820274347\u0026activity=stars\u0026image_size=auto\u0026color_scheme=light\" width=\"100%\" height=\"auto\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e \n\n\n# quote\nIf this project has helped your research, please cite us:\n\n    @software{ESP-AI,\n        title        = {{ESP-AI}},\n        author       = {小明IO},\n        year         = 2024,\n        journal      = {GitHub repository},\n        publisher    = {GitHub},\n        howpublished = {\\url{https://github.com/wangzongming/esp-ai}}\n    }","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangzongming%2Fesp-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangzongming%2Fesp-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangzongming%2Fesp-ai/lists"}