flowchart TD
Video["导入视频"] --> Album["相册"]
Video --> Files["文件 / 微信保存的文件"]
Album --> CaptionSource["生成逐句文稿"]
Files --> CaptionSource
CaptionSource --> Subtitle["导入 SRT / VTT 字幕"]
CaptionSource --> Whisper["内置 Whisper 本地识别"]
CaptionSource --> BailianASR["百炼实时识别(备用)"]
Subtitle --> Transcript["时间轴同步逐句文稿"]
Whisper --> Transcript
BailianASR --> Transcript
Transcript --> Playback["精听与影子跟读"]
Playback --> SingleLoop["单句循环"]
Playback --> MultiLoop["多句区间循环"]
Playback --> Controls["倍速 / 跳转 / 句间停顿"]
Transcript --> Translation["字幕翻译"]
Translation --> AppleTranslate["iOS 18 设备端翻译"]
Translation --> BailianMT["iOS 17 百炼翻译(备用)"]
Transcript --> Dictionary["点击英文单词查词"]
Dictionary --> ECDICT["77 万词条离线词典"]
Dictionary --> SystemDictionary["iOS 系统词典"]
Dictionary --> Wordbook["生词本"]
Transcript --> LocalData["本地保存"]
Wordbook --> LocalData
LocalData --> Progress["字幕 / 播放进度 / 生词"]
- 从相册或“文件”导入本地视频,并复制到 App 沙盒
- 导入 SRT/VTT 字幕,按时间轴同步高亮
- 单句循环、多句区间循环、精确跳转和 0.5–1.5 倍速
- 点击英文单词查询内置 ECDICT 离线英汉词典(约 77 万词条),无需联网
- 生词保存、播放进度和字幕使用 SwiftData 持久化
- 从无字幕视频提取 16kHz 单声道 PCM,通过 Fun-ASR WebSocket 获取句级时间戳
- 使用本地 WhisperKit 识别英文,按停顿、标点和句长生成适合跟读的短句
- iOS 18 及以上使用苹果设备端模型批量翻译字幕,旧系统使用 Qwen-MT Flash 备用
- API Key 存放在 iOS 钥匙串
- 首次启动隐私告知,以及一键删除全部本地数据
首版不直接解析 B 站或抖音链接。用户需使用自己有权使用的本地视频和字幕。
- Xcode 16 或更新版本
- iOS 17 或更新版本
- XcodeGen(用于从
project.yml生成工程)
brew install xcodegen
xcodegen generate
open LanguageAssistant.xcodeproj在 Xcode 中选择自动签名后即可运行。纯字幕逻辑无需 Xcode:
swift test- 在阿里云百炼控制台切换到“华北2(北京)”。
- 开通模型服务并创建 API Key。
- 创建成功时立即保存 API Key 和 API Host。
- 在 App“设置”中填写这两项,点击“测试连接”。
百炼现在仅作为兼容备用服务:
fun-asr-realtime:通过 WebSocket 按约实时速度识别英文并返回句级时间戳。qwen-mt-flash:仅在 iOS 17 上将英文逐句翻译为简体中文。
当前测试版把用户自己的密钥保存在 iOS 钥匙串,仅适合产品验证。公开发布前应改用百炼临时 API Key 或最小代理,以控制密钥、限流、配额、账单和滥用。
- 原视频不会因识别或翻译上传。
- 识别时会在系统临时目录生成裸 PCM,并通过 WebSocket 流式发送;成功、失败或取消后都会删除。
- 不使用 OSS,不在应用自己的云服务中保存音视频。
- iOS 18 本地翻译不发送字幕;iOS 17 百炼备用翻译只发送英文字幕文本。
- 阿里云百炼如何处理请求内容以其服务条款和用户配置为准。
- 删除本地内容会移除视频文件、SwiftData 记录和钥匙串中的 API Key。
- ECDICT 主要提供音标和英汉释义,只有少量精选词条附带例句;未收录的词可继续使用 iOS 系统词典。
- App 内置
base.en模型,无需用户额外下载;安装包会增加约 150MB,实际识别速度取决于设备性能。 - Fun-ASR 按实时节奏接收音频,30 分钟视频通常约需 30 分钟识别;当前不支持断点续传。
- 需要在真机上验证后台中断、弱网、不同编码视频和大文件存储压力。
- 未实现账号、跨设备同步、付费和任何平台视频抓取能力。
离线词典数据来自 ECDICT,以 MIT
License 分发。完整许可见 LanguageAssistant/Resources/ECDICT-LICENSE.txt。
SentShadow 以 MIT License 开源。WhisperKit、Whisper 模型和 ECDICT 等第三方组件的许可见 THIRD_PARTY_NOTICES.md。