跨平台实时字幕桌面应用。捕获电脑音频,通过阿里云百炼实时语音识别服务转写为文字,支持实时翻译,结果显示在悬浮字幕窗口中。
- 实时语音转文字(基于阿里云 Qwen3 ASR)
- 实时翻译(英↔中等多语言)
- 悬浮透明字幕窗口,始终置顶
- 全局快捷键启停(默认
Ctrl+Shift+K/Cmd+Shift+K) - 可调字号、窗口透明度
- 支持选择音频输入设备
- 桌面框架: Tauri 2
- 后端: Rust (tokio 异步运行时)
- 前端: React 18 + TypeScript + Vite
- 音频采集: cpal + rubato (重采样至 16kHz)
- 语音识别: 阿里云百炼 WebSocket 实时 API
- macOS 系统音频: ScreenCaptureKit
捕获系统播放音频需要 macOS 13+ 的 ScreenCaptureKit 权限,首次使用时系统会弹出授权提示。如需捕获麦克风输入则选择对应输入设备即可。
可直接使用 WASAPI loopback 捕获系统音频,或选择麦克风等输入设备。
# 安装依赖
pnpm install
# 启动开发模式(前端热更新 + Rust 编译)
pnpm tauri dev首次启动后点击右上角设置图标,填入阿里云 API Key,根据需要开启翻译功能,然后点击播放按钮或按下全局快捷键即可开始转写。
# 前端类型检查
npx tsc --noEmit
# Rust 检查
cd src-tauri && cargo check
# 生产打包
pnpm tauri buildsrc/ # 前端 (React + TypeScript)
├── app/ # 页面组件 (CaptionWindow, SettingsWindow)
├── components/ # UI 组件 (CaptionBar, SettingsForm, IconButton)
├── lib/ # 类型定义与 Tauri 接口封装
└── styles/ # CSS
src-tauri/ # 后端 (Rust)
├── src/
│ ├── aliyun/ # 阿里云 WebSocket 协议与客户端
│ ├── audio/ # 音频采集与重采样
│ ├── caption/ # 字幕状态管理
│ ├── config/ # 配置持久化
│ ├── commands.rs # Tauri commands
│ └── lib.rs # 应用入口与插件注册
└── tauri.conf.json # Tauri 窗口与构建配置
| 配置 | 说明 | 默认值 |
|---|---|---|
| API Key | 阿里云百炼 API Key | — |
| 翻译开关 | 是否启用实时翻译 | 关闭 |
| 源语言 | 识别语言 | 英文 (en) |
| 目标语言 | 翻译目标语言 | 中文 (cn) |
| 字号 | 字幕字体大小 | 20px |
| 透明度 | 窗口透明度 | 0.85 |
| 快捷键 | 全局启停快捷键 | CommandOrControl+Shift+K |
MIT