音视频 → ASR → AI 语义审校 → 人工校对 → SRT 导出
🌏 Language / 语言:🇨🇳 中文 | 🇬🇧 English
An all-in-one subtitle workbench: upload audio/video, automatically transcribe with Alibaba Cloud fun-asr, review with DeepSeek AI, manually proofread in a three-column comparison UI, and export standard SRT. ASR + AI Review + Manual Polish — one closed loop.
You need to add subtitles to your video, and none of the existing tools feel right.
- ASR tools (clipchamp, 剪映) output raw text — homophone errors like "账户" vs "帐护" require tedious manual line-by-line cleanup
- Manual proofreading in a text editor gives you no audio sync — you keep guessing what was actually said
- AI proofreading tools exist as standalone apps — they don't integrate with your ASR workflow, so you have to juggle files between tools
AI Subtitle Proofreading Tool puts ASR + AI review + manual proofreading into one closed-loop workbench. Upload once, review with audio sync, export SRT.
flowchart TB
subgraph Client["🖥️ Frontend (Vanilla JS)"]
UI[index.html / style.css]
APP[app.js · editor.js · player.js]
end
subgraph Server["⚙️ Backend (FastAPI)"]
SRV[server.py<br/>File Upload · Task Mgmt · Static Serving]
GEN[subtitle_generator.py<br/>ASR Engine · fun-asr API · SRT Builder]
REV[subtitle_reviewer.py<br/>DeepSeek Integration · Issue Marking]
EXT[audio_extractor.py<br/>ffmpeg Wrapper · Format Detection]
UT[utils.py<br/>Task ID · Temp Dir · Cleanup]
end
subgraph External["🌐 External APIs"]
FUN[Alibaba Cloud fun-asr<br/>Speech Recognition]
DEEP[DeepSeek API<br/>Semantic Review]
FF[ffmpeg<br/>Audio Extraction]
end
UI <--> SRV
APP <--> SRV
SRV --> EXT --> FF
SRV --> GEN --> FUN
SRV --> REV --> DEEP
SRV --> UT
style UI fill:#6366f1,color:#fff,stroke:none
style APP fill:#6366f1,color:#fff,stroke:none
style SRV fill:#0ea5e9,color:#fff,stroke:none
style GEN fill:#0ea5e9,color:#fff,stroke:none
style REV fill:#0ea5e9,color:#fff,stroke:none
style EXT fill:#0ea5e9,color:#fff,stroke:none
style UT fill:#0ea5e9,color:#fff,stroke:none
style FUN fill:#f59e0b,color:#fff,stroke:none
style DEEP fill:#f59e0b,color:#fff,stroke:none
style FF fill:#10b981,color:#fff,stroke:none
| # | Feature | Description |
|---|---|---|
| 1 | End-to-End Workflow | Upload → ASR → AI Review → Proofread → Export, all in one page |
| 2 | AI Semantic Review | DeepSeek automatically detects homophone errors, STT misrecognitions, unclear phrasing |
| 3 | Audio-Video Sync | Player + subtitle highlighting — click a subtitle to jump to that moment |
| 4 | Three-Column UI | Original / Navigation / AI-optimized result side by side |
| 5 | Standard SRT Export | One-click export, ready for any video editor |
| Requirement | Minimum | Recommended |
|---|---|---|
| Python | 3.10 | 3.11+ |
| RAM | 1 GB | 4 GB+ |
| ffmpeg | Installed | Latest stable |
| API Keys | fun-asr + DeepSeek | — |
| OS | Windows / macOS / Linux | — |
# 1. Clone
git clone https://github.com/donglinfei-debug/ai-subtitle-review.git
cd ai-subtitle-review
# 2. Install dependencies
pip install -r requirements.txt
# 3. Configure API keys
cp .env.example .env
# Edit .env with your ALIBABA_API_KEY and DEEPSEEK_API_KEY
# 4. Start
python backend/server.py
# Open http://localhost:8015ai-subtitle-review/
├── backend/
│ ├── server.py # FastAPI entry, file upload, static serving
│ ├── subtitle_generator.py # fun-asr engine, SRT generation
│ ├── subtitle_reviewer.py # DeepSeek AI semantic review
│ ├── audio_extractor.py # ffmpeg-based audio extraction
│ └── utils.py # Task ID, temp dir, cleanup
├── frontend/
│ ├── index.html
│ └── css/js/ # App logic, editor, player
├── .env.example # API key template
├── requirements.txt
└── README.md / README.zh.md
| Layer | Technology |
|---|---|
| Backend | Python FastAPI |
| Speech Recognition | Alibaba Cloud fun-asr (DashScope) |
| AI Review | DeepSeek API |
| Audio Processing | ffmpeg |
| Frontend | Vanilla JavaScript (zero deps) |
| Variable | Description |
|---|---|
ALIBABA_API_KEY |
Alibaba Cloud DashScope key (for fun-asr) |
DEEPSEEK_API_KEY |
DeepSeek API key (for semantic review) |
What audio/video formats are supported? MP4, AVI, MKV, MOV, FLV, MP3, WAV, M4A and most common formats. The tool uses ffmpeg for audio extraction, so anything ffmpeg can read is supported.
Do I need both fun-asr and DeepSeek API keys? Yes. fun-asr (Alibaba Cloud) handles speech recognition; DeepSeek handles the semantic review pass. Both are required for the full ASR + AI review workflow.
Can I use this offline? Not currently. Both fun-asr and DeepSeek are cloud APIs. An offline Whisper-based engine is on the roadmap.
How accurate is the AI review? DeepSeek catches most homophone errors (e.g., "账户" vs "帐护") and broken sentences. It marks issues in red for manual confirmation — you stay in control.
MIT License © 2026 Ryan Dong
Ryan Dong — AI Product Manager & Full-Stack Developer
I bridge the gap between AI capabilities and production-ready software. My work spans the full stack: from designing AI-powered product features and integrating LLM APIs, to building modular backend services and shipping clean, documented code.
| Role | Focus |
|---|---|
| 🧠 AI Product Manager | Product strategy, AI feature design, prompt engineering, model selection |
| 💻 Full-Stack Developer | Python, FastAPI, Google Apps Script, automation pipelines, API integration |
This repository is part of a personal toolbox — a growing collection of practical, reusable modules that solve real automation problems. Each project is designed to be independently useful and easily integrated into larger systems.
📬 donglinfei@gmail.com — open to business discussions, collaborations, and recruiting inquiries.
Ryan Dong — donglinfei@gmail.com