--- title: tubeMate - Video Transcription Service emoji: ๐ŸŽฌ colorFrom: blue colorTo: purple sdk: gradio sdk_version: 4.42.0 app_file: app_simple.py pinned: false license: mit tags: - video - transcription - whisper - speech-to-text - ai - audio --- # ๐ŸŽฌ tubeMate - Video Transcription Service **tubeMate** is a powerful, free video transcription service using OpenAI Whisper. Transform your videos into accurate text with support for 99+ languages, deployed on Hugging Face Spaces with both beautiful web interface and robust API access. ## โœจ Features - ๐ŸŽฅ **Multiple Video Formats**: MP4, AVI, MOV, MKV, WMV, FLV, WebM, M4V - ๐Ÿ—ฃ๏ธ **Free Speech-to-Text**: OpenAI Whisper (no API limits) - ๐ŸŒ **Language Support**: 99+ languages with auto-detection - ๐Ÿ“ฑ **Dual Interface**: Web UI + REST API - โšก **Fast Processing**: Optimized for Hugging Face Spaces - ๐Ÿงน **Auto Cleanup**: Results stored for 3.5 hours ## ๐Ÿš€ Quick Start ### Web Interface 1. Upload your video file 2. Select language (or use auto-detect) 3. Click "Start Transcription" 4. Use the transcription ID to check status ### API Access **Upload Video:** ```bash curl -X POST "https://your-space-name.hf.space/api/transcribe" \ -F "file=@video.mp4" \ -F "language=en" ``` **Check Status:** ```bash curl "https://your-space-name.hf.space/api/transcribe/123" ``` **Python Example:** ```python import requests # Upload video with open('video.mp4', 'rb') as f: response = requests.post( 'https://your-space-name.hf.space/api/transcribe', files={'file': f}, data={'language': 'en'} ) result = response.json() transcription_id = result['id'] # Check status import time while True: status_response = requests.get( f'https://your-space-name.hf.space/api/transcribe/{transcription_id}' ) status = status_response.json() if status['status'] == 'completed': print("Transcription:", status['text']) break elif status['status'] == 'failed': print("Error:", status['error_message']) break else: print("Status:", status['status']) time.sleep(10) ``` ## ๐Ÿ“‹ API Endpoints | Endpoint | Method | Description | |----------|--------|-------------| | `/api/transcribe` | POST | Upload video for transcription | | `/api/transcribe/{id}` | GET | Get transcription status/results | | `/api/health` | GET | Service health check | ## ๐ŸŒ Supported Languages Auto-detection or specify: English, Spanish, French, German, Italian, Portuguese, Russian, Japanese, Korean, Chinese, Arabic, Hindi, and 87+ more languages. ## ๐Ÿ“ Limitations - **File Size**: 100MB maximum per video - **Processing**: Sequential (one video at a time) - **Storage**: Results expire after 3.5 hours - **Rate Limiting**: Built-in protection against abuse ## ๐Ÿ”ง Technical Details - **Model**: OpenAI Whisper (base model for accuracy) - **Backend**: FastAPI + Gradio - **Processing**: Async with real-time status updates - **Storage**: In-memory with automatic cleanup - **Deployment**: Optimized for Hugging Face Spaces ## ๐Ÿ“Š Response Format **Upload Response:** ```json { "id": 123, "status": "pending", "message": "Transcription started", "created_at": "2024-01-15T10:30:00Z" } ``` **Status Response:** ```json { "id": 123, "status": "completed", "text": "Hello, this is the transcribed text...", "language": "en", "duration": 45.6, "created_at": "2024-01-15T10:30:00Z", "completed_at": "2024-01-15T10:32:15Z" } ``` ## ๐Ÿ› ๏ธ Development This service combines: - **Gradio**: Beautiful web interface - **FastAPI**: Robust API endpoints - **OpenAI Whisper**: State-of-the-art transcription - **Async Processing**: Non-blocking operations ## ๐Ÿ“ž Support - ๐Ÿ“– **Documentation**: Available in the API tab - ๐Ÿ› **Issues**: Report via GitHub - ๐Ÿ’ก **Features**: Suggest improvements ## ๐Ÿ“„ License MIT License - free for any use. --- **Ready to transcribe with tubeMate? Upload your video or use the API endpoints above! ๐ŸŽ‰**