Skip to content
Projects

echo-loop/Echo-Loop has 4,654 GitHub stars and 489 forks. GitHot measured +7 stars in 24 hours and +83 in 7 days. Last checked 2026-11-05 03:27 UTC. Last push 2026-11-01.

How these counts are measured

Echo Loop is a scientific, efficient AI app for English listening and speaking practice. Through intensive listening, shadowing, blind listening, retelling, and spaced review, it automatically guides learners to truly understand, master, and speak every audio segment.

Measured star growth

in 24h
+7
in 7 days
+83
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.en.md

Original
English | 简体中文
Echo Loop

Echo Loop — Efficient English Listening & Speaking Training

You no longer have to figure out how to practice English on your own.

Intensive listening · Shadowing · Blind listening · Retelling · Review — Echo Loop guides you through every step at a scientifically-paced rhythm.

This project is academically advised by Yang Yan from the School of Foreign Studies, Minzu University of China.

License: AGPL-3.0 Platform Latest release Total release downloads Last commit

Download on the App Store Get it on Google Play


📱 Screenshots

Import audio
Import audio, start practicing
Scientific practice
Scientific practice, listen-speak loop
Auto reminders
Auto reminders, visible progress
Sentence-by-sentence
Sentence-by-sentence intensive listening
Sense group split
Sense-group split, hard sentence analysis
Paragraph retelling
Retelling: turn comprehension into output
Saved sentences
Saved hard sentences, practice to mastery
Flashcard review
Flashcard review with original context
Freestyle practice
Practice freely at your own pace
Echo Loop

✨ Features

  • 🤖 Auto-driven learning rhythm: Shadowing repetitions, review timing, and hard-sentence marking all advance automatically — you just focus on listening and speaking.
  • 🎯 Listen-speak loop: Intensive listening, shadowing, and retelling flow seamlessly. From understanding the content, to imitating expression, to saying it in your own words.
  • 🧩 Sense-group splitting for long sentences: Long sentences are split by sense groups, breaking complex structures into digestible chunks.
  • ⭐ Save hard sentences and review them on demand: Hard sentences are auto-archived for focused shadowing and repeated practice — no more "marked and forgotten".
  • 📚 Contextualized flashcard review: Saved words and sense groups are reviewed alongside their original sentence context — memorize in context, not in isolation.
  • 💡 AI translation, analysis, and vocabulary explanation: Bilingual translation, sentence analysis, word usage and collocations — expand on demand without breaking your flow.
  • 📍 Resume where you left off: Automatically records your stage and current sentence, so you can pick up instantly — even 5-minute fragments count.
  • 📊 Learning statistics: Tracks practice time, input/output ratio, and unique vocabulary — see exactly how much you've practiced and spoken.
  • 🎙️ AI shadowing evaluation: Automatically aligns ASR results with the original text, highlights matched words, and gives a shadowing rating.
  • 🎧 Local audio import + AI subtitles: Batch-import local audio, import existing subtitles, or auto-transcribe with AI.

🤔 Why we built this

When using other English-learning apps, you have to decide for yourself: how many times should I listen today? Intensive or extensive? Which sentence haven't I mastered yet? Should I shadow it? When should I review?

Those decisions themselves are what drains your willpower — it's not that you can't understand, it's that you don't know what to do next.

Echo Loop takes those decisions off your plate. Pick a piece of audio you want to understand, hit start, and from intensive listening to completion, every step tells you "what to do right now".

You just need to keep opening the app — Echo Loop handles the rest. Practicing one piece thoroughly beats listening to 100 random ones.


🆚 How it differs from other solutions

We picked four English-learning apps most familiar to Chinese learners for comparison. Each individual feature exists, more or less, in other apps. But Echo Loop's real difference is this: it strings every step together and drives you through automatically — you don't need to figure out the method, control repetition counts, or manage review intervals yourself.

