Echo-Loop
<div align="right"> <a href="./README.en.md">English</a> | <strong>简体中文</strong> </div> <div align="center"> <img src="assets/icon/app-icon-1024-rounded.png" alt="Echo Loop" width="128" /> <h1>Echo Loop — 高效的英语听说训练 App</h1> <p><strong>从此不必自己摸索怎么练好英语。</strong></p> <p>盲听 · 精听 · 跟读 · 复述 · 复习,Echo Loop 按科学节奏推你走完。</p> <p><sub><em>本项目由中央民族大学外国语学院 <a href="https://sfs.muc.edu.cn/info/1063/3729.htm">杨艳老师</a> 指导设计。</em></sub></p> <p> <a href="./LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg" alt="License: AGPL-3.0" /></a> <img src="https://img.shields.io/badge/Platform-iOS%20%C2%B7%20Android%20%C2%B7%20macOS%20%C2%B7%20Windows-brightgreen.svg" alt="Platform" /> <a href="https://github.com/echo-loop/Echo-Loop/releases/latest"><img src="https://img.shields.io/github/v/release/echo-loop/Echo-Loop?label=release&color=orange" alt="Latest release" /></a> <a href="https://github.com/echo-loop/Echo-Loop/releases"><img src="https://img.shields.io/github/downloads/echo-loop/Echo-Loop/total?label=downloads" alt="Total release downloads" /></a> <a href="https://github.com/echo-loop/Echo-Loop/commits/main"><img src="https://img.shields.io/github/last-commit/echo-loop/Echo-Loop" alt="Last commit" /></a> </p> <p> <a href="https://apps.apple.com/cn/app/echo-loop-%E9%AB%98%E6%95%88%E8%8B%B1%E8%AF%AD%E5%90%AC%E8%AF%B4%E8%AE%AD%E7%BB%83/id6760324074"><img src="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg" alt="Download on the App Store" height="48" /></a> </p> </div> > 🇨🇳 **中国区用户请注意**:中国区 App Store 正在申请 ICP 备案,应用暂时下架。中国大陆用户可切换到非中国区 Apple 账号(如美区、港区)下载安装 Echo Loop。备案完成后会恢复上架。 --- ## 📖 Echo Loop 是什么 **若英语听说也有一卷无上内功心法,Echo Loop 便是一部现代学习者的 E筋经**。这个 E,既是 Echo,也是 English,更是 Ear 与 Expression。它不传花拳绣腿,不教临场取巧,而是带你: - 先盲听入定,听出原声气息 - 再精听通脉,打通语音、词义与句意经脉 - 继而跟读运功,校准发音、节奏和语感 - 再以复述出招,把听进去的英语化为自己口中自然流出的表达 初练之后,八阶回环自成周天,间隔复习固本培元,难句与生词也在一次次回炉中融会贯通,化为己用。 练到深处,听力不再靠猜,口语不再硬憋,真正生出一身可持续增长的英语听说内功。 说得直白一点,Echo Loop 是一款科学高效的英语听说训练 App。它帮助你把一段音频从陌生练到真正听懂,再通过跟读和复述实现听说闭环,逐步练到脱口而出。系统会自动安排间隔复习和提醒,逐步推进训练节奏。你不用自己摸索方法,也不用手动控制流程,只需专注练习本身。 --- ## 📱 截图 <table> <tr> <td align="center"><img src="assets/screenshots/01-import.png" alt="导入音频" width="180" /><br/><sub>导入音频,开始练习</sub></td> <td align="center"><img src="assets/screenshots/02-loop.png" alt="科学练习" width="180" /><br/><sub>科学练习,听说闭环</sub></td> <td align="center"><img src="assets/screenshots/03-reminder.png" alt="自动提醒" width="180" /><br/><sub>自动提醒,进步可见</sub></td> <td align="center"><img src="assets/screenshots/04-intensive.png" alt="逐句精听" width="180" /><br/><sub>逐句精听,难句标注</sub></td> <td align="center"><img src="assets/screenshots/05-analysis.png" alt="意群划分" width="180" /><br/><sub>意群划分,难句解析</sub></td> </tr> <tr> <td align="center"><img src="assets/screenshots/06-retell.png" alt="段落复述" width="180" /><br/><sub>段落复述,听懂变成会说</sub></td> <td align="center"><img src="assets/screenshots/07-favorites.png" alt="难句收藏" width="180" /><br/><sub>难句收藏,熟中生巧</sub></td> <td align="center"><img src="assets/screenshots/08-flashcard.png" alt="闪卡复习" width="180" /><br/><sub>闪卡复习,原句再现</sub></td> <td align="center"><img src="assets/screenshots/09-freestyle.png" alt="自由练习" width="180" /><br/><sub>按你的节奏,自由练习</sub></td> <td align="center"><img src="assets/icon/app-icon-1024-rounded.png" alt="Echo Loop" width="120" /></td> </tr> </table> --- ## ✨ 功能 - 🤖 **自动驱动学习节奏**:跟读次数、复习时机、难句标记自动推进,你只需要专注听和说。 - 🎯 **听说闭环**:精听、跟读、复述一气呵成。从听懂内容,到模仿表达,再到用自己的话说出来。 - 🧩 **长难句意群划分**:长句按意群切分,复杂句拆开理解,降低听懂难度。 - ⭐ **难句收藏与专项复习**:难句自动归档,可集中跟读、反复重练,避免“标了就忘”。 - 📚 **语境化闪卡复习**:收藏单词和意群,结合原句上下文复习,在语境中记忆,而不是孤立背词。 - 💡 **AI 翻译、解析与词汇讲解**:支持双语翻译、句子解析、单词用法和搭配讲解,按需展开,不打断学习节奏。 - 📍 **断点续学**:自动记录学习阶段和当前句子,下次打开直接继续,5 分钟碎片时间也能练。 - 📊 **学习数据统计**:记录学习时长、输入输出比例、唯一词汇量,让练了多少、说了多少一目了然。 - 🎙️ **跟读 AI 评测**:自动对齐识别结果与原文,高亮命中词,并给出跟读评级。 - 🎧 **导入本地音频 + AI 字幕**:支持批量导入本地音频,可导入本地字幕,也可用 AI 自动转录生成字幕。 --- ## 🤔 我们为什么做这个 很多人学英语时,最大的问题不是缺材料,而是不知道怎么把一段材料真正练透。 常见情况是:今天收藏一个播客,明天听一段演讲,材料越来越多,但真正认真练熟的内容很少。听的时候好像懂了,过几天又忘了,更不用说把里面的表达说出来。 这背后其实很符合人性:人天然喜欢新鲜、轻松、即时反馈强的东西,所以花哨的内容、游戏化激励和不断刷新的材料很容易让人上瘾。但对语言学习来说,真正有效的训练往往不是"不断换新材料",而是对合适的材料进行重复、拆解、模仿和复述。过多的新鲜感反而会分散注意力,让学习停留在"看过、听过、收藏过",而没有真正内化。 另一个更隐蔽的问题是:即使知道正确的方法,也很难长期坚持。因为这些方法看起来简单,真正执行时却需要大量手动判断:今天练哪段、先听几遍、什么时候看字幕、哪些句子要反复跟读、什么时候开始复述、几天后再复习、复习时该练什么。每一步都要自己控制,最后学习本身还没开始,决策负担已经把心力耗尽了。 **这些决策本身才是最消耗意志力的地方**:不是听不懂,是不知道下一步该做什么。 Echo Loop 想做的,就是在不违背人性的前提下,用更科学的训练流程降低重复练习的执行成本。它把盲听、精听、跟读、复述和间隔复习串成一个自动推进的闭环:选一段你想听懂的音频,按下开始,从盲听到通关,每一步它都会告诉你"现在做什么"。 你只需要坚持打开 App,剩下交给 Echo Loop。把一段材料练透,强过泛听 100 个音频。 --- ## 🆚 和其他方案的差异 挑了四款国内学习者最熟的 App 对比。单看每一项功能,其它 App 也或多或少有;但 Echo Loop 真正的不同在于:**它把每一步串起来自动驱动你走完,你不需要自己摸索方法、控制遍数、掌握复习节奏。** | 功能 | Echo Loop | 每日英语听力 | 可可英语 | 英语流利说 | Anki | |---|---|---|---|---|---| | **学习节奏由 App 驱动** | ✅ 全自动 | ❌ | ❌ | ❌ | ❌ | | 听 → 说闭环(精听 + 跟读 + **复述**) | ✅ | ⚠️ 部分支持 | ⚠️ 部分支持 | ⚠️ 部分支持 | ❌ | | **长难句意群划分** | ✅ | ❌ | ❌ | ❌ | ❌ | | **收藏句专项复习** | ✅ | ❌ | ❌ | ❌ | ❌ | | **语境化闪卡复习** | ✅ | ❌ | ❌ | ❌ | ⚠️ 需手动建卡 | | AI 翻译 / 句子解析 / 单词深度解析 | ✅ | ⚠️ 部分支持 | ⚠️ 部分支持 | ❌ | ❌ | | **断点续学**| ✅ | ⚠️ 部分支持 | ⚠️ 部分支持 | ⚠️ 部分支持 | ⚠️ 部分支持 | | 学习数据:时长 / 输入输出比 / 唯一词汇量 | ✅ | ⚠️ 部分支持 | ⚠️ 部分支持 | ⚠️ 部分支持 | ❌ | | 跟读 AI 评测 | ✅ | ✅ | ✅ | ✅ | ❌ | | 导入本地音频 | ✅ | ✅ | ❌ | ❌ | ⚠️ 需自制卡片 | | 离线可用 | ✅ | ✅ | ✅ | ⚠️ 部分支持 | ✅ | | 开源 | ✅ | ❌ | ❌ | ❌ | ✅ | --- ## 🧠 学习方法论 **盲听 → 精听 → 跟读 → 复述 → 科学间隔复习 → 通关。** ```mermaid flowchart LR A[盲听<br/>完整听一遍,感知整体难度] --> B[精听<br/>逐句听懂,标记重点难句] B --> C[跟读<br/>模仿语音语调,训练发音能力] C --> D[复述<br/>用自己的话表达,提升输出能力] D --> E[间隔复习<br/>在遗忘前重练,巩固长期记忆] E --> F[通关<br/>完成本轮学习任务] ``` **以上每一步,由 Echo Loop 自动驱动,不需要你判断。** 你不需要管"现在该听几遍"、"上次那个素材该不该复习了"。打开 App,今天该做什么会直接呈现在你眼前。 学习全过程量化:**学习时长 · 输入输出比 · 唯一词汇量**。 <details> <summary><strong>间隔复习法是怎么安排的?</strong></summary> 每段素材分成 1 次首次学习 + 7 轮间隔复习。间隔从 6 小时拉长到 28 天,让大脑在快要遗忘时重新触达记忆痕迹,符合艾宾浩斯遗忘曲线。 | 阶段 | 距上次间隔 | 任务 | |---|---|---| | 首次学习 | — | 盲听 → 精听 → 跟读 → 段落复述 | | 首轮复习 | 6 小时后 | 难句补练 + 段落复述 | | 第二轮复习 | 1 天后 | 盲听 + 难句补练 + 段落复述 | | 第三轮复习 | 2 天后 | 盲听 + 难句补练 + 段落复述 | | 第四轮复习 | 4 天后 | 盲听 + 难句补练 + 段落复述 | | 第五轮复习 | 7 天后 | 盲听 + 难句补练 + 段落复述 | | 第六轮复习 | 14 天后 | 盲听 + 难句补练 + 段落复述 | | 第七轮复习 | 28 天后 | 盲听 + 难句补练 + 段落复述 | </details> --- ## 📥 下载与试用 <table> <tr> <td valign="middle"> <p> <a href="https://apps.apple.com/cn/app/echo-loop-%E9%AB%98%E6%95%88%E8%8B%B1%E8%AF%AD%E5%90%AC%E8%AF%B4%E8%AE%AD%E7%BB%83/id6760324074"><img src="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg" alt="App Store" height="48" /></a> <a href="https://github.com/echo-loop/Echo-Loop/releases"><img src="https://img.shields.io/badge/Android-下载%20APK-3DDC84?logo=android&logoColor=white&style=for-the-badge" alt="Android APK" height="48" /></a> </p> <p><sub>桌面端:macOS 开发中 · Windows 规划中 · Web 暂无计划</sub></p> </td> <td valign="middle" align="center" width="140"> <img src="assets/qr/app-store.png" alt="App Store 二维码" width="110" /><br/> <sub>扫码下载 iOS 版</sub> </td> </tr> </table> --- ## 💬 加入社群 和其他认真练英语的伙伴一起:交流学习方法、反馈使用体验、第一时间收到新功能更新。 <table> <tr> <td valign="middle" align="center" width="140"> <img src="assets/qr/wechat-group.jpg" alt="微信群二维码" width="110" /><br/> <sub>扫码加入微信群</sub> </td> <td valign="middle"> <p><sub>二维码过期或群已满 200 人后请先加微信 <code>echo-loop-app</code>,由群主拉你进群。</sub></p> </td> </tr> </table> --- ## 🗺️ Roadmap ### ✅ 1 · 核心功能 - [x] 学习闭环:盲听 / 精听 / 跟读 / 段落复述 - [x] 间隔复习调度(6h → 28d) - [x] 长难句意群划分 - [x] 难句收藏 + 专项复习 - [x] 语境化闪卡复习 - [x] AI 翻译 / 句子解析 - [x] iOS / macOS 原生 ASR 跟读评测 - [x] 断点续学 - [x] 学习数据统计 ### 🚧 2 · AI 能力 - [ ] AI 口语陪练 - [ ] AI 学习助手(随时答疑) - [ ] 单词深度解析 - [ ] 个性化素材推荐 ### 🔭 3 · 体验与平台 - [ ] 自定义任务流 - [ ] 连胜激励 / 学习勋章 - [ ] macOS / Windows 桌面版正式发布 ### 🔭 4 · 内容生态 - [ ] 官方精选合集(按主题 + 难度分级) - [ ] 用户合集分享 / UGC 学习材料 --- ## ⭐ Star History [](https://star-history.com/#echo-loop/Echo-Loop&Date) --- ## 🎓 学术指导 & 致谢 **学术指导** 感谢 [杨艳老师](https://sfs.muc.edu.cn/info/1063/3729.htm)(中央民族大学外国语学院;北京大学英语语言文学博士)对本项目方法论的指导。 **核心依赖** - 音频与语音:[just_audio](https://pub.dev/packages/just_audio) · [audio_session](https://pub.dev/packages/audio_session) · [flutter_tts](https://pub.dev/packages/flutter_tts) · [sherpa_onnx](https://pub.dev/packages/sherpa_onnx) - 数据与状态:[drift](https://pub.dev/packages/drift) · [flutter_riverpod](https://pub.dev/packages/flutter_riverpod) - 文本处理:[subtitle](https://pub.dev/packages/subtitle) · [lemmatizerx](https://pub.dev/packages/lemmatizerx) - 系统能力:[file_picker](https://pub.dev/packages/file_picker) · [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) --- ## 🧑💻 给开发者 <details open> <summary><strong>🚀 快速开始</strong></summary> ```bash git clone [email protected]:echo-loop/Echo-Loop.git cd Echo-Loop cp .dev.env.template .dev.env # 填入 Supabase / Google / API 地址等编译期变量 flutter pub get dart run build_runner build flutter run -d <ios|android|macos> --dart-define-from-file=.dev.env ``` > 编译期环境变量(`SUPABASE_URL`、`SUPABASE_PUBLISHABLE_KEY`、`GOOGLE_WEB_CLIENT_ID`、`API_BASE_URL`) > 统一放在 `.dev.env`(调试)/ `.prod.env`(发布),通过 `--dart-define-from-file` 注入。 > 这两个文件已被 `.gitignore`,请勿提交。`.prod.env` 用相同的键,把 `API_BASE_URL` 换成生产地址即可。 </details> <details> <summary><strong>🤝 如何贡献</strong></summary> 欢迎提 Issue / PR。提交前请运行: ```bash flutter analyze flutter test ``` Commit 标题遵循 `PREFIX: 内容` 格式(参考 `git log` 看常用前缀,如 FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE 等)。详细贡献流程见 [CONTRIBUTING.md](#)(待补)。本项目遵循 [Contributor Covenant](https://www.contributor-covenant.org/) 行为准则。 </details> <details> <summary><strong>🛠️ 技术栈</strong></summary>      | 类别 | 技术 | 用途 | |------|------|------| | UI 框架 | Flutter + Material 3 | 跨平台 UI | | 状态管理 | Riverpod(代码生成) | 单向数据流 | | 音频播放 | just_audio + audio_session | 音频引擎层 | | 字幕解析 | subtitle | SRT/VTT | | 文件选择 | file_picker | 本地音频/字幕导入 | | 数据持久化 | Drift (SQLite) + shared_preferences | 学习进度、收藏、缓存 | | 国际化 | flutter_localizations + ARB | 简体中文 / English | | 测试 | flutter_test + mocktail | 单元 / Widget / 集成 | | 静态分析 | flutter_lints | 代码规范 | </details> <details> <summary><strong>📁 项目结构</strong></summary> ``` lib/ ├── l10n/ # 国际化翻译文件(ARB 格式) ├── models/ # 数据模型(AudioItem, Sentence, Collection 等) ├── providers/ # Riverpod 状态管理 │ ├── audio_engine/ # 音频引擎层(底层播放控制) │ └── listening_practice/ # 听力练习层(业务逻辑) │ ├── sentence_tracker.dart # 句子定位(二分查找) │ └── bookmark_manager.dart # 书签管理 ├── screens/ # 页面 ├── services/ # 服务层(StorageService, SubtitleParser) └── widgets/ # 可复用组件 integration_test/ # 端到端测试 test/ # 单元 / Widget 测试 ``` </details> <details> <summary><strong>⌨️ 开发命令速查</strong></summary> **运行** ```bash flutter run -d ios # iOS flutter run -d android # Android flutter run -d macos # macOS(开发中,未发布) flutter run -d chrome # Web(仅调试用,无发布计划) # iOS 模拟器 xcrun simctl list devices available xcrun simctl boot <DEVICE_UDID> open -a Simulator ``` **测试 / 质量检查** ```bash flutter analyze # 静态分析 flutter test # 全部测试 flutter test integration_test -d macos # 集成测试 dart format . # 格式化 ``` **代码生成**(修改 Riverpod Provider 后) ```bash dart run build_runner build ``` **构建** ```bash # 编译期变量从 env 文件注入(dev 用 .dev.env,发布用 .prod.env) flutter build macos --dart-define-from-file=.prod.env flutter build apk --dart-define-from-file=.prod.env flutter build ios --dart-define-from-file=.prod.env # 真机运行 flutter run --release -d <DEVICE_ID> --dart-define-from-file=.dev.env ``` > 发布脚本 `scripts/run_simulator.sh`(读 `.dev.env`)、`scripts/release_{android,ios,macos}.sh`(读 `.prod.env`) > 已内置 `--dart-define-from-file`,无需手动传参。 **环境要求** - Flutter SDK 3.9.2+ - iOS 模拟器 / Android 模拟器 / 真机 - 桌面端:macOS / Windows / Linux 开发环境 </details> --- ## 📄 License [AGPL-3.0](./LICENSE)