{"id":31067160,"url":"https://github.com/wendy7756/AI-Video-Transcriber","last_synced_at":"2025-09-15T19:04:06.408Z","repository":{"id":312083409,"uuid":"1046070227","full_name":"wendy7756/AI-Video-Transcriber","owner":"wendy7756","description":" Transcribe and summarize video content using AI. Open-source, multi-platform, and supports multiple languages.","archived":false,"fork":false,"pushed_at":"2025-09-05T17:54:29.000Z","size":286,"stargazers_count":120,"open_issues_count":0,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-05T19:36:53.087Z","etag":null,"topics":["aitool","tiktok","transcribe","videototext","youtube"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wendy7756.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-28T06:27:27.000Z","updated_at":"2025-09-05T19:22:33.000Z","dependencies_parsed_at":"2025-08-28T18:51:58.063Z","dependency_job_id":null,"html_url":"https://github.com/wendy7756/AI-Video-Transcriber","commit_stats":null,"previous_names":["wendy7756/ai-video-transcriber"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wendy7756/AI-Video-Transcriber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wendy7756%2FAI-Video-Transcriber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wendy7756%2FAI-Video-Transcriber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wendy7756%2FAI-Video-Transcriber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wendy7756%2FAI-Video-Transcriber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wendy7756","download_url":"https://codeload.github.com/wendy7756/AI-Video-Transcriber/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wendy7756%2FAI-Video-Transcriber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275305009,"owners_count":25441184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aitool","tiktok","transcribe","videototext","youtube"],"created_at":"2025-09-15T19:02:36.034Z","updated_at":"2025-09-15T19:04:06.396Z","avatar_url":"https://github.com/wendy7756.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# AI Video Transcriber\n\nEnglish | [中文](README_ZH.md)\n\nAn AI-powered video transcription and summarization tool that supports multiple video platforms including YouTube, Tiktok, Bilibili, and 30+ platforms.\n\n![Interface](en-video.png)\n\n\u003c/div\u003e\n\n## ✨ Features\n\n- 🎥 **Multi-Platform Support**: Works with YouTube, Tiktok, Bilibili, and 30+ more\n- 🗣️ **Intelligent Transcription**: High-accuracy speech-to-text using Faster-Whisper\n- 🤖 **AI Text Optimization**: Automatic typo correction, sentence completion, and intelligent paragraphing\n- 🌍 **Multi-Language Summaries**: Generate intelligent summaries in multiple languages\n- ⚡ **Real-Time Progress**: Live progress tracking and status updates\n- ⚙️ **Conditional Translation**: When the selected summary language differs from the detected transcript language, the system auto-translates with GPT‑4o\n- 📱 **Mobile-Friendly**: Perfect support for mobile devices\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Python 3.8+\n- FFmpeg\n- Optional: OpenAI API key (for AI summary features)\n\n### Installation\n\n#### Method 1: Automatic Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/wendy7756/AI-Video-Transcriber.git\ncd AI-Video-Transcriber\n\n# Run installation script\nchmod +x install.sh\n./install.sh\n```\n\n#### Method 2: Docker\n\n```bash\n# Clone the repository\ngit clone https://github.com/wendy7756/AI-Video-Transcriber.git\ncd AI-Video-Transcriber\n\n# Using Docker Compose (easiest)\ncp .env.example .env\n# Edit .env file and set your OPENAI_API_KEY\ndocker-compose up -d\n\n# Or using Docker directly\ndocker build -t ai-video-transcriber .\ndocker run -p 8000:8000 -e OPENAI_API_KEY=\"your_api_key_here\" ai-video-transcriber\n```\n\n#### Method 3: Manual Installation\n\n1. **Install Python Dependencies**\n```bash\n# macOS (PEP 668) strongly recommends using a virtualenv\npython3 -m venv .venv\nsource .venv/bin/activate\npython -m pip install --upgrade pip\npip install -r requirements.txt\n```\n\n2. **Install FFmpeg**\n```bash\n# macOS\nbrew install ffmpeg\n\n# Ubuntu/Debian\nsudo apt update \u0026\u0026 sudo apt install ffmpeg\n\n# CentOS/RHEL\nsudo yum install ffmpeg\n```\n\n3. **Configure Environment Variables**\n```bash\n# Required for AI summary/translation features\nexport OPENAI_API_KEY=\"your_api_key_here\"\n\n# Optional: only if you use a custom OpenAI-compatible gateway\n\n### Start the Service\n\n```bash\npython3 start.py\n```\n\nAfter the service starts, open your browser and visit `http://localhost:8000`\n\n#### Production Mode (Recommended for long videos)\n\nTo avoid SSE disconnections during long processing, start in production mode (hot-reload disabled):\n\n```bash\npython3 start.py --prod\n```\n\nThis keeps the SSE connection stable throughout long tasks (30–60+ min).\n\n#### Run with explicit env (example)\n\n```bash\nsource .venv/bin/activate\nexport OPENAI_API_KEY=your_api_key_here\n# export OPENAI_BASE_URL=https://oneapi.basevec.com/v1   # if using a custom endpoint\npython3 start.py --prod\n```\n\n## 📖 Usage Guide\n\n1. **Enter Video URL**: Paste a video link from YouTube, Bilibili, or other supported platforms\n2. **Select Summary Language**: Choose the language for the generated summary\n3. **Start Processing**: Click the \"Start\" button\n4. **Monitor Progress**: Watch real-time progress through multiple stages:\n   - Video download and parsing\n   - Audio transcription with Faster-Whisper\n   - AI-powered transcript optimization (typo correction, sentence completion, intelligent paragraphing)\n   - AI summary generation in selected language\n5. **View Results**: Review the optimized transcript and intelligent summary\n   - If transcript language ≠ selected summary language, a third tab “Translation” is shown containing a translated transcript\n6. **Download Files**: Click download buttons to save Markdown-formatted files (Transcript / Translation / Summary)\n\n## 🛠️ Technical Architecture\n\n### Backend Stack\n- **FastAPI**: Modern Python web framework\n- **yt-dlp**: Video downloading and processing\n- **Faster-Whisper**: Efficient speech transcription\n- **OpenAI API**: Intelligent text summarization\n\n### Frontend Stack\n- **HTML5 + CSS3**: Responsive interface design\n- **JavaScript (ES6+)**: Modern frontend interactions\n- **Marked.js**: Markdown rendering\n- **Font Awesome**: Icon library\n\n### Project Structure\n```\nAI-Video-Transcriber/\n├── backend/                 # Backend code\n│   ├── main.py             # FastAPI main application\n│   ├── video_processor.py  # Video processing module\n│   ├── transcriber.py      # Transcription module\n│   ├── summarizer.py       # Summary module\n│   └── translator.py       # Translation module\n├── static/                 # Frontend files\n│   ├── index.html          # Main page\n│   └── app.js              # Frontend logic\n├── temp/                   # Temporary files directory\n├── Dockerfile              # Docker image configuration\n├── docker-compose.yml      # Docker Compose configuration\n├── .dockerignore           # Docker ignore rules\n├── .env.example            # Environment variables template\n├── requirements.txt        # Python dependencies\n├── start.py               # Startup script\n└── README.md              # Project documentation\n```\n\n## ⚙️ Configuration Options\n\n### Environment Variables\n\n| Variable | Description | Default | Required |\n|----------|-------------|---------|----------|\n| `OPENAI_API_KEY` | OpenAI API key | - | Yes (for AI features) |\n| `HOST` | Server address | `0.0.0.0` | No |\n| `PORT` | Server port | `8000` | No |\n| `WHISPER_MODEL_SIZE` | Whisper model size | `base` | No |\n\n### Whisper Model Size Options\n\n| Model | Parameters | English-only | Multilingual | Speed | Memory Usage |\n|-------|------------|--------------|--------------|-------|--------------|\n| tiny | 39 M | ✓ | ✓ | Fast | Low |\n| base | 74 M | ✓ | ✓ | Medium | Low |\n| small | 244 M | ✓ | ✓ | Medium | Medium |\n| medium | 769 M | ✓ | ✓ | Slow | Medium |\n| large | 1550 M | ✗ | ✓ | Very Slow | High |\n\n## 🔧 FAQ\n\n### Q: Why is transcription slow?\nA: Transcription speed depends on video length, Whisper model size, and hardware performance. Try using smaller models (like tiny or base) to improve speed.\n\n### Q: Which video platforms are supported?\nA: All platforms supported by yt-dlp, including but not limited to: YouTube, TikTok, Facebook, Instagram, Twitter, Bilibili, Youku, iQiyi, Tencent Video, etc.\n\n### Q: What if the AI optimization features are unavailable?\nA: Both transcript optimization and summary generation require an OpenAI API key. Without it, the system provides the raw transcript from Whisper and a simplified summary.\n\n### Q: I get HTTP 500 errors when starting/using the service. Why?\nA: In most cases this is an environment configuration issue rather than a code bug. Please check:\n- Ensure a virtualenv is activated: `source .venv/bin/activate`\n- Install deps inside the venv: `pip install -r requirements.txt`\n- Set `OPENAI_API_KEY` (required for summary/translation)\n- If using a custom gateway, set `OPENAI_BASE_URL` correctly and ensure network access\n- Install FFmpeg: `brew install ffmpeg` (macOS) / `sudo apt install ffmpeg` (Debian/Ubuntu)\n- If port 8000 is occupied, stop the old process or change `PORT`\n\n### Q: How to handle long videos?\nA: The system can process videos of any length, but processing time will increase accordingly. For very long videos, consider using smaller Whisper models.\n\n### Q: How to use Docker for deployment?\nA: Docker provides the easiest deployment method:\n\n**Prerequisites:**\n- Install Docker Desktop from https://www.docker.com/products/docker-desktop/\n- Ensure Docker service is running\n\n**Quick Start:**\n```bash\n# Clone and setup\ngit clone https://github.com/wendy7756/AI-Video-Transcriber.git\ncd AI-Video-Transcriber\ncp .env.example .env\n# Edit .env file to set your OPENAI_API_KEY\n\n# Start with Docker Compose (recommended)\ndocker-compose up -d\n\n# Or build and run manually\ndocker build -t ai-video-transcriber .\ndocker run -p 8000:8000 --env-file .env ai-video-transcriber\n```\n\n**Common Docker Issues:**\n- **Port conflict**: Change port mapping `-p 8001:8000` if 8000 is occupied\n- **Permission denied**: Ensure Docker Desktop is running and you have proper permissions\n- **Build fails**: Check disk space (need ~2GB free) and network connection\n- **Container won't start**: Verify .env file exists and contains valid OPENAI_API_KEY\n\n**Docker Commands:**\n```bash\n# View running containers\ndocker ps\n\n# Check container logs\ndocker logs ai-video-transcriber-ai-video-transcriber-1\n\n# Stop service\ndocker-compose down\n\n# Rebuild after changes\ndocker-compose build --no-cache\n```\n\n### Q: What are the memory requirements?\nA: Memory usage varies depending on the deployment method and workload:\n\n**Docker Deployment:**\n- **Base memory**: ~128MB for idle container\n- **During processing**: 500MB - 2GB depending on video length and Whisper model\n- **Docker image size**: ~1.6GB disk space required\n- **Recommended**: 4GB+ RAM for smooth operation\n\n**Traditional Deployment:**\n- **Base memory**: ~50-100MB for FastAPI server\n- **Whisper models memory usage**:\n  - `tiny`: ~150MB\n  - `base`: ~250MB  \n  - `small`: ~750MB\n  - `medium`: ~1.5GB\n  - `large`: ~3GB\n- **Peak usage**: Base + Model + Video processing (~500MB additional)\n\n**Memory Optimization Tips:**\n```bash\n# Use smaller Whisper model to reduce memory usage\nWHISPER_MODEL_SIZE=tiny  # or base\n\n# For Docker, limit container memory if needed\ndocker run -m 1g -p 8000:8000 --env-file .env ai-video-transcriber\n\n# Monitor memory usage\ndocker stats ai-video-transcriber-ai-video-transcriber-1\n```\n\n### Q: Network connection errors or timeouts?\nA: If you encounter network-related errors during video downloading or API calls, try these solutions:\n\n**Common Network Issues:**\n- Video download fails with \"Unable to extract\" or timeout errors\n- OpenAI API calls return connection timeout or DNS resolution failures\n- Docker image pull fails or is extremely slow\n\n**Solutions:**\n1. **Switch VPN/Proxy**: Try connecting to a different VPN server or switch your proxy settings\n2. **Check Network Stability**: Ensure your internet connection is stable\n3. **Retry After Network Change**: Wait 30-60 seconds after changing network settings before retrying\n4. **Use Alternative Endpoints**: If using custom OpenAI endpoints, verify they're accessible from your network\n5. **Docker Network Issues**: Restart Docker Desktop if container networking fails\n\n**Quick Network Test:**\n```bash\n# Test video platform access\ncurl -I https://www.youtube.com/\n\n# Test OpenAI API access (replace with your endpoint)\ncurl -I https://api.openai.com\n\n# Test Docker Hub access\ndocker pull hello-world\n``\n\n## 🎯 Supported Languages\n\n### Transcription\n- Supports 100+ languages through Whisper\n- Automatic language detection\n- High accuracy for major languages\n\n### Summary Generation\n- English\n- Chinese (Simplified)\n- Japanese\n- Korean\n- Spanish\n- French\n- German\n- Portuguese\n- Russian\n- Arabic\n- And more...\n\n## 📈 Performance Tips\n\n- **Hardware Requirements**:\n  - Minimum: 4GB RAM, dual-core CPU\n  - Recommended: 8GB RAM, quad-core CPU\n  - Ideal: 16GB RAM, multi-core CPU, SSD storage\n\n- **Processing Time Estimates**:\n  | Video Length | Estimated Time | Notes |\n  |-------------|----------------|-------|\n  | 1 minute | 30s-1 minute | Depends on network and hardware |\n  | 5 minutes | 2-5 minutes | Recommended for first-time testing |\n  | 15 minutes | 5-15 minutes | Suitable for regular use |\n\n## 🤝 Contributing\n\nWe welcome Issues and Pull Requests!\n\n1. Fork the project\n2. Create a feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\n## Acknowledgments\n\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp) - Powerful video downloading tool\n- [Faster-Whisper](https://github.com/guillaumekln/faster-whisper) - Efficient Whisper implementation\n- [FastAPI](https://fastapi.tiangolo.com/) - Modern Python web framework\n- [OpenAI](https://openai.com/) - Intelligent text processing API\n\n## 📞 Contact\n\nFor questions or suggestions, please submit an Issue or contact Wendy.\n\n## ⭐ Star History\n\nIf you find this project helpful, please consider giving it a star!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwendy7756%2FAI-Video-Transcriber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwendy7756%2FAI-Video-Transcriber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwendy7756%2FAI-Video-Transcriber/lists"}