OpenTransLive 是一套為活動舉辦方(event organizers)打造的廣播式(one-to-many)即時翻譯框架,而非一般的會議協作工具。完整開源(GNU AGPL v3.0),具備網頁介面與 YouTube 同步支援,可自行部署、自由修改。
設計上假設活動現場有「一位講者/一組字幕團隊」作為轉錄來源,台下或線上的「無上限觀眾」則以自己偏好的語言收聽:在大螢幕、手機網頁或 YouTube 直播字幕上同步看到即時翻譯結果。
典型使用情境:研討會、黑客松、公聽會、社群 meetup、線上直播演講等需要把單一語音來源即時翻譯給跨語言聽眾的場合。觀眾端不需要註冊、不需要登入,也沒有人數上限——只有負責產出字幕的講者/字幕員需要連線送出音訊。
語言:繁體中文(English)
- 即時語音轉錄:支援多種轉錄引擎 (WhisperX、OpenAI、Groq、ElevenLabs Scribe、Google Speech-to-Text)
- 多語言翻譯:使用 LLM 自動翻譯成多種語言,支援上下文感知翻譯
- 使用者帳號系統:Email OTP 登入、管理員後台、即時轉錄權限管理、session co-owner
- Session 控制台:
/panel/{session_id}提供語言、Scribe 語言、語氣、關鍵字與文字字典設定 - 歷史字幕編輯:
/edit/{session_id}可修改 / 刪除已儲存片段並更新所有翻譯 - 觀眾廣播:觀眾頁 (
/rt、/yt) 透過 SSE 接收字幕,免登入、無人數上限 - YouTube 整合:
/yt/{session_id}可與 YouTube 直播或影片時間軸同步 - 匯出:JSON 全紀錄與單一語言 SRT 匯出
- 資料庫:MongoDB 持久化,Redis 提供快取與多伺服器擴展
opentranslive/
├── live_server/ # FastAPI + Socket.IO 網頁伺服器
│ ├── app/ # 主應用程式
│ │ ├── __init__.py # FastAPI app、路由、Socket.IO handler
│ │ ├── config.py # 設定檔(從 config.example.py 複製)
│ │ ├── database.py # MongoDB 整合
│ │ ├── email_auth.py # Email OTP 登入
│ │ ├── scribe_manager.py # ElevenLabs Scribe session 管理
│ │ ├── translation_service.py # 翻譯流程與佇列
│ │ ├── translators/ # 各 AI provider 實作
│ │ ├── socket_schema.py # Socket.IO 事件 schema
│ │ ├── static/ # 靜態檔案
│ │ └── templates/ # Jinja2 模板
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── README.md # 伺服器設定細節
├── transcribe_client/ # 批次轉錄客戶端 (WhisperX / OpenAI / Groq)
├── realtime_client/ # 即時串流客戶端 (ElevenLabs / Google STT)
├── docs/USAGE.md # 完整使用手冊(角色、流程、API、FAQ)
├── milestone.md # 階段成果紀錄
└── README.md # 本檔案
- Python 3.11+
- MongoDB
- Redis
- 至少一組 AI provider API key(OpenAI、Gemini、Groq 或 Cerebras 任一)
- 使用即時麥克風轉錄時需要 ElevenLabs API key
cd live_server
# 使用 Docker Compose (推薦)
cp app/config.example.py app/config.py
# 編輯 app/config.py,填入 SECRET_KEY、API key、SMTP 等設定
docker-compose up -d或手動啟動:
cd live_server
uv sync
cp app/config.example.py app/config.py
uv run uvicorn app:socket_app --host 0.0.0.0 --port 5000伺服器啟動後:
- 首頁 / 登入:
http://localhost:5000/ - 觀眾即時字幕:
http://localhost:5000/rt/{session_id} - YouTube 字幕:
http://localhost:5000/yt/{session_id}
伺服器設定細節請看 live_server/README.md。 完整使用流程(建立 session、開啟 panel、編輯字幕、匯出)請看 docs/USAGE.md。
live_server 的 panel 本身就能透過瀏覽器麥克風走 ElevenLabs Scribe 做即時轉錄,無需安裝任何客戶端。下列 client 用於需要本地推論或特定 STT provider 的場景。
批次客戶端(transcribe_client/README.md):
cd transcribe_client
uv sync
uv run python run.py -t your_session_id即時客戶端(realtime_client/README.md):
cd realtime_client
uv sync
uv run python run.py -t your_session_id麥克風 → Panel (瀏覽器) → ElevenLabs Scribe → 修正/翻譯 → 伺服器 → SSE → 觀眾頁
↓
MongoDB
(持久化)
- Panel:Socket.IO 雙向控制與音訊上傳
- 觀眾頁:SSE 一對多廣播
- Redis:跨伺服器訊息廣播與快取
- MongoDB:committed segments 持久化
- 上下文感知:以最近字幕作為翻譯 context
- 關鍵字學習:自動抽取領域術語,可手動釘選
- 文字字典:使用者自訂直接替換
- 非同步處理:不阻塞主轉錄流程
- 多語言並行:同時翻譯成多種目標語言
- CPU: 2 核心起 (建議 4)
- RAM: 4GB 起 (建議 8GB)
- 儲存: 20GB 起
- 穩定網際網路
- CPU: 4 核心起
- RAM: 8GB 起 (large 模型需 16GB)
- 可選 NVIDIA GPU 加速
- CPU: 2 核心起
- RAM: 2GB 起
- 低延遲網路
cd live_server
docker-compose up -d- MongoDB Atlas 或自架叢集
- Redis Cloud 或自架叢集
- 反向代理:Nginx 或 Caddy
- SSL/TLS:Let's Encrypt
- 多伺服器水平擴展依賴 Redis pub/sub
GNU AGPL v3.0。詳見 LICENSE。
歡迎 issue 與 pull request。主要貢獻者:SeanGau。
- Fork 本專案
- 建立功能分支 (
git checkout -b feature/amazing-feature) - 提交變更 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 開啟 Pull Request
- 使用手冊 docs/USAGE.md — 角色、流程、URL、API、資料儲存、FAQ
- 階段成果 milestone.md
- Live Server 設定 live_server/README.md
- 問題回報
感謝所有為本專案做出貢獻的開發者和 g0v 社群成員。

