Skip to content

TalkInk — A speech-to-text and translation device using ESP32, ePaper display, and server-side processing in Python, PHP, and TypeScript.

License

Notifications You must be signed in to change notification settings

kavehs87/TalkINK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TalkInk

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.


📦 Features

  • 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

🛠 Hardware Requirements

  • ESP32 Dev Module
  • Analog microphone (connected via ADC)
  • Waveshare ePaper display (with UART interface)
  • Push button (for triggering voice capture)
  • Wi-Fi access point

🧠 Project Structure

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)

🔌 Setup Instructions

ESP32 Firmware

  1. Install PlatformIO
  2. Edit src/config.h with your Wi-Fi credentials and server IP
  3. Build and upload:
    platformio run --target upload

Server Setup

PHP Server

  • Receives and stores audio via index.php
  • Use deliver.php to process and respond with translated text
  • Optional: php-gd-farsi renders Persian text as BMP images

Python Translator

  • Located in server/python/translate.py
  • Uses mtranslate to convert text to other languages
  • Run standalone or integrate with PHP delivery
pip install mtranslate
python translate.py

🎯 How It Works

  1. Press and hold the button to speak
  2. ESP32 records audio and streams to the server
  3. On release, ESP32 requests a translation
  4. Translated text is split into 2 lines and shown on the ePaper

🌍 Supported Languages

  • English → Farsi, French, Chinese, Italian, Russian, Turkish, etc.
  • Configurable via translate() in Python or server logic

📜 License

This project is licensed under the MIT License. You are free to use, modify, and distribute it.


🤝 Contributions

Pull requests welcome! Help improve language support, UI design, or server-side robustness.

About

TalkInk — A speech-to-text and translation device using ESP32, ePaper display, and server-side processing in Python, PHP, and TypeScript.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published