For Vietnamese learners

Understand Vietnamese by phrases, not isolated words.

Practice real speech in short segments. Listen again, reveal the Vietnamese transcript, check the translation, and save difficult phrases for focused review.

Built for slow, focused listening practice.

Lesson preview

Vietnamese A2 · 108 segments

[00:14 → 00:19]

••••••••••••••••••
Translation
••••••••••••••••••

Phrase-based listening

Work with short, meaningful segments instead of long subtitles.

Repeat until clear

Replay the same phrase instantly without searching on the timeline.

Hidden transcript

Listen first, then reveal Vietnamese text only when needed.

Translation support

Use Russian translation as a check, not as the first step.

Personal favorites

Save difficult segments and review them separately.

Progress tracking

Continue from your last segment and track daily practice time.

Admin editor enabled

Designed for focused listening practice

MyPhrases helps learners build listening confidence through repeated exposure to short, meaningful speech segments.

MyPhrases · MVP for Vietnamese listening practice

Practice Vietnamese phrase by phrase.

Listen to short segments, repeat difficult phrases, reveal the transcript, and save useful fragments for review.

Demo mode. Log in to save progress and favorites.
FIXED

Fixed segment

00:00:00 -> 00:00:07

sec

Vietnamese

••••••••••••

Translation

••••••••••••

Edit phrase

Preview only. Changes are not saved.

Edit status: Saved

Audio

Start: 0.00 Split: 0.00 End: 0.00

Vietnamese

Boundary:
Left Right

Translation

Boundary:
Left Right

Segment tools

Split point: click inside text or audio timeline

appDataSource: unknown

API_BASE_URL: /api

selectedLesson(slug/id): -

selectedVideoId: -

currentSourceType: unknown

media_type: -

youtubeVideoId: -

fileName: -

file_path: -

localVideoPath: -

localVideo.readyState: -

localVideo.duration: -

viPath: -

ruPath: -

viStatus: -

ruStatus: -

mainSegments.length: 0

translationSegments.length: 0

navigationMode: fixed

firstMarkerCode: -

lastMarkerCode: -

apiWarnings: -

lastApiError: -

isEditMode: false

phraseEditDraft.markerCode: -

phraseEditDraft.audio: -

phraseEditDraft.vi boundaries: -

phraseEditDraft.translation boundaries: -

authState.authenticated: false

auth user: -

mode note: demo

canUseServerProgress: false

canUseServerSegmentMarks: false

canTrackStudyStats: false

phraseMode: lesson

currentSegmentIndex: 0

currentFavoriteIndex: 0

current markerCode: -

modeNav.lesson.segmentIndex: 0

modeNav.lesson.markerCode: -

modeNav.favorites.favoriteIndex: 0

modeNav.favorites.originalSegmentIndex: -

modeNav.favorites.markerCode: -

isCurrentSegmentFavorite: false

favorite count: 0

userSegmentMarksState.loading: false

userSegmentMarksState.saving: false

userSegmentMarksState.loadedForLessonKey: -

userSegmentMarksState.lastError: -

studyStatsState.enabled: false

studyStatsState.pending: 0/0/0/0

studyStatsState.flushing: false

studyStatsState.lastError: -

studyStatsState.lastFlushAt: -

studyStatsPageState.isOpen: false

studyStatsPageState.range: -

studyStatsPageState.days: 0

studyStatsPageState.selectedDate: -

studyStatsPageState.totals.active_minutes: -

studyStatsPageState.lastError: -

lessonProgressState.saving: false

current progress viewMode: lesson

current original index: -

last progress save viewMode: -

last progress restore viewMode: -

progress.lesson.lastSavedKey: -

progress.favorites.lastSavedKey: -

lessonProgressState.lastSavedKey (legacy): -

lessonProgressState.lastError: -

progress.lesson.restoredForLessonKey: -

progress.favorites.restoredForLessonKey: -

lessonProgressState.restoredForLessonKey (legacy): -

canEditContent: false

canShowEditControls: false

auth role: -

lessonStructureDirty: false

editorSaveState.status: -

lastError: -