Status: In active development. Code is experimental, unstable, and mostly undocumented.
Goal: Build a complete, low-resource pipeline for real-time human–machine interaction on the QT robot.
The project is divided into two main components:
Building an emotion detection system to make the QT robot more expressive and context-aware.
Related Repositories:
- AffectiveTRM: Previously used for multimodal emotion recognition.
Note: This repository is not used in the final pipeline as results were inconclusive, but is kept for reference.
Progress:
- Dataset collection
- Model training
- Model testing
An offline, low-compute pipeline enabling real-time interaction on embedded hardware.
Pipeline components:
- LLM backend (llama.cpp)
- Speech-to-text (Vosk)
- Text-to-speech (Piper)
- Custom agent construction with personalized prompts
- Unified orchestration layer (New "Executor" Thread Architecture)
- Windows & Linux (x64) support using GitHub workflows
- Script tested directly on the QT robot
- New Architecture: Threaded executor with queue-based action management for thread safety.
- Connected Jacket: Support via
--JKTflag using QT-Touch. - API Support: Optional Google Gemini API integration via
--API. - Headless Mode: Run without UI using
--no-ui. -
--QTargument inmain.py: to use when running on the robot. -
--pytestargument inmain.py: used to test the pipeline (excluding the UI). -
--ci-modeargument indownload_model.py: replaces the large 8B model with a smaller 350M model. -
--nameargument: Define custom robot wake-word. - Language Switching: Ability to switch the system language between French and English.
- Voice Selection: Option to change the TTS voice gender (Male/Female).
- OpenAI API Integration: Extending
--APIsupport to include OpenAI models (currently restricted to Google models). - User Documentation: Create a comprehensive guide/wiki to facilitate repository usage and setup for new users.
Building in the open for transparency, feedback, and accountability.
Contributors welcome — feel free to open an issue if you want to help!