Vấn đề: Bài luyện nói cũ chỉ yêu cầu repeat (đọc lại câu có sẵn), không buộc học viên tự tạo câu. Học viên thuộc lòng nhưng không biết xài cấu trúc khi cần nói tự do.
Đối tượng chính: Học viên đang học/ôn cấu trúc câu (Speak in Structure) trong chương trình Linearthinking.
Tín hiệu thành công: Học viên tự nói được 1 câu hoàn chỉnh đúng cấu trúc mục tiêu, với nội dung do chính mình tạo, phát âm được feedback và luyện lại ngay.
Speak a Sentence là dạng bài đơn giản nhất - luyện Speak in Structure. AI (Gemini) hỏi câu hỏi Part 1 → học viên nói 1 câu dùng đúng cấu trúc → AI highlight real-time kiểu karaoke (chế độ Dễ) hoặc nghe rồi fill kết quả (chế độ Khó). Cuối mỗi câu, AI check phát âm và mở popup luyện tập phát âm từng từ dở.
Có 2 chế độ: Dễ (cấu trúc hiện sẵn, chạy karaoke khi nói) và Khó (chỉ gợi ý tên cấu trúc, tự chọn và dùng). AI linh hoạt: nếu học viên dùng cấu trúc khác so với gợi ý nhưng vẫn hợp lệ trong kho knowledge → AI thay đổi khung và vẫn chấp nhận.
Knowledge base: File Linear 6.0S (mỗi band có kho cấu trúc khác nhau, nhập liệu sau). Chứa các sentence structures + word patterns phân loại theo loại câu hỏi (Why, Where, What, How…).
Cấu trúc hiện sẵn đầy đủ trên màn hình dạng gap-fill skeleton (ví dụ: The best part about ___ is that it allows me to ___).
User chỉ cần thêm từ/cụm từ của mình vào chỗ trống để hoàn thiện cấu trúc.
Khi học viên nói → AI tô xanh real-time từng từ kiểu karaoke - tạo cảm giác được lắng nghe và cấu trúc được “gạch” trước mắt.
Khi hết câu → AI fill phần thông tin thừa (vocabulary) vào các chỗ trống.
Nếu user nói đúng cấu trúc, input chuyển trạng thái xanh và AI tự động chuyển câu tiếp theo sau feedback ngắn.
Phạm vi Chế độ Dễ - chỉ kiểm 2 chiều: (1) bám skeleton có sẵn không, (2) từ điền vào blank có đúng đề không. Mode Dễ KHÔNG accept user dùng cấu trúc khác (kể cả khi cấu trúc đó hợp lệ trong knowledge base) - đó là phạm vi của Chế độ Khó. Chi tiết error cases trong Easy:
Case
Mô tả
Hành vi AI
Không bám cấu trúc gợi ý
User nói câu không theo skeleton (ví dụ: skeleton That will be ___ nhưng user nói “I really enjoy reading books”)
Khung đỏ + feedback “Câu này chưa bám cấu trúc gợi ý. Em hãy nói theo That will be ___ nhé.” → giữ câu hiện tại, retry
Lạc đề / từ điền sai
User bám đúng skeleton nhưng nội dung điền vào blank không liên quan đến câu hỏi (ví dụ: câu hỏi “What kind of book do you like?” + skeleton That will be ___ + user nói “That will be a sandwich”)
Khung amber + feedback “Em đã bám đúng cấu trúc rồi, nhưng phần điền chưa khớp câu hỏi. Em thử nói lại với một loại sách nhé.” → giữ câu, retry
Sai ngôn ngữ
User nói tiếng Việt thay vì tiếng Anh
Khung đỏ + “Bạn hãy trả lời bằng tiếng Anh nhé.” → retry
Câu quá ngắn / thiếu phần cần điền
User nói skeleton nhưng bỏ trống blank hoặc nói quá ít
Khung đỏ nhẹ + “Câu này còn hơi ngắn. Thêm ý để câu rõ hơn nhé.” → retry
Đúng cấu trúc + lạc đề KHÔNG xảy ra cùng lúc
-
Lạc đề là sub-case của “đúng cấu trúc”; ưu tiên báo “lạc đề”
UI nên hiển thị rõ Đang lắng nghe bạn... khi recording và Đang phân tích... sau khi user bấm xong/dừng.
Khi AI nghe được nội dung, khung trả lời fill transcript vào câu/skeleton để user biết hệ thống đã nghe gì.
Nếu sai, khung trả lời chuyển trạng thái lỗi và AI nêu rõ cần sửa gì, ví dụ: Bạn hãy trả lời bằng tiếng Anh nhé. Hãy thử đọc "that will be psychology" nhé.
Nếu đúng, khung trả lời chuyển trạng thái đúng và AI tự động chuyển câu tiếp theo sau feedback ngắn.
F3 - Đổi cấu trúc linh hoạt (CHỈ áp dụng Chế độ Khó)
Scope: Đây là behavior riêng của Chế độ Khó - vì Khó cho user tự chọn cấu trúc (không có skeleton cho sẵn). Mode Dễ KHÔNG có behavior này; nói khác skeleton = báo “không bám cấu trúc gợi ý” + retry.
Trong Chế độ Khó, nếu học viên nói cấu trúc khác so với gợi ý option chips → AI check trong kho knowledge base:
Hợp lệ: Accept cấu trúc khác + voice feedback “DOL thấy em đã dùng một cấu trúc Why khác so với gợi ý, nhưng cũng rất hay nè.” → chuyển câu mới (không cần active option).
Không hợp lệ: Báo lỗi + bắt nói lại với cấu trúc khác hoặc dùng option gợi ý.
F4 - Pronunciation Feedback (Popup luyện phát âm) - 🔮 FUTURE / chưa triển khai
Trạng thái hiện tại: chưa làm tính năng này. Giữ spec ở đây làm reference cho roadmap. Cuối mỗi câu hiện tại chỉ check (cấu trúc + đề bài + ngôn ngữ + độ dài), KHÔNG check phát âm. Tính năng pronunciation feedback sẽ là phase sau (cả Mode Dễ + Khó).
Khi triển khai sẽ là:
Cuối mỗi câu, AI tự động check phát âm:
Phát âm ổn: Chỉ feedback ngắn → chuyển câu tiếp.
Phát âm dở: Mở popup luyện tập:
Hiện lại cấu trúc + thông tin đã nói, làm mờ xám các phần không thuộc cấu trúc.
Đi từng từ/cụm phát âm dở → Gemini voice cue: “Cùng DOL phát âm chữ part of nha.”
Cue âm thanh “tinh tinh” → học viên nói → AI feedback (ví dụ: “Nhớ nối âm giữa part và of nhé”).
Xong từ nào → tô xanh từ đó → chuyển sang từ tiếp.
Xong hết → đóng popup → quay về giao diện cũ → nói lại cả câu 1 lần nữa (round này tắt nhận xét phát âm, tô xanh hết khi nghe được → chuyển câu).
Karaoke: AI tô xanh từng phần cấu trúc khi nghe được
4
Bấm xong / hệ thống nhận hết câu
UI hiển thị transcript AI nghe được và chuyển Đang phân tích...
5a
- Đúng cấu trúc + đúng đề
Khung xanh + Gemini voice: “Tuyệt vời!” → tự động chuyển câu tiếp
5b
- Đúng cấu trúc nhưng từ điền lạc đề
Khung amber + Gemini: “Em đã bám đúng cấu trúc rồi, nhưng phần điền chưa khớp câu hỏi. Em thử nói lại với một [đối tượng đề bài] nhé.” → retry
5c
- Không bám cấu trúc gợi ý
Khung đỏ + Gemini: “Câu này chưa bám cấu trúc gợi ý. Em hãy nói theo [skeleton] nhé.” → retry
5d
- Sai ngôn ngữ (Việt thay vì Anh)
Khung đỏ + “Bạn hãy trả lời bằng tiếng Anh nhé.” → retry
5e
- Câu quá ngắn / thiếu phần điền
Khung đỏ nhẹ + “Câu này còn hơi ngắn. Thêm ý để câu rõ hơn nhé.” → retry
Không có ở Chế độ Dễ:
Dùng cấu trúc khác (hợp lệ hay không hợp lệ) - đó là phạm vi Chế độ Khó. Nếu user nói khác skeleton trong Easy → fallback về case 5c “không bám cấu trúc gợi ý”.
Pronunciation feedback / popup luyện phát âm - 🔮 chưa triển khai (cả 2 chế độ). Sẽ là roadmap future.
Trạng thái hiện tại: tính năng chưa làm. Bảng dưới giữ làm reference cho roadmap. Hiện tại không check phát âm sau câu nói - chuyển câu tiếp ngay khi pass các check khác (cấu trúc + đề + ngôn ngữ + độ dài).
Bước
User làm gì
Hệ thống/AI phản hồi
1
Nhìn popup (câu đã nói, mờ phần không cấu trúc)
Gemini: “Cùng DOL phát âm chữ [từ] nha. [từ].“
2
Nói từ đó
Cue “tinh tinh” → AI check
2a
- Đúng
Tô xanh từ đó → chuyển từ tiếp
2b
- Sai
Gemini feedback cách phát âm → nói lại
3
Lặp cho tất cả từ dở
Từng từ tô xanh dần
4
Xong hết → popup đóng
Quay về giao diện cũ
5
Nói lại cả câu 1 lần nữa
Karaoke tô xanh hết (round này không nhận xét phát âm)
Karaoke highlight (chế độ Dễ) là function quan trọng nhất - không được bỏ qua.
Mode Dễ scope rất hẹp: chỉ check (1) bám skeleton có sẵn, (2) từ điền có khớp đề. KHÔNG accept user dùng cấu trúc khác (kể cả hợp lệ trong KB).
Cơ chế đổi cấu trúc linh hoạt (§F3) CHỈ áp dụng Chế độ Khó - vì Khó không có skeleton, user tự chọn structure.
🔮 Pronunciation feedback / popup luyện phát âm - CHƯA TRIỂN KHAI ở phase hiện tại (cả 2 chế độ). Sẽ là roadmap future. Hiện tại không check phát âm sau câu nói; chuyển câu tiếp ngay khi pass các check khác (cấu trúc + đề bài + ngôn ngữ + độ dài).
Mode Dễ và Khó khác nhau ở scope check, không chỉ mức hỗ trợ:
Dễ: bám skeleton + đúng đề (binary). Accept rất hẹp.
Khó: dùng option, hoặc cấu trúc Why khác hợp lệ trong KB. Accept rộng hơn.
Cả hai đều buộc user tự nói một câu hoàn chỉnh bằng tiếng Anh.
narrator_language không đổi ngôn ngữ câu trả lời; đây chỉ là ngôn ngữ hướng dẫn/feedback.
2026-04-26 (afternoon): Pronunciation feature deferred to roadmap (per user clarification: “ở dạng bài này cũng không có luyện phát âm luôn nhé. Chúng ta chưa làm tính năng này”). §F4 Pronunciation Feedback marked 🔮 FUTURE / chưa triển khai. Scene Flow Scene 4 marked future. User Actions Scene 2a row 5b “Đúng cấu trúc + phát âm dở” removed (now 5a “Đúng + đúng đề” → auto next). Scene 2b row 5d “Phát âm dở → Scene 4” marked future. AI Behavior Pronunciation section marked future. States Easy + States Khó “Pronunciation issue” + “Re-speak after popup” rows marked future. Completion & Scoring “phát âm dở” row marked future. Pronunciation Popup (Scene 4) layout section marked future-reserved. Gemini Voice Script + UI Message Catalog “phát âm dở” rows marked future. Lưu ý quan trọng updated to clarify pronunciation chưa làm.
2026-04-26 (morning): Phân định scope Easy vs Hard rõ ràng (correction từ user feedback Figma audit). §F1 Chế độ Dễ thêm bảng error sub-cases (không bám cấu trúc / lạc đề / sai ngôn ngữ / câu quá ngắn). §F3 “Đổi cấu trúc linh hoạt” scope về Hard mode only - vì Dễ không accept cấu trúc khác skeleton. Scene Flow 2a, User Actions 2a, AI Behavior table, Completion & Scoring, States table, Design Cases & Guardrails, Lưu ý quan trọng từ Brief - tất cả đều update để loại bỏ swap behavior khỏi Easy + thêm “lạc đề” case.
2026-04-24: Bổ sung flow chọn độ khó/ngôn ngữ narrator, skeleton fill ở mode Dễ, option chips ở mode Khó, transcript tracking, correct/incorrect states, active option, và guardrail cho các case thiết kế chính.
2026-04-21: Refresh Brief source path sau khi import tài liệu vào Speaking/.
2026-04-08: Rewrite theo Brief PDF - bổ sung 2 chế độ (Dễ/Khó), Scene Flow, Karaoke highlight, Pronunciation Popup (Scene 4), Gemini voice scripts, đổi cấu trúc linh hoạt.
2026-04-06: Rewrite - bổ sung Features, User Actions, AI Behavior, Completion & Scoring.