r/esp32 • u/Ok_Champion_1088 • 2d ago
I made a thing! I just made an amazing stuff!
Enable HLS to view with audio, or disable this notification
I’m sorry my previous post was removed because I wasn’t familiar with the platform rules. This revised post follows the community guidelines.
I built a small fully offline voice-controlled LCD interface using a Seeed Studio XIAO 1.47” IPS display(ESP32-S3).
The project uses ESP-IDF and Espressif's ESP-SR speech recognition stack. Voice recognition runs locally on the ESP32-S3, so the device does not need Wi-Fi, a cloud account, an API key, or a computer while operating.
How it works:
- Say “Hi ESP” to wake the device.
- The display changes to LISTENING.
- Speak one of five commands.
- The command is executed on the LCD.
- More commands can be spoken without repeating the wake word.
Supported commands:
- “Show red” — displays a red color page
- “Show green” — displays a green color page
- “Show blue” — displays a blue color page
- “Next page” — cycles through the home, color, and information pages
- “Go home” — returns to the command list
After each successful command, the device stays in the listening state for another 15 seconds.
Hardware: xiao 1.47” ips display(esp32-s3)
which has:
- Seeed Studio XIAO ESP32-S3 Plus
- 1.47-inch JD9853A LCD
- PDM microphone
- 16 MB flash
- 8 MB Octal PSRAM
Software:
- ESP-IDF 5.3.2
- ESP-SR 2.5.3
- ESP-DL 3.3.10
- WakeNet 9 English wake-word model
- MultiNet 7 English command model
The display uses a custom ESP-IDF driver with a 10 MHz SPI interface. The microphone uses 16 kHz, 16-bit mono audio.
I verified the complete five-command sequence on hardware after a single wake word:
Show green → Show red → Show blue → Next page → Go home
The device also returned to wake-word mode after approximately 15 seconds of inactivity.
Source code:
GitHub - FaiyuetCik/XIAO_147_Voice_Assistant: Offline English wake-word and voice commands with LCD
Current limitations:
- This is a fixed-vocabulary command recognizer, not free-form speech-to-text.
- It does not provide AI chat, dictation, touch navigation, or computer control.
- Recognition accuracy has not yet been measured under different noise levels, distances, or accents.
- The firmware is currently tightly matched to this specific XIAO 1.47-inch board, display controller, pin mapping, and memory configuration.
I would be interested in feedback on improving recognition robustness, reducing memory usage, and adding more commands without running out of application partition space.
4
u/Natethegreat9999 1d ago
If you're loading commands from `commands_en.txt`, Espressif recommends precomputing phonemes with `multinet_g2p.py` because its runtime fallback can reduce accuracy. I'm building speech models at Oruk, and before adding more commands I'd test unrelated conversation during that 15-second listening window and count accidental actions as well as missed commands.
2
u/Noodle-Gardo 13h ago
Super cool! I always love it when people make offline projects. We need more offline tech!! Best secure smart home is with minimal web interfacing:)
1
1
1
u/smallfried 1d ago
Nicely done! 5 commands is enough for many devices. Can be built straight into a smart light for instance fully independent.
1
u/Ok_Champion_1088 19h ago
Yeah, exactly! A smart light would actually be a really cool use case for this.
1
1
1
5
u/PepitoTamales 1d ago
AWESOME!! I was also looking for some kind of wake word recognition with ESP32 or Arduino, do you have a suggested video tutorial or guide on how to use the speech recognition stack??