Automatic Cleanup System: - Background thread cleans files older than 5 minutes every minute - Tracks all temporary files in a registry with creation timestamps - Automatic cleanup on app shutdown with atexit handler - Orphaned file detection and removal - Thread-safe cleanup implementation File Management: - Unique filenames with timestamps prevent collisions - Configurable upload folder via UPLOAD_FOLDER environment variable - Automatic folder creation with proper permissions - Fallback to system temp if primary folder fails - File registration for all uploads and generated audio Health Monitoring: - /health/storage endpoint shows temp file statistics - Tracks file count, total size, oldest file age - Disk space monitoring and warnings - Real-time cleanup status information - Warning when files exceed thresholds Administrative Tools: - maintenance.sh script for manual operations - Status checking, manual cleanup, real-time monitoring - /admin/cleanup endpoint for emergency cleanup (requires auth token) - Configurable retention period (default 5 minutes) Security Improvements: - Filename sanitization in get_audio endpoint - Directory traversal prevention - Cache headers to reduce repeated downloads - Proper file existence checks Performance: - Efficient batch cleanup operations - Minimal overhead with background thread - Smart registry management - Automatic garbage collection after operations This prevents disk space exhaustion by ensuring temporary files are automatically cleaned up after use, with multiple failsafes. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
static | ||
templates | ||
venv | ||
.gitignore | ||
app.py | ||
GPU_SUPPORT.md | ||
health-monitor.py | ||
maintenance.sh | ||
package-lock.json | ||
package.json | ||
README_TYPESCRIPT.md | ||
README.md | ||
requirements.txt | ||
setup-script.sh | ||
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
-
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
Mobile Support
The interface is fully responsive and designed to work well on mobile devices.