FluentAnyLang practices listening and speaking sentence by sentence. For that it needs two things you bring yourself: media (audio or video) and timed subtitles (.srt / .lrc). This note is a short map of where those pieces usually come from.
Find media
Almost any spoken content works — podcasts, lectures, dramas, songs, conference talks, or something you recorded yourself. Prefer clear speech and a length you will actually finish; you can always split a long file into clips later.
Common places people start:
| Source | Notes |
|---|---|
| Your own files | Voice memos, class recordings, exported meeting audio |
| Podcasts / courses | e.g. EnglishPod dialog tracks; many ship MP3s you already own |
| YouTube / open talks | TED, conference keynotes, public lectures (download with tools you trust, respect the license) |
| Shows you own | Rips or offline copies from a legal purchase; pair with matching subtitle files below |
FluentAnyLang does not ship curriculum media. Whatever you can play locally, you can import.
Find subtitles
Subtitles drive jump / loop. Untimed text alone is not enough — you still need cues aligned to the audio.
Ready-made files
- Bundled with the media — courses and some podcast packs already include
.srt/.lrc. - Platform captions — export or download official captions when the host allows it, then check timing against the file you actually play.
- subtitle-library — an open collection of time-aligned learning subtitles (no media inside the repo). Each theme README explains how to obtain the matching audio/video and how to name files so players auto-load them. Current themes include EnglishPod dialogs and Downton Abbey clips. Details: docs. Pull requests for new themes or fixes are welcome — see the repo CONTEXT.md.
Generate or re-align
When nothing fits your media, or an existing subtitle drifts:
- Media only → generate a timed
.srtfrom speech - Script (
.txt) → keep your wording, force-align times to the audio - Existing
.srt/.lrc→ refine each cue against the waveform (not only a single global offset)
sub-align covers those cases with WhisperX forced alignment. Install and usage: docs. Issues and improvements on GitHub are appreciated.
Import and practice
- Put media and subtitle side by side (same basename helps many players, including FluentAnyLang's import flow).
- Open the app, import the pair, and start listening or speaking practice.
- Optional: use ambient noise packs if you train with anti-noise listen.
That is the whole loop — pick content you care about, attach timed lines, and practice on-device.