mrkeyoor.com_
Sun 01 Nov 09:11 UTC
AI Toolsevaluationupdated 01 Oct 2026

xiaozhi-esp32 review

Xiaozhi-esp32 is C++ firmware that turns supported ESP32 boards into networked voice assistants with wake words, streaming speech, displays, cameras, and MCP device control. The project grew from a Chinese-speaking hardware community, but the default README and core developer documents are available in English.

+342stars / 7d
Verdict

Our xiaozhi-esp32 run stopped after 11 seconds because CMake could not find /tools/cmake/project.cmake or recognize idf_build_set_property, so source builders need a provisioned ESP-IDF environment before they can judge the firmware. Use it when your exact board is supported and you want an unusually broad voice, display, camera, and MCP stack on ESP32 hardware. Choose prepared firmware for a hobby build; product teams should compile and exercise their precise board revision before committing.

We ran it

Lab card: what happened when we ran xiaozhi-esp32Screenshot of xiaozhi-esp32 (xiaozhi.me)
Install✗ · 11s
Build—
Repo1712 files~128,047 lines of source · 9.4 MB · 1 CI workflows

Answers from our run

Does xiaozhi-esp32 build from source?

The dependency install failed, and the project has no separate build step. We cloned commit abc177c into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use xiaozhi-esp32?

Developers expecting an ordinary CMake project to configure in a generic C++ image: our run failed in 11 seconds when ESP-IDF project files and commands were unavailable.

What are the alternatives to xiaozhi-esp32?

