- Add token bucket rate limiter with sliding window algorithm - Implement per-endpoint configurable rate limits - Add automatic IP blocking for excessive requests - Implement global request limits and concurrent request throttling - Add request size validation for all endpoints - Create admin endpoints for rate limit management - Add rate limit headers to responses - Implement cleanup thread for old rate limit buckets - Create detailed rate limiting documentation Rate limits: - Transcription: 10/min, 100/hour, max 10MB - Translation: 20/min, 300/hour, max 100KB - Streaming: 10/min, 150/hour, max 100KB - TTS: 15/min, 200/hour, max 50KB - Global: 1000/min, 10000/hour, 50 concurrent Security features: - Automatic temporary IP blocking (1 hour) for abuse - Manual IP blocking via admin endpoint - Request size validation to prevent large payload attacks - Burst control to limit sudden traffic spikes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
static | ||
templates | ||
venv | ||
.env.example | ||
.gitignore | ||
app.py | ||
CONNECTION_RETRY.md | ||
CORS_CONFIG.md | ||
GPU_SUPPORT.md | ||
health-monitor.py | ||
maintenance.sh | ||
package-lock.json | ||
package.json | ||
rate_limiter.py | ||
RATE_LIMITING.md | ||
README_TYPESCRIPT.md | ||
README.md | ||
requirements.txt | ||
SECURITY.md | ||
setup-script.sh | ||
test-cors.html | ||
tsconfig.json | ||
tts_test_output.mp3 | ||
tts-debug-script.py | ||
validators.py | ||
whisper_config.py |
Voice Language Translator
A mobile-friendly web application that translates spoken language between multiple languages using:
- Gemma 3 open-source LLM via Ollama for translation
- OpenAI Whisper for speech-to-text
- OpenAI Edge TTS for text-to-speech
Supported Languages
- Arabic
- Armenian
- Azerbaijani
- English
- French
- Georgian
- Kazakh
- Mandarin
- Farsi
- Portuguese
- Russian
- Spanish
- Turkish
- Uzbek
Setup Instructions
-
Install the required Python packages:
pip install -r requirements.txt
-
Configure environment variables:
# Copy the example environment file cp .env.example .env # Edit with your actual values nano .env # Or set directly: export TTS_API_KEY="your-tts-api-key" export SECRET_KEY="your-secret-key"
⚠️ Security Note: Never commit API keys or secrets to version control. See SECURITY.md for details.
-
Make sure you have Ollama installed and the Gemma 3 model loaded:
ollama pull gemma3
-
Ensure your OpenAI Edge TTS server is running on port 5050.
-
Run the application:
python app.py
-
Open your browser and navigate to:
http://localhost:8000
Usage
- Select your source language from the dropdown menu
- Press the microphone button and speak
- Press the button again to stop recording
- Wait for the transcription to complete
- Select your target language
- Press the "Translate" button
- Use the play buttons to hear the original or translated text
Technical Details
- The app uses Flask for the web server
- Audio is processed client-side using the MediaRecorder API
- Whisper for speech recognition with language hints
- Ollama provides access to the Gemma 3 model for translation
- OpenAI Edge TTS delivers natural-sounding speech output
CORS Configuration
The application supports Cross-Origin Resource Sharing (CORS) for secure cross-origin usage. See CORS_CONFIG.md for detailed configuration instructions.
Quick setup:
# Development (allow all origins)
export CORS_ORIGINS="*"
# Production (restrict to specific domains)
export CORS_ORIGINS="https://yourdomain.com,https://app.yourdomain.com"
export ADMIN_CORS_ORIGINS="https://admin.yourdomain.com"
Connection Retry & Offline Support
Talk2Me handles network interruptions gracefully with automatic retry logic:
- Automatic request queuing during connection loss
- Exponential backoff retry with configurable parameters
- Visual connection status indicators
- Priority-based request processing
See CONNECTION_RETRY.md for detailed documentation.
Rate Limiting
Comprehensive rate limiting protects against DoS attacks and resource exhaustion:
- Token bucket algorithm with sliding window
- Per-endpoint configurable limits
- Automatic IP blocking for abusive clients
- Global request limits and concurrent request throttling
- Request size validation
See RATE_LIMITING.md for detailed documentation.
Mobile Support
The interface is fully responsive and designed to work well on mobile devices.