Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
86b2a93
feat: Initialize Farsi Transcriber application structure
claude Nov 12, 2025
0cc07b9
feat: Create PyQt6 GUI with file picker and results display
claude Nov 12, 2025
3fa194f
feat: Implement Whisper integration for Farsi transcription
claude Nov 12, 2025
dd57ada
feat: Implement comprehensive export functionality
claude Nov 12, 2025
72ab2e3
feat: Add professional styling and theming
claude Nov 12, 2025
efdcf42
feat: Add comprehensive configuration and documentation
claude Nov 12, 2025
22ddbf4
feat: Create React web application with Figma design and Flask backend
claude Nov 13, 2025
7238568
docs: Add quick start guide for both desktop and web apps
claude Nov 13, 2025
8c76e1b
feat: Prepare web app for Railway deployment
claude Nov 15, 2025
826659d
docs: Add Railway quick start deployment guide
claude Nov 15, 2025
22b810a
Initial plan
Copilot Nov 15, 2025
245f1c3
Ready for Railway deployment
Copilot Nov 15, 2025
f4abb3a
Fix build configuration and TypeScript errors for Railway deployment
Copilot Nov 15, 2025
538917d
Update openai-whisper to compatible version for deployment
Copilot Nov 15, 2025
980886b
Merge pull request #1 from ariavn-byte/copilot/prepare-for-railway-de…
ariavn-byte Nov 15, 2025
6217f53
Initial plan
Copilot Nov 15, 2025
6c5c3b3
Fix critical code quality issues: remove unused imports, fix f-string…
Copilot Nov 15, 2025
d93554a
Merge pull request #3 from ariavn-byte/copilot/review-repo-011cv3pvca…
ariavn-byte Nov 16, 2025
54ffdb7
fix: Update dependencies for Railway compatibility
claude Nov 16, 2025
341f74b
fix: Optimize Railway build size to stay under 4GB limit
claude Nov 16, 2025
3c9fdc8
fix: Remove restrictive PyTorch version constraint
claude Nov 18, 2025
bb53f17
fix: Remove model loading from healthcheck endpoint to prevent timeou…
claude Nov 23, 2025
e7fcd4b
fix: Consolidate nixpacks.toml to repo root for proper Railway backen…
claude Nov 23, 2025
4fadc2c
feat: Integrate frontend with backend API for transcription and export
claude Nov 23, 2025
f6f67cc
feat: Add Railway configuration for multi-service deployment (fronten…
claude Nov 23, 2025
1f8e215
fix: Consolidate nixpacks.toml to service directories for proper Rail…
claude Nov 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .railwayignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Railway ignore file - prevent large files from being included in build
node_modules/.bin
node_modules/.cache
node_modules/.vite
.next
.nuxt
dist
build
*.log
.DS_Store
.env.local
.venv
venv
__pycache__
*.pyc
.pytest_cache
.coverage
.git
.github
notebooks
tests
data
*.png
*.svg
.flake8
.pre-commit-config.yaml
CHANGELOG.md
model-card.md
305 changes: 305 additions & 0 deletions QUICKSTART.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,305 @@
# Farsi Transcriber - Quick Start Guide

You now have **TWO** complete applications for Farsi transcription:

## 🖥️ Option 1: Desktop App (PyQt6)

**Location:** `/home/user/whisper/farsi_transcriber/`

### Setup
```bash
cd farsi_transcriber
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py
```

**Features:**
- ✅ Standalone desktop application
- ✅ Works completely offline
- ✅ Direct access to file system
- ✅ Lightweight and fast
- ⚠️ Simpler UI (green theme)

**Good for:**
- Local-only transcription
- Users who prefer desktop apps
- Offline processing

---

## 🌐 Option 2: Web App (React + Flask)

**Location:** `/home/user/whisper/farsi_transcriber_web/`

### Setup

**Backend (Flask):**
```bash
cd farsi_transcriber_web/backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py
# API runs on http://localhost:5000
```

**Frontend (React):**
```bash
cd farsi_transcriber_web
npm install
npm run dev
# App runs on http://localhost:3000
```

**Features:**
- ✅ Modern web-based UI (matches your Figma design exactly)
- ✅ File queue management
- ✅ Dark/Light theme toggle
- ✅ Search with text highlighting
- ✅ Copy segments to clipboard
- ✅ Resizable window
- ✅ RTL support for Farsi
- ✅ Multiple export formats
- ✅ Professional styling

**Good for:**
- Modern web experience
- Team collaboration (can be deployed online)
- More features and polish
- Professional appearance

---

## 📊 Comparison

| Feature | Desktop (PyQt6) | Web (React) |
|---------|-----------------|------------|
| **Interface** | Simple, green | Modern, professional |
| **Dark Mode** | ❌ | ✅ |
| **File Queue** | ❌ | ✅ |
| **Search** | ❌ | ✅ |
| **Copy Segments** | ❌ | ✅ |
| **Resizable Window** | ❌ | ✅ |
| **Export Formats** | SRT, TXT, VTT, JSON, TSV | TXT, SRT, VTT, JSON |
| **Offline** | ✅ | Requires backend |
| **Easy Setup** | ✅✅ | ✅ (2 terminals) |
| **Deployment** | Desktop only | Can host online |
| **Code Size** | ~25KB | ~200KB |

---

## 🚀 Which Should You Use?

### Use **Desktop App** if:
- You want simple, quick setup
- You never share transcriptions
- You prefer offline processing
- You don't need advanced features

### Use **Web App** if:
- You like modern interfaces
- You want dark/light themes
- You need file queue management
- You want to potentially share online
- You want professional appearance

---

## 📁 Project Structure

```
whisper/
├── farsi_transcriber/ (Desktop PyQt6 App)
│ ├── ui/
│ ├── models/
│ ├── utils/
│ ├── config.py
│ ├── main.py
│ └── requirements.txt
└── farsi_transcriber_web/ (Web React App)
├── src/
│ ├── App.tsx
│ ├── components/
│ └── main.tsx
├── backend/
│ ├── app.py
│ └── requirements.txt
├── package.json
└── vite.config.ts
```

---

## 🔧 System Requirements

### Desktop App
- Python 3.8+
- ffmpeg
- 4GB RAM

### Web App
- Python 3.8+ (backend)
- Node.js 16+ (frontend)
- ffmpeg
- 4GB RAM

---

## 📝 Setup Checklist

### Initial Setup (One-time)

- [ ] Install ffmpeg
```bash
# Ubuntu/Debian
sudo apt install ffmpeg

# macOS
brew install ffmpeg

# Windows
choco install ffmpeg
```

- [ ] Verify Python 3.8+
```bash
python3 --version
```

- [ ] Verify Node.js 16+ (for web app only)
```bash
node --version
```

### Desktop App Setup

- [ ] Create virtual environment
- [ ] Install requirements
- [ ] Run app

### Web App Setup

**Backend:**
- [ ] Create virtual environment
- [ ] Install requirements
- [ ] Run Flask server

**Frontend:**
- [ ] Install Node dependencies
- [ ] Run dev server

---

## 🎯 Quick Start (Fastest)

### Desktop (30 seconds)
```bash
cd whisper/farsi_transcriber
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt && python main.py
```

### Web (2 minutes)
Terminal 1:
```bash
cd whisper/farsi_transcriber_web/backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt && python app.py
```

Terminal 2:
```bash
cd whisper/farsi_transcriber_web
npm install && npm run dev
```

---

## 🐛 Troubleshooting

### "ffmpeg not found"
Install ffmpeg (see requirements above)

### "ModuleNotFoundError" (Python)
```bash
# Ensure virtual environment is activated
source venv/bin/activate # Linux/Mac
# or
venv\Scripts\activate # Windows
```

### "npm: command not found"
Install Node.js from https://nodejs.org

### App runs slow
- Use GPU: Install CUDA
- Reduce model size: change to 'small' or 'tiny'
- Close other applications

---

## 📚 Full Documentation

- **Desktop App:** `farsi_transcriber/README.md`
- **Web App:** `farsi_transcriber_web/README.md`
- **API Docs:** `farsi_transcriber_web/README.md` (Endpoints section)

---

## 🎓 What Was Built

### Desktop Application (PyQt6)
✅ File picker for audio/video
✅ Whisper integration with word-level timestamps
✅ 5 export formats (TXT, SRT, VTT, JSON, TSV)
✅ Professional styling
✅ Progress indicators
✅ Threading to prevent UI freezing

### Web Application (React + Flask)
✅ Complete Figma design implementation
✅ File queue management
✅ Dark/light theme
✅ Search with highlighting
✅ Segment management
✅ Resizable window
✅ RTL support
✅ Flask backend with Whisper integration
✅ 4 export formats
✅ Real file upload handling

---

## 🚀 Next Steps

1. **Choose your app** (Desktop or Web)
2. **Install ffmpeg** if not already installed
3. **Follow the setup instructions** above
4. **Test with a Farsi audio file**
5. **Export in your preferred format**

---

## 💡 Tips

- **First transcription is slow** (downloads 769MB model)
- **Use larger models** (medium/large) for better accuracy
- **Use smaller models** (tiny/base) for speed
- **GPU significantly speeds up** transcription
- **Both apps work offline** (after initial model download)

---

## 📧 Need Help?

- Check the full README in each app's directory
- Verify all requirements are installed
- Check browser console (web app) or Python output (desktop)
- Ensure ffmpeg is in your PATH

---

**Enjoy your Farsi transcription apps!** 🎉
Loading