Transcription → correction → review → matching → burning
Workflow
1. 转录视频(Whisper)
↓
2. 词典纠错 + 分句
↓
3. 输出字幕稿(纯文本,一句一行)
↓
【用户审核修改】
↓
4. 用户给回修改后的文本
↓
5. 我匹配时间戳 → 生成 SRT
↓
6. 烧录字幕(FFmpeg)
Transcription
Use the OpenAI Whisper model for speech-to-text:
whisper video.mp4 --model medium --language zh --output_format json
| Model | Purpose |
|---|---|
medium |
Default, balances speed and accuracy |
large-v3 |
High accuracy, slower |
The output JSON includes word-by-word timestamps, used for subsequent SRT generation.
Subtitle Specifications
| Rule | Description |
|---|---|
| One line per screen | No line breaks, no stacking |
| ≤15 characters/line | Must be split if over 15 characters (4:3 vertical screen) |
| No punctuation at end of sentence | 你好 Not 你好。 |
| Keep punctuation within sentences | 先点这里,再点那里 |
Dictionary Correction
Read 词典.txt, one correct spelling per line:
skills
Claude
iPhone
I automatically recognize variants:claude → Claude
Subtitle Draft Format
What I give the user(plain text, ≤15 characters/line):
今天给大家分享一个技巧
很多人可能不知道
其实这个功能
藏在设置里面
你只要点击这里
就能看到了
After the user modifies it and gives it back to me, I then match timestamps to generate the SRT.
Style
Default: size 24 white text, black outline, bottom center
Optional styles:
| Style | Description |
|---|---|
| Default | White text with black outline |
| Yellow text | Yellow text with black outline (eye-catching) |
The user can say:
- "Make the text bigger" → size 32
- "Put it at the top" → top center
- "Yellow subtitles" → yellow text with black outline
Output
01-xxx_字幕稿.txt # 纯文本,用户编辑
01-xxx.srt # 字幕文件
01-xxx-字幕.mp4 # 带字幕视频