Feature Echo Loop Daily English Listening Kekenet Liulishuo Anki
App-driven learning rhythm ✅ Fully automatic ❌ ❌ ❌ ❌
Listen → speak loop (intensive + shadowing + retelling) ✅ ⚠️ Partial ⚠️ Partial ⚠️ Partial ❌
Sense-group splitting for long sentences ✅ ❌ ❌ ❌ ❌
Saved-sentence focused review ✅ ❌ ❌ ❌ ❌
Contextualized flashcard review ✅ ❌ ❌ ❌ ⚠️ Manual cards required
AI translation / sentence analysis / word deep-dive ✅ ⚠️ Partial ⚠️ Partial ❌ ❌
Resume where you left off ✅ ⚠️ Partial ⚠️ Partial ⚠️ Partial ⚠️ Partial
Stats: time / input-output ratio / unique vocabulary ✅ ⚠️ Partial ⚠️ Partial ⚠️ Partial ❌
AI shadowing evaluation ✅ ✅ ✅ ✅ ❌
Local audio import ✅ ✅ ❌ ❌ ⚠️ Manual cards
Offline available ✅ ✅ ✅ ⚠️ Partial ✅
Open source ✅ ❌ ❌ ❌ ✅

🧠 Methodology

Intensive listening → Shadowing → Blind listening → Retelling → Spaced review → Completion.

flowchart LR
  A[Intensive listening<br/>Understand sentence by sentence, mark hard ones] --> B[Shadowing<br/>Imitate pronunciation and intonation]
  B --> C[Blind listening<br/>Listen through once, check overall comprehension]
  C --> D[Retelling<br/>Express in your own words, build output ability]
  D --> E[Spaced review<br/>Re-practice before forgetting, consolidate long-term memory]
  E --> F[Completion<br/>Finish this round of learning]

Every step above is auto-driven by Echo Loop — no judgment calls required.

You don't need to manage "how many times should I listen" or "is it time to review last week's material". Open the app, and what to do today appears right in front of you.

The full process is quantified: practice time · input/output ratio · unique vocabulary.

How are spaced reviews scheduled?

Each piece of material is split into 1 first-pass session + 7 spaced reviews. Intervals stretch from 6 hours to 28 days, hitting the memory trace just before forgetting — aligned with the Ebbinghaus forgetting curve.

Stage Interval since last Tasks
First pass — Intensive → Shadowing → Blind → Retelling
Review 1 After 6 hours Hard-sentence drills + retelling
Review 2 After 1 day Blind listening + drills + retelling
Review 3 After 2 days Blind listening + drills + retelling
Review 4 After 4 days Blind listening + drills + retelling
Review 5 After 7 days Blind listening + drills + retelling
Review 6 After 14 days Blind listening + drills + retelling
Review 7 After 28 days Blind listening + drills + retelling

📥 Download & try it

App Store   Get it on Google Play   Android APK

Desktop: macOS in development · Windows planned · Web not planned

App Store QR code
Scan to download iOS
Google Play QR code
Scan to download Android

❓ FAQ

Is Echo Loop free?

All core features are free, with no usage caps and no item limits:

  • Unlimited imports: local files, links, Baidu Netdisk and podcast subscriptions
  • Unlimited favorites: save as many hard sentences, words and sense groups as you like
  • The full learning loop: intensive listening, shadowing, blind listening and retelling, plus 7 rounds of spaced review with reminders
  • Focused review of hard sentences + in-context flashcards
  • Shadowing evaluation: runs on your device's built-in speech recognition, with no usage count
  • Offline transcription: download a model and generate subtitles on your device, no sign-in needed
  • Offline dictionary, learning statistics, PDF note export, backup & restore

AI explanation features come with a free monthly quota, which covers everyday study for most people. Only heavy AI users need to upgrade to a membership in the app.

Which features use the AI quota?

Only the AI explanation features: AI translation, sentence analysis, sense-group splitting, word analysis, the AI study assistant, retelling evaluation and cloud transcription. None of the free features listed above use the quota.

What happens when the free quota runs out?

You can keep studying as usual. AI features come back when the quota resets next month, or you can upgrade to a membership in the app if you don't want to wait.

Why does an open-source project charge anything?

The code is fully open source (AGPL-3.0). Every AI request costs us money paid to the model provider, and memberships cover that cost so the project can keep going.

Which platforms are supported?

