一个 Windows 平台的实时语音转文字和翻译工具,能够捕获系统音频,识别非中文语音并显示双语对照字幕。
使用 CTranslate2 加速引擎,在 RTX 5060 Ti 16GB 上实现:
| 组件 | 模型 | 延迟 |
|---|---|---|
| 语音识别 | Whisper large-v3 | ~500-700ms |
| 翻译 | NLLB-200-3.3B | ~150-250ms |
| 总延迟 | ~700-950ms |
这是真正的实时体验!
- 🎧 系统音频捕获: 使用 Loopback 技术捕获系统输出的音频
- 🗣️ 语音识别: 使用 faster-whisper (CTranslate2) + Whisper large-v3,最高精度
- 🌐 高质量翻译: 使用 NLLB-200-3.3B + CTranslate2,200+ 语言支持
- ⚡ 极速推理: CTranslate2 优化引擎,比 PyTorch 快 5-10 倍
- 📺 悬浮字幕窗口: 透明、置顶的字幕显示窗口
- 🔄 双语对照: 同时显示原文和中文翻译
- 📌 系统托盘: 所有功能通过托盘图标控制
- ⚙️ 配置文件: 通过
settings.json轻松配置 - 🚀 启动时预加载: 模型在程序启动时自动加载,就绪后即可使用
┌─────────────────────────────────────────────────────────────────┐
│ RealtimeSubtitle │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Audio │ │ Whisper │ │ NLLB-200 │ │
│ │ Capture │───▶│ large-v3 │───▶│ 3.3B │ │
│ │ (Loopback) │ │ (CTranslate2)│ │ (CTranslate2) │ │
│ └─────────────┘ └──────────────┘ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Subtitle Window │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ Hello, how are you today? │ │ │
│ │ │ 你好,今天怎么样? │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
| 组件 | 技术 | 说明 |
|---|---|---|
| 推理引擎 | CTranslate2 | 高性能 Transformer 推理库 |
| 语音识别 | faster-whisper | Whisper 的 CTranslate2 实现 |
| 翻译模型 | NLLB-200-3.3B | Meta 的 200 语言翻译模型 |
| 音频捕获 | soundcard | 系统音频 Loopback 捕获 |
| GUI | Tkinter + pystray | 字幕窗口 + 系统托盘 |
pip install -r requirements.txt需要 NVIDIA GPU 和 CUDA:
# 标准 CUDA 版本
pip install torch --index-url https://download.pytorch.org/whl/cu121
# RTX 50 系列 (Blackwell) 需要 nightly 版本
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu128首次运行时会自动:
- 下载 Whisper large-v3 模型 (~3GB)
- 下载并转换 NLLB-200-3.3B 模型为 CTranslate2 格式 (~6.5GB)
- 模型下载需要稳定的网络连接
- 下载完成后,模型会被转换为 CTranslate2 格式(仅需一次)
- 整个过程可能需要 10-30 分钟,取决于网络速度
python main.py- 程序启动 - 字幕窗口显示"正在加载模型..."
- 模型加载 - 等待约 30 秒(Whisper ~12秒 + NLLB ~18秒)
- 就绪 - 字幕窗口显示"模型加载完成!",托盘菜单解锁
- 开始识别 - 点击托盘图标选择"开始识别"
- 实时字幕 - 播放音视频,字幕自动显示
| 菜单项 | 功能 |
|---|---|
| ⏳ 加载模型中... | 模型正在加载(禁用状态) |
| ▶ 开始识别 / ⏹ 停止识别 | 控制识别状态 |
| 📺 显示/隐藏字幕 | 切换字幕窗口 |
| 🔄 双语/仅译文 | 切换显示模式 |
| ❌ 退出 | 关闭程序 |
{
"whisper": {
"model": "large-v3",
"device": "cuda",
"compute_type": "float16"
},
"translation": {
"model": "facebook/nllb-200-3.3B",
"device": "cuda",
"max_length": 200
},
"subtitle": {
"font": "Microsoft YaHei",
"font_size": 16,
"opacity": 0.8
}
}| 组件 | 显存占用 |
|---|---|
| Whisper large-v3 (CTranslate2 float16) | ~3GB |
| NLLB-200-3.3B (CTranslate2 float16) | ~4GB |
| 总计 | ~7GB |
推荐 8GB+ 显存的 NVIDIA GPU。
模型文件存储在程序目录下的 models/ 文件夹中:
models/
├── facebook_nllb_200_3.3B_ct2/ # CTranslate2 翻译模型 (~6.7GB)
│ ├── config.json
│ ├── model.bin
│ └── shared_vocabulary.json
└── facebook_nllb_200_3.3B_tokenizer/ # Tokenizer (~25MB)
├── sentencepiece.bpe.model
├── special_tokens_map.json
├── tokenizer.json
└── tokenizer_config.json
Whisper 模型存储在 HuggingFace 缓存目录:
- Windows:
%USERPROFILE%\.cache\huggingface\hub\models--Systran--faster-whisper-large-v3\
- soundcard >= 0.4.2
- numpy >= 1.24.0
- faster-whisper >= 0.10.0
- ctranslate2 >= 4.0.0
- transformers >= 4.35.0
- sentencepiece >= 0.1.99
- pystray >= 0.19.0
- Pillow >= 10.0.0
- 首次运行需要下载模型,确保网络连接
- 需要 NVIDIA GPU 和 CUDA 支持
- RTX 50 系列需要 PyTorch nightly 版本
- 模型转换只需执行一次,之后会使用缓存
MIT License
