TalkInk is a portable ESP32-based device that listens to your speech when you press a button, sends the audio to a local server for translation, and displays the translated text on an ePaper screen. It's designed for accessibility, travel, and embedded multilingual communication.
- Push-to-talk interaction using a physical button
- Real-time voice recording using ESP32 ADC
- Sends audio data to a PHP server over Wi-Fi
- Translates speech into multiple languages using Python (mtranslate)
- Displays translated text on a Waveshare ePaper display
- Supports Persian/Farsi text rendering via PHP GD
- Uses LittleFS to cache images locally
- ESP32 Dev Module
- Analog microphone (connected via ADC)
- Waveshare ePaper display (with UART interface)
- Push button (for triggering voice capture)
- Wi-Fi access point
ink32/
├── src/ # ESP32 firmware source
│ ├── main.cpp
│ ├── config.h
│ ├── ADCSampler.* # Audio capture
│ ├── I2SSampler.* # Base class for I2S/ADC mic
├── lib/
│ └── epaper/ # ePaper display driver
├── server/
│ ├── php/ # Audio receiver and Farsi renderer
│ ├── python/ # Translation using mtranslate
│ └── javascript/ # Optional backend (TypeScript)
- Install PlatformIO
- Edit
src/config.hwith your Wi-Fi credentials and server IP - Build and upload:
platformio run --target upload
- Receives and stores audio via
index.php - Use
deliver.phpto process and respond with translated text - Optional:
php-gd-farsirenders Persian text as BMP images
- Located in
server/python/translate.py - Uses
mtranslateto convert text to other languages - Run standalone or integrate with PHP delivery
pip install mtranslate
python translate.py- Press and hold the button to speak
- ESP32 records audio and streams to the server
- On release, ESP32 requests a translation
- Translated text is split into 2 lines and shown on the ePaper
- English → Farsi, French, Chinese, Italian, Russian, Turkish, etc.
- Configurable via
translate()in Python or server logic
This project is licensed under the MIT License. You are free to use, modify, and distribute it.
Pull requests welcome! Help improve language support, UI design, or server-side robustness.