ESP-Skainet, ESP-BOX, py-xiaozhi. Our xiaozhi-esp32 run stopped after 11 seconds because CMake could not find `/tools/cmake/project.

Setup1/5Our install stopped in 11 seconds before configuration completed
Docs4/5English setup and protocol docs, with some Chinese beginner links
Community5/530,358 stars, an October 1 push, and active board work
Maturity3/5v2.5.0 covers many boards, but open hardware bugs still matter

Who it’s for

ESP32 developers building a physical voice assistant with microphones, speakers, screens, LEDs, servos, or cameras.
Makers who own one of the documented boards and prefer flashing a prepared firmware image.
Embedded teams prepared to pin an ESP-IDF toolchain and validate audio behavior on the exact board revision they ship.
Builders who want device-side MCP controls or a Xiaozhi-compatible server they can host themselves.

Who it’s NOT for

Developers expecting an ordinary CMake project to configure in a generic C++ image: our run failed in 11 seconds when ESP-IDF project files and commands were unavailable.
Teams still standardized on ESP-IDF 5.x: the current README requires 6.0.1 or later and recommends 6.1.
Products that need one uniform firmware path across all hardware: the README lists 138 board directories and 171 release variants, while open bugs describe board-specific audio and boot failures.
Buyers requiring a visible root test suite: our scan found no tests directory and only 1 CI workflow file.
English-only teams that need every beginner resource and support channel in English: the main README is translated, but several linked tutorials and community resources are on Chinese-language services.

Setup reality

Our fresh container checked out commit abc177c, a 9.4 MB repository with 1,712 files and roughly 128,047 lines of source. Installation failed after 11 seconds. CMake could not find /tools/cmake/project.cmake and did not recognize idf_build_set_property. The supplied run has no later build or test result.

The source-build path requires ESP-IDF 6.0.1 or newer, with 6.1 recommended, plus board selection and the normal ESP32 flash and monitor workflow. Voice service configuration happens through the Xiaozhi console by default; personal servers are separate projects. Prepared firmware images let beginners skip the compiler setup.

Hardware choice is part of setup. The README lists 138 board directories and 171 release variants across several ESP32 families, with board-specific displays, audio codecs, cameras, networking, and power features. The repository has 1 CI workflow file, no Dockerfile, and no tests directory, so reproduce the exact board build and test the physical audio path yourself.

The 171 release variants are the product and the burden

Xiaozhi-esp32 supports 138 board directories and 171 release variants according to its current README. The firmware spans ESP32, C3, C5, C6, S3, and P4 chips, then adds board-specific audio codecs, screens, cameras, batteries, and networking. That breadth makes it far more useful than a single-board demo. It also changes the buying decision. You are choosing a supported hardware and firmware pair, with the voice-assistant features layered on top.

The common layer is substantial. It handles offline wake words, Opus audio streaming, WebSocket or MQTT plus UDP transport, streaming speech services, displays, camera input, and power management. Device-side MCP exposes hardware such as speakers, LEDs, servos, and GPIO. Cloud-side MCP can reach services beyond the board. The README lists 39 interface languages, though localized voice prompts fall back to English where a translation is unavailable.

Networking varies with the selected hardware too. The README covers Wi-Fi, Ethernet, USB RNDIS, and supported Cat.1 4G modules, with some boards able to switch between Wi-Fi and 4G. Full-duplex conversation depends on echo-cancellation hardware. A board appearing in the matrix therefore answers only the first compatibility question. You still need to confirm its microphone channels, speaker path, display controller, camera sensor, power behavior, and chosen network transport.

What happened when we ran it

Our sandbox cloned commit abc177c into an unprivileged container with 3 CPUs and 8 GB of RAM. The checkout held 1,712 files, about 128,047 lines of source, and occupied 9.4 MB. Installation failed after 11 seconds. The repository scan found 1 CI workflow file, no Dockerfile, and no tests directory. Those are source-tree facts, not evidence that a particular board image works or fails.

CMake reported two concrete errors. It could not find /tools/cmake/project.cmake, then treated idf_build_set_property as an unknown command. Configuration stopped there. The supplied lab record contains no later build or test measurement, so there is no defensible firmware result to report. The log does not tell us which package, environment setting, or image change would have fixed the run.

That failed 11-second configuration is useful to a buyer. Xiaozhi-esp32 does not behave like a portable CMake project in a general C++ container. Its build expects the ESP-IDF project machinery described by the repository. A team should provision that toolchain first, select the exact board target, and treat a successful compile as the beginning of hardware validation rather than the end.

ESP-IDF 6.0.1 is the source-build starting line

The current README requires ESP-IDF 6.0.1 or later, recommends 6.1, and says ESP-IDF 5.x is unsupported. It recommends Linux over Windows for faster compilation and fewer driver problems. That is clearer than leaving the SDK implicit, but it also means an existing ESP32 shop may need a separate toolchain for Xiaozhi instead of dropping the firmware into an older IDF environment.

Beginners have an easier route. The project recommends flashing prepared firmware without setting up the development environment, and the firmware connects to the official Xiaozhi server by default. The README says personal users can register through the console and use its Qwen real-time model. Self-hosting is possible through separately maintained Python, Java, and Go server projects, so operating your own backend is another deployment decision rather than a switch inside this repository.

Three v2.5.0 reports show why the exact board matters

Open issue 2278 reports an illegal-instruction boot loop on an M5Stack Tab5 P4 Rev 1.0 using both the official v2.5.0 image and a self-built target. The report includes the repeatable point after touch and camera initialization. Open issue 2262 says an ESP32-S3-Box Lite recognizes its wake word but does not hear later speech. These are reporter findings on named devices, not results from our generic container.

Open issue 2251 describes a different failure on the Waveshare ESP32-S3 Touch LCD 1.54: enabling echo cancellation can make the device interrupt its own speech, with the behavior reported as worse after reducing volume. The issue concerns one audio path and board combination. Together, the 3 reports explain why a green compile would not be enough for a product team. Microphone routing, echo cancellation, camera startup, and board revision need physical tests.

An October 1 push accompanies 669 open issues and pull requests

GitHub showed 30,358 stars and 669 open issues and pull requests on October 2, 2026. The repository was pushed on October 1, and the latest release was v2.5.0 from September 10. That release added board support, languages, audio playback work, display fixes, MCP validation, and several hardware-specific corrections. The dates and current pull requests show active maintenance, while the combined queue reflects the cost of supporting a large hardware matrix.

Prepared firmware is the sensible entry point when its filename already matches your board. Source builders should reproduce the IDF 6.x environment, then lock the board directory, revision, audio hardware, transport, and backend they intend to ship. Our run never crossed configuration. The next proof belongs on the physical device, where the v2.5.0 reports show that audio and startup behavior can change with the board revision.

Alternatives

ProjectWhat it isPick it when
ESP-SkainetEspressif's firmware examples for wake-word and offline speech-command recognition.pick this instead when offline wake words and fixed commands matter more than a cloud-backed conversational assistant.
ESP-BOXEspressif's AIoT development platform and examples for its ESP-BOX hardware.pick this instead when you are targeting Espressif's own box hardware and want vendor examples rather than Xiaozhi's broad board matrix.
py-xiaozhiA Python Xiaozhi client for desktops, Raspberry Pi, and other larger edge computers.pick this instead when you want the Xiaozhi protocol and MCP features without an ESP32 firmware toolchain.

Sources

  1. Xiaozhi ESP32 README
  2. Xiaozhi ESP32 v2.5.0 release
  3. Issue 2278: M5Stack Tab5 illegal-instruction boot loop
  4. Issue 2262: ESP32-S3-Box Lite hears only the wake word
  5. Issue 2251: Waveshare echo-cancellation false triggers

More ai tools reviews

anarlog · pr-agent · agent-sprite-forge · KiroCrew · Orkas · hypit · the whole board →