A production-ready voice assistant built with LiveKit for real-time communication and Flutter integration. Features custom Speech-to-Text (STT) and Text-to-Speech (TTS) implementations using local APIs for enhanced privacy and performance.
Simulator.-.iPhone.15.Pro.-.5.June.2025.3.mp4
Uploading Overview of ExtraWest Company (1).mp4…
- 🗣️ Real-time Voice Communication: Seamless voice interaction with AI assistant
- 🏠 Local API Architecture: Privacy-focused local processing
- Custom STT via Speeches AI API
- Custom TTS via Kokoro AI API
- Groq LLM integration for intelligent responses
- 🛠️ Extended Capabilities:
- 🔍 Web search using Tavily API
- 🌤️ Weather information retrieval
- ⚡ Performance Optimized:
- LiveKit real-time communication framework
- Silero VAD for precise voice activity detection
- Integrated noise cancellation
- Python 3.10 or higher
- LiveKit server (local or cloud deployment)
- Local STT API (Speeches AI)
- Local TTS API (Kokoro AI)
- Ollama running locally
- Flutter SDK (for mobile app)
Clone and configure the voice assistant backend:
git clone https://github.com/extrawest/livekit_voice_assistant.git
cd livekit_voice_assistant
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
Edit .env
with your settings:
# LiveKit Configuration
LIVEKIT_URL=ws://localhost:7880
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=secret
# STT Configuration
STT_API_URL=your_stt_url
# LLM Configuration
GROQ_API_KEY=your-groq-api-key
# TTS Configuration
TTS_API_URL=your_tts_url
TTS_API_KEY=your-tts-api-key
# Optional Features
WEATHER_API_KEY=your-weather-api-key
TAVILY_API_KEY=your-tavily-api-key
python main.py dev
Set up the mobile application:
- Navigate to flutter/application folder
- Create .env file, add your LIVEKIT_SANDBOX_ID=
or
# Clone Flutter frontend
git clone https://github.com/livekit-examples/voice-assistant-flutter
cd voice-assistant-flutter
# Install Flutter dependencies
flutter pub get
# Run the application
flutter run
- Create account at LiveKit Cloud
- Register your server
- Update environment variables with your LiveKit credentials
The application follows a modular architecture:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Flutter App │◄──►│ LiveKit │◄──►│ Voice Assistant│
│ (Frontend) │ │ (Real-time │ │ (Backend) │
└─────────────────┘ │ Communication) │ └─────────────────┘
└──────────────────┘
│
┌───────────▼──────────┐
│ Local APIs │
│ ┌─────────────────┐ │
│ │ STT (Speeches) │ │
│ │ TTS (Kokoro) │ │
│ │ LLM (Groq) │ │
│ └─────────────────┘ │
└──────────────────────┘
- LiveKit Integration: Manages real-time audio streaming and room connections
- Custom STT Module: Converts speech to text using local Speeches AI API
- Custom TTS Module: Generates natural speech from text via Kokoro AI API
- Groq LLM Processing: Handles conversation logic and response generation
- Agent Controller: Orchestrates conversation flow and tool integrations
Utilizes Silero VAD for accurate speech detection, reducing false triggers and improving conversation flow.
Built-in audio processing for cleaner voice interactions in various environments.
Extensible architecture supporting additional tools like Tavily web search and OpenWeather APIs.
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Created by Oleksandr Samoilenko
Extrawest.com, 2025