Skip to content

yanmofeixi/RealtimeSubtitle

Repository files navigation

RealtimeSubtitle - 实时双语字幕系统

一个 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 字幕窗口 + 系统托盘

安装

1. 安装依赖

pip install -r requirements.txt

2. GPU 支持

需要 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

3. 首次运行

首次运行时会自动:

  1. 下载 Whisper large-v3 模型 (~3GB)
  2. 下载并转换 NLLB-200-3.3B 模型为 CTranslate2 格式 (~6.5GB)

⚠️ 首次运行注意事项

  • 模型下载需要稳定的网络连接
  • 下载完成后,模型会被转换为 CTranslate2 格式(仅需一次)
  • 整个过程可能需要 10-30 分钟,取决于网络速度

使用方法

python main.py

启动流程

  1. 程序启动 - 字幕窗口显示"正在加载模型..."
  2. 模型加载 - 等待约 30 秒(Whisper ~12秒 + NLLB ~18秒)
  3. 就绪 - 字幕窗口显示"模型加载完成!",托盘菜单解锁
  4. 开始识别 - 点击托盘图标选择"开始识别"
  5. 实时字幕 - 播放音视频,字幕自动显示

托盘菜单

菜单项 功能
⏳ 加载模型中... 模型正在加载(禁用状态)
▶ 开始识别 / ⏹ 停止识别 控制识别状态
📺 显示/隐藏字幕 切换字幕窗口
🔄 双语/仅译文 切换显示模式
❌ 退出 关闭程序

配置

settings.json

{
  "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

注意事项

  1. 首次运行需要下载模型,确保网络连接
  2. 需要 NVIDIA GPU 和 CUDA 支持
  3. RTX 50 系列需要 PyTorch nightly 版本
  4. 模型转换只需执行一次,之后会使用缓存

许可证

MIT License

About

Real-time bilingual subtitle system for Windows 实时双语字幕系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors