基于深度学习的实时语音同声传译系统:麦克风或本地音视频输入,Whisper 流式语音识别,Hy-MT2 本地 GPU 翻译,WebSocket 实时推送双语字幕。
输入与识别
翻译与展示
实时推送
ws/interpreter/<session_id>/记录与导出
D),无麦克风可跑通运维
/status:Whisper、翻译模型、Redis、WebSocket、熔断器scripts/selftest.sh浏览器
├─ WS ws/interpreter/<session>/ 音频 PCM 流 + 实时字幕推送
├─ HTTP POST /api/audio/chunk/ 音频分片(HTTP 回退)
├─ HTTP POST /api/correct/ 手动 / LLM 修正
├─ HTTP POST /api/upload-ppt/ PPT / 演讲上下文
└─ HTTP POST /api/video/ingest/ 视频上传 + BGM 分离
服务端流水线
PCM → Whisper medium → 口语压缩 → 句子断句 → Hy-MT2 翻译 → WebSocket 推送
↓
双语字幕实时显示
翻译引擎
主:Hy-MT2-1.8B(腾讯混元,本地 GPU,带上下文历史)
降级:Google Translate(deep-translator)
存储(可选 Redis)
REDIS_URL 配置后:Channel Layer + 会话 pickle(history / 视频缓冲 / 术语表)
未配置:InMemory Channel Layer + 进程内存会话
Python 3.10 · Django 4.2 · Django Channels · daphne · faster-whisper · Transformers (Hy-MT2-1.8B) · PyTorch · deep-translator · edge-tts · Spleeter · Redis(可选)· pydub / ffmpeg
git clone https://github.com/YANS311/ai-real-time-interpreter.git
cd ai-real-time-interpreter
python3.10 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\Activate.ps1
pip install -U pip -r requirements.txt
cp .env.example .env # 配置环境变量
daphne -b 127.0.0.1 -p 8000 core.asgi:application
浏览器打开 http://127.0.0.1:8000/。WebSocket 需 daphne(或安装 daphne 后 runserver)。
依赖:
HF_HUB_OFFLINE=1 使用缓存)验证:
python manage.py check
chmod +x scripts/selftest.sh
./scripts/selftest.sh http://127.0.0.1:8000
| 变量 | 说明 |
|---|---|
WHISPER_MODEL | Whisper 模型:tiny / base / small / medium,推荐 medium |
WHISPER_DEVICE | cpu 或 cuda(GPU 推理) |
WHISPER_COMPUTE_TYPE | int8 / float16,GPU 建议 float16 |
WHISPER_MODEL_PATH | 本地模型路径(可选,跳过下载) |
WHISPER_WARMUP | 启动预加载 Whisper,默认 True |
AUDIO_CHUNK_DURATION_SEC | 默认分片时长(秒),默认 0.5 |
SPEECH_COMPRESSOR_ENABLED | 口语压缩开关,默认 True |
HF_HUB_OFFLINE | HuggingFace 离线模式,设为 1 使用缓存模型 |
TRANSFORMERS_OFFLINE | Transformers 离线模式,设为 1 |
PPT_CONTEXT_MAX_CHARS | PPT 上下文最大字符 |
GLOSSARY | 默认术语表,如 GPT=生成式预训练模型 |
REDIS_URL | Redis 地址(Compose 自动注入;未配则内存模式) |
SESSION_TTL | 会话过期秒数,默认 3600 |
DATA_UPLOAD_MAX_MB | 视频/文件上传上限,默认 200 |
GPU 推理配置示例:
WHISPER_DEVICE=cuda
WHISPER_COMPUTE_TYPE=float16
WHISPER_MODEL=medium
HF_HUB_OFFLINE=1
TRANSFORMERS_OFFLINE=1
cp .env.example .env # 配置环境变量
docker compose up --build
Compose 启动 Redis 7 + interpreter(daphne),自动注入 REDIS_URL。访问 http://127.0.0.1:8000/,/status/ 查看模型和 WebSocket 状态。
注意:Docker 部署需确保 GPU 可用(nvidia-container-toolkit),否则翻译模型将降级到 Google Translate。
D| 模式 | 分片时长 | 适用场景 |
|---|---|---|
| 低延迟 | 200ms | 直播、麦克风实时同传 |
| 均衡 | 1000ms | 麦克风日常使用 |
| 高准确率 | 3000ms | 视频/音频文件翻译 |
通过网盘分享的文件:中传队_AI同声传译_demo演示.mp4 链接: https://pan.baidu.com/s/1cqyRzXotLuR6eo0OUkaW-g?pwd=qg2x 提取码: qg2x
/status/ 查看模型状态快捷键:D 样例 · 视频 空格 暂停
ai-real-time-interpreter/
├── core/ # Django / ASGI / Channels 配置
├── interpreter/
│ ├── consumers.py # WebSocket 消费者
│ ├── routing.py # WS 路由
│ ├── views.py # HTTP API
│ ├── templates/ # 主页 + /status
│ └── utils/
│ ├── asr.py # faster-whisper ASR
│ ├── translate.py # Hy-MT2 + Google 翻译
│ ├── pipeline.py # ASR → 压缩 → 断句 → 翻译
│ ├── segmentation.py # 句子边界检测
│ ├── speech_compressor.py
│ ├── correction.py / glossary.py / ppt_context.py
│ ├── stream.py # 会话管理 + 音频处理
│ └── ws_events.py
├── docs/screenshots/
├── scripts/selftest.sh
├── Dockerfile
└── docker-compose.yml # redis + interpreter
| 路径 | 方法 | 说明 |
|---|---|---|
/api/health/ | GET | 健康检查 |
/api/status/ | GET | 运行状态(含 Redis) |
/api/audio/chunk/ | POST | 音频分片(ASR + 翻译) |
/api/video/ingest/ | POST | 视频预处理 + BGM 分离 |
/api/upload-ppt/ | POST | PPT / 演讲上下文 |
/api/upload-terms/ | POST | 术语表 JSON |
/api/correct/ | POST | 手动 / LLM 修正 |
/api/demo/script/ | GET | 样例字幕 |
/api/session/control/ | POST | 暂停 / 继续 / seek |
/api/export/subtitles/ | GET/POST | SRT / VTT / TXT |
/api/export/bundle/ | GET/POST | ZIP 导出 |
/api/history/ | GET | 历史列表 |
/api/tts/ | POST | Edge-TTS |
/ws/interpreter/<session_id>/ | WS | 字幕推送;{"action":"correct"} |
完整路由见 interpreter/urls.py。
[待翻译] — Hy-MT2 模型未加载成功,检查 GPU 和 transformers 版本。WHISPER_WARMUP=True;GPU 推理需 CUDA + float16。no_speech_threshold。daphne core.asgi:application 启动。REDIS_URL;Docker 用 docker compose up。DATA_UPLOAD_MAX_MB(默认 200MB)。HF_HUB_OFFLINE=1 使用本地缓存模型。Conventional Commits,详见 CONTRIBUTING.md。
./scripts/create-pr.sh # 需 gh CLI
MIT
基于深度学习的实时语音同声传译系统:麦克风或本地音视频输入,Whisper 流式语音识别,Hy-MT2 本地 GPU 翻译,WebSocket 实时推送双语字幕。
输入与识别
翻译与展示
实时推送
ws/interpreter/<session_id>/记录与导出
D),无麦克风可跑通运维
/status:Whisper、翻译模型、Redis、WebSocket、熔断器scripts/selftest.sh浏览器
├─ WS ws/interpreter/<session>/ 音频 PCM 流 + 实时字幕推送
├─ HTTP POST /api/audio/chunk/ 音频分片(HTTP 回退)
├─ HTTP POST /api/correct/ 手动 / LLM 修正
├─ HTTP POST /api/upload-ppt/ PPT / 演讲上下文
└─ HTTP POST /api/video/ingest/ 视频上传 + BGM 分离
服务端流水线
PCM → Whisper medium → 口语压缩 → 句子断句 → Hy-MT2 翻译 → WebSocket 推送
↓
双语字幕实时显示
翻译引擎
主:Hy-MT2-1.8B(腾讯混元,本地 GPU,带上下文历史)
降级:Google Translate(deep-translator)
存储(可选 Redis)
REDIS_URL 配置后:Channel Layer + 会话 pickle(history / 视频缓冲 / 术语表)
未配置:InMemory Channel Layer + 进程内存会话
Python 3.10 · Django 4.2 · Django Channels · daphne · faster-whisper · Transformers (Hy-MT2-1.8B) · PyTorch · deep-translator · edge-tts · Spleeter · Redis(可选)· pydub / ffmpeg
git clone https://github.com/YANS311/ai-real-time-interpreter.git
cd ai-real-time-interpreter
python3.10 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\Activate.ps1
pip install -U pip -r requirements.txt
cp .env.example .env # 配置环境变量
daphne -b 127.0.0.1 -p 8000 core.asgi:application
浏览器打开 http://127.0.0.1:8000/。WebSocket 需 daphne(或安装 daphne 后 runserver)。
依赖:
HF_HUB_OFFLINE=1 使用缓存)验证:
python manage.py check
chmod +x scripts/selftest.sh
./scripts/selftest.sh http://127.0.0.1:8000
| 变量 | 说明 |
|---|---|
WHISPER_MODEL | Whisper 模型:tiny / base / small / medium,推荐 medium |
WHISPER_DEVICE | cpu 或 cuda(GPU 推理) |
WHISPER_COMPUTE_TYPE | int8 / float16,GPU 建议 float16 |
WHISPER_MODEL_PATH | 本地模型路径(可选,跳过下载) |
WHISPER_WARMUP | 启动预加载 Whisper,默认 True |
AUDIO_CHUNK_DURATION_SEC | 默认分片时长(秒),默认 0.5 |
SPEECH_COMPRESSOR_ENABLED | 口语压缩开关,默认 True |
HF_HUB_OFFLINE | HuggingFace 离线模式,设为 1 使用缓存模型 |
TRANSFORMERS_OFFLINE | Transformers 离线模式,设为 1 |
PPT_CONTEXT_MAX_CHARS | PPT 上下文最大字符 |
GLOSSARY | 默认术语表,如 GPT=生成式预训练模型 |
REDIS_URL | Redis 地址(Compose 自动注入;未配则内存模式) |
SESSION_TTL | 会话过期秒数,默认 3600 |
DATA_UPLOAD_MAX_MB | 视频/文件上传上限,默认 200 |
GPU 推理配置示例:
WHISPER_DEVICE=cuda
WHISPER_COMPUTE_TYPE=float16
WHISPER_MODEL=medium
HF_HUB_OFFLINE=1
TRANSFORMERS_OFFLINE=1
cp .env.example .env # 配置环境变量
docker compose up --build
Compose 启动 Redis 7 + interpreter(daphne),自动注入 REDIS_URL。访问 http://127.0.0.1:8000/,/status/ 查看模型和 WebSocket 状态。
注意:Docker 部署需确保 GPU 可用(nvidia-container-toolkit),否则翻译模型将降级到 Google Translate。
D| 模式 | 分片时长 | 适用场景 |
|---|---|---|
| 低延迟 | 200ms | 直播、麦克风实时同传 |
| 均衡 | 1000ms | 麦克风日常使用 |
| 高准确率 | 3000ms | 视频/音频文件翻译 |
通过网盘分享的文件:中传队_AI同声传译_demo演示.mp4 链接: https://pan.baidu.com/s/1cqyRzXotLuR6eo0OUkaW-g?pwd=qg2x 提取码: qg2x
/status/ 查看模型状态快捷键:D 样例 · 视频 空格 暂停
ai-real-time-interpreter/
├── core/ # Django / ASGI / Channels 配置
├── interpreter/
│ ├── consumers.py # WebSocket 消费者
│ ├── routing.py # WS 路由
│ ├── views.py # HTTP API
│ ├── templates/ # 主页 + /status
│ └── utils/
│ ├── asr.py # faster-whisper ASR
│ ├── translate.py # Hy-MT2 + Google 翻译
│ ├── pipeline.py # ASR → 压缩 → 断句 → 翻译
│ ├── segmentation.py # 句子边界检测
│ ├── speech_compressor.py
│ ├── correction.py / glossary.py / ppt_context.py
│ ├── stream.py # 会话管理 + 音频处理
│ └── ws_events.py
├── docs/screenshots/
├── scripts/selftest.sh
├── Dockerfile
└── docker-compose.yml # redis + interpreter
| 路径 | 方法 | 说明 |
|---|---|---|
/api/health/ | GET | 健康检查 |
/api/status/ | GET | 运行状态(含 Redis) |
/api/audio/chunk/ | POST | 音频分片(ASR + 翻译) |
/api/video/ingest/ | POST | 视频预处理 + BGM 分离 |
/api/upload-ppt/ | POST | PPT / 演讲上下文 |
/api/upload-terms/ | POST | 术语表 JSON |
/api/correct/ | POST | 手动 / LLM 修正 |
/api/demo/script/ | GET | 样例字幕 |
/api/session/control/ | POST | 暂停 / 继续 / seek |
/api/export/subtitles/ | GET/POST | SRT / VTT / TXT |
/api/export/bundle/ | GET/POST | ZIP 导出 |
/api/history/ | GET | 历史列表 |
/api/tts/ | POST | Edge-TTS |
/ws/interpreter/<session_id>/ | WS | 字幕推送;{"action":"correct"} |
完整路由见 interpreter/urls.py。
[待翻译] — Hy-MT2 模型未加载成功,检查 GPU 和 transformers 版本。WHISPER_WARMUP=True;GPU 推理需 CUDA + float16。no_speech_threshold。daphne core.asgi:application 启动。REDIS_URL;Docker 用 docker compose up。DATA_UPLOAD_MAX_MB(默认 200MB)。HF_HUB_OFFLINE=1 使用本地缓存模型。Conventional Commits,详见 CONTRIBUTING.md。
./scripts/create-pr.sh # 需 gh CLI
MIT