Skip to content

About

句影:影子跟读APP

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

句影

课程首页 视频学习 逐句文稿

由于上架 App Store 需要付费开发者账号,如有意安装,请暂时通过 Xcode 安装到手机。 一个本地优先的 iOS 视频英语学习原型。视频、字幕、生词和播放进度保存在设备本地;iOS 18 及以上默认在设备端完成语音识别和字幕翻译。

功能图谱

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["字幕 / 播放进度 / 生词"]
Loading

已实现

  • 从相册或“文件”导入本地视频,并复制到 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

在线语言服务

  1. 在阿里云百炼控制台切换到“华北2(北京)”。
  2. 开通模型服务并创建 API Key。
  3. 创建成功时立即保存 API Key 和 API Host。
  4. 在 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。

License

SentShadow 以 MIT License 开源。WhisperKit、Whisper 模型和 ECDICT 等第三方组件的许可见 THIRD_PARTY_NOTICES.md。

About

句影:影子跟读APP

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages