Ruva is a modern AI powered speech tutor that targets speech anxiety and provides personalised coaching via native RAG architecture. It focuses on different types of speech problems spanning from stuttering to going blank while speaking. It has 4 different practice modes/rooms and supports both single-player and multiplayer activities.
- Frontend: React + TypeScript + Vite
- Backend: Python + FastAPI + WebSocket
- Database: MongoDB
- Cache: Redis
- AI: Google Gemini API
- Speech Processing: Whisper, Silero VAD, Parselmouth
- The RAG architecture enables users to get personalised training over time. Ruva remembers one's strengths/weaknesses and thus enforces targetted improvements.
- Debate Mode: 2 players with AI judge OR AI vs one player
- Group Discussion: 2+ players with AI facilitator
- JAM Mode: Single-player Just-A-Minute practice
- Reading Mode: Single-player pronunciation practice
- Live speech transcription
- Voice activity detection
- Real-time speech analysis
- WebSocket communication
- Multi-user rooms
- Prosodic analysis (pitch, intensity, jitter, shimmer)
- Filler word detection
- Pause analysis
- Sentiment analysis
- Body language analysis (planned)
- Docker and Docker Compose
- Node.js 18+ (for local development)
- Python 3.11+ (for local development)
- Clone the repository
- Copy environment file:
cp backend/.env.example backend/.env
- Add your Gemini API key to
backend/.env - Start all services:
sudo docker compose up -d
This will start:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- MongoDB: localhost:27017
- Redis: localhost:6379
cd frontend
npm install
npm run devcd backend
pip install -r requirements.txt
uvicorn main:socket_app --reloadruva/
├── frontend/ # React TypeScript frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── store/ # Redux store and slices
│ │ └── main.tsx # Application entry point
│ ├── package.json
│ └── vite.config.ts
├── backend/ # FastAPI Python backend
│ ├── app/
│ │ ├── api/ # API routes
│ │ ├── core/ # Configuration and database
│ │ ├── models/ # Pydantic models
│ │ ├── services/ # Business logic
│ │ └── websocket/ # WebSocket handlers
│ ├── main.py # Application entry point
│ └── requirements.txt
├── docker-compose.yml # Development environment
└── README.md
Create backend/.env from backend/.env.example:
# Database
MONGODB_URL=mongodb://localhost:27017
DATABASE_NAME=ruva
# Cache
REDIS_URL=redis://localhost:6379
# AI Services
GEMINI_API_KEY=your_gemini_api_key_here
# Audio Processing
WHISPER_MODEL=base
SAMPLE_RATE=16000
# Security
SECRET_KEY=your-secret-key-here./deploy_cloudrun.sh- Configure production database URLs
- Set secure secret keys
- Configure CORS origins
- Set up SSL certificates
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details.