Right now the focus is iOS and Android: get it from the App Store or Google Play, or download the Android APK from Releases. Native macOS and Windows versions are in development and will be released later.

To use it on a computer today:

  • Mac (Apple silicon): search for Echo Loop in the Mac App Store and install the iOS version directly
  • Windows: install Tencent's YingYongBao (应用宝) app store, then install the Echo Loop Android APK inside it
How is it different from other English apps?

Other apps mostly give you materials and tools and leave it to you to work out how to practice. Echo Loop handles the how: intensive listening, shadowing, blind listening, retelling and spaced review run as a single flow, and the app tells you what to do at every step. You don't need to make a plan, count repetitions or track review dates. See "🆚 How it differs from other solutions" above for a detailed comparison.

What materials are supported?
  • Audio: mp3, m4a, wav, aac, flac
  • Video: mp4, mov, m4v, mkv (you can hide the picture and practice with audio only)
  • Subtitles: srt, vtt, lrc; subtitle files with the same name as the audio are paired automatically. No subtitles? Generate them with AI transcription
  • Sources: local files, direct audio links, Baidu Netdisk, podcast subscriptions

Podcasts, TED talks, TV clips and textbook audio all work. For best results, pick content you're interested in and that's slightly above your current level.

What English level do I need?

If you can follow the gist of a material with subtitles, you're ready. When a sentence is hard to follow, break it down with sense-group splitting, AI translation and sentence analysis. If you're still building your basics, start with short, slow-paced materials.

How soon will I see results?

After the first study session on a material, you'll understand it and be able to retell it in your own words. The 7 rounds of spaced review that follow take about 8 weeks and lock it into long-term memory. Overall listening and speaking skills build up over time: practice 20–30 minutes a day with 2–3 materials at once, and within a few weeks listening should feel easier and speaking more fluent.

Can I use it offline?

Yes. The learning flow, reviews, favorites, shadowing evaluation and local transcription all work offline. Only cloud AI features need a connection.

Where is my data stored? What if I switch phones?

Your learning data is stored on your device. Before switching phones or reinstalling, export a backup from Settings → Backup & Restore, then restore it on the new device.


💬 Join the community

Practice English alongside other committed learners: share methods, give feedback, and be the first to hear about new features.


🗺️ Roadmap

✅ 1 · Core features

  • Learning loop: intensive / shadowing / blind / retelling
  • Spaced review scheduling (6h → 28d)
  • Sense-group splitting for long sentences
  • Saved hard sentences + focused review
  • Contextualized flashcard review
  • AI translation / sentence analysis
  • iOS / macOS native ASR shadowing evaluation
  • Resume where you left off
  • Learning statistics

🚧 2 · AI capabilities

  • AI speaking partner
  • AI learning assistant (on-demand Q&A)
  • AI word lookup
  • Personalized material recommendations

🔭 3 · Experience & platforms

  • Custom task flows
  • Streaks / learning badges
  • Official macOS / Windows desktop release

🔭 4 · Content ecosystem

  • Official curated collections (by topic + difficulty)
  • User-shared collections / UGC learning materials

⭐ Star History

---

🎓 Academic guidance & acknowledgements

Academic guidance

Thanks to Yang Yan (School of Foreign Studies, Minzu University of China; PhD in English Language and Literature, Peking University) for guiding this project's methodology.

Core dependencies


🧑‍💻 For developers

🚀 Quick start
git clone [email protected]:echo-loop/Echo-Loop.git
cd Echo-Loop
cp .dev.env.template .dev.env   # fill in Supabase / Google settings
flutter pub get
dart run build_runner build
flutter run -d <ios|android|macos> --dart-define-from-file=.dev.env

Supabase, Google, and other compile-time settings live in .dev.env (debug) / .prod.env (release) and are injected via --dart-define-from-file. Both files are gitignored. The global API defaults to https://www.echo-loop.top and can be overridden at compile time with API_BASE_URL. The model CDN addresses are configured in lib/config/regional_service_endpoints.dart. The China API defaults to https://www.echo-loop.cn and can be overridden with API_CHINA_BASE_URL. Local builds can override them in .prod.env; GitHub Actions CI/Release passes the corresponding GitHub Variables directly to the build commands. release builds use one isChinaUser result: China Apple Storefront, device country, or /api/v1/client/config context.countryCode set to CN/CHN selects China, so one package contains both global and China API candidates and serves both regions. When there is no China evidence, the first API request uses the global endpoint. When the region conclusion changes, the app keeps its current API endpoint while a config request probes the new preference. It tries the other region once on a network error or 5xx. A successful probe activates the preferred region; alternate success keeps API requests on the available endpoint for the session, and a later config refresh probes the preference again. Model CDN routing always follows isChinaUser; source API defaults apply when no override is set.

🤝 How to contribute

Issues and PRs are welcome. Before submitting, please run:

flutter analyze
flutter test

Commit titles follow the PREFIX: content format (check git log for common prefixes — FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE, etc.). A detailed contribution guide will live in CONTRIBUTING.md (TBD). This project follows the Contributor Covenant code of conduct.

🛠️ Tech stack

Flutter Dart Riverpod Drift Material 3

Category Technology Purpose
UI framework Flutter + Material 3 Cross-platform UI
State management Riverpod (code generation) Unidirectional data flow
Audio playback just_audio + audio_session Audio engine layer
Subtitle parsing subtitle SRT/VTT
File picker file_picker Local audio/subtitle import
Persistence Drift (SQLite) + shared_preferences Progress, favorites, cache
i18n flutter_localizations + ARB 简体中文 / English
Testing flutter_test + mocktail Unit / widget / integration
Static analysis flutter_lints Code style
📁 Project structure
lib/
├── l10n/              # i18n files (ARB format)
├── models/            # Data models (AudioItem, Sentence, Collection, etc.)
├── providers/         # Riverpod state management
│   ├── audio_engine/  # Audio engine layer (low-level playback control)
│   └── listening_practice/  # Listening practice layer (business logic)
│       ├── sentence_tracker.dart   # Sentence locator (binary search)
│       └── bookmark_manager.dart   # Bookmark manager
├── screens/           # Pages
├── services/          # Service layer (StorageService, SubtitleParser)
└── widgets/           # Reusable components

integration_test/      # End-to-end tests
test/                  # Unit / widget tests
⌨️ Dev commands cheat sheet

Run

flutter run -d ios            # iOS
flutter run -d android        # Android
flutter run -d macos          # macOS (in development, unreleased)
flutter run -d chrome         # Web (debug only, no release plan)

# iOS Simulator
xcrun simctl list devices available
xcrun simctl boot <DEVICE_UDID>
open -a Simulator

Test / quality checks

flutter analyze                          # Static analysis
flutter test                             # All tests
flutter test integration_test -d macos   # Integration tests
# Maestro UI smoke test (start a device and install the dev build first)
MAESTRO_APP_ID=app.echoloop.dev scripts/test_maestro.sh
# Android device: build, install the dev build, then run the Study tests
scripts/test_maestro_android.sh
# With multiple devices, specify the target; alternatively export MAESTRO_ANDROID_DEVICE=<adb-serial> once
scripts/test_maestro_android.sh --device <adb-serial>
dart format .                            # Format

Install the Maestro CLI with curl -fsSL https://get.maestro.mobile.dev | bash. For the iOS dev build, use MAESTRO_APP_ID=top.echo-loop.dev; flows live in maestro/.

Code generation (after modifying Riverpod providers)

dart run build_runner build

Build

# Supabase / Google compile-time variables are injected from an env file (.prod.env for release)
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

# Run on device
flutter run --release -d <DEVICE_ID> --dart-define-from-file=.dev.env

The release scripts scripts/run_simulator.sh (reads .dev.env) and scripts/release_{android,ios,macos}.sh (read .prod.env) already pass --dart-define-from-file for you.

Requirements

  • Flutter SDK 3.9.2+
  • iOS Simulator / Android emulator / physical devices
  • Desktop: macOS / Windows / Linux dev environment

AtomGit mirror for users in China: Echo Loop on AtomGit

📄 License

AGPL-3.0

Explore related projects