Skip to content

Sửa giọng chồng tiếng trong tour, thêm nút loa tắt/bật - #47

Merged
thuyhuongctu merged 1 commit into
mainfrom
claude/session-01ph4x7vxg6tyhznhpwahjuw-lq1f85
Nov 9, 2026
Merged

thuyhuongctu merged 1 commit into
mainfrom
claude/session-01ph4x7vxg6tyhznhpwahjuw-lq1f85

Conversation

@thuyhuongctu

Copy link
Copy Markdown
Owner

Tóm tắt

Cô báo "vừa có âm thanh tôi và hệ thống" — vừa nghe thấy giọng thật lẫn giọng máy chồng lên nhau. Đã kiểm tra: site trên GitHub Pages đã đúng bản mới nhất (v55, đủ 12/12 bước, CO_THU_AM bật cả hai ngôn ngữ), nên không phải lỗi thiếu tệp hay chưa cập nhật — tìm ra một lỗi khác trong tour.js.

Lỗi chồng tiếng

Bấm Tiếp/Trước (hoặc bước tự động chuyển) trong lúc bản thu đang phát sẽ đổi tieng.src sang tệp mới trong khi lượt phát cũ chưa kết thúc. Lời hứa (Promise) của play() lượt cũ bị huỷ ngang (AbortError), và .catch() cũ coi đó là "không phát được" nên gọi giọng máy đọc nốt câu CŨ — trong khi bản thu MỚI vẫn đang phát bình thường. Hai giọng chồng nhau.

Sửa bằng bộ đếm thế hệ: mỗi lượt gọi doc_buoc() tăng một số thế hệ riêng; mọi callback của lượt đó (onended, onerror, .catch() của play(), onend của giọng máy) tự so lại số thế hệ hiện tại trước khi hành động — lượt đã bị lượt mới đè lên thì im lặng.

Đã kiểm bằng Playwright: giả lập bấm "Tiếp" liên tục, thật nhanh, qua hết 11 bước — trước khi sửa dễ tái hiện giọng chồng nhau qua các bước; sau khi sửa không còn phép nào ghi nhận giọng máy xen vào lúc bản thu đang phát.

Thêm nút loa (theo yêu cầu riêng)

Nút 🔊/🔇 cạnh nút đóng trong bảng tour — người học tự tắt hẳn giọng đọc (chỉ còn hiện chữ, tour vẫn tự chuyển bước theo nhịp cố định) và bật lại bất cứ lúc nào. Nhớ lựa chọn qua localStorage.

Kiểm tra

python3 tests/kiem_tra.py — 25/26 đạt (1 lỗi quen thuộc do Chromium máy làm việc, không liên quan). Đã chụp màn hình nút loa ở cả nền sáng/tối và màn 390px.


Generated by Claude Code

Sửa lỗi: bấm Tiếp/Trước (hoặc bước tự chuyển) trong lúc bản thu đang
phát đổi tệp mới nhưng không huỷ sạch lượt phát cũ — lời hứa play() cũ
bị huỷ ngang (AbortError), rơi về giọng máy đọc nốt câu CŨ trong khi bản
thu MỚI vẫn đang phát, nghe thành hai giọng chồng nhau. Thêm bộ đếm thế
hệ: mỗi lượt gọi doc_buoc() tăng số thế hệ, các callback (onended,
onerror, catch của play(), onend của giọng máy) tự so lại trước khi làm
gì — lượt bị lượt mới đè lên thì im lặng, không tự fallback nữa. Đã
kiểm bằng Playwright: bấm Tiếp liên tục qua hết 11 bước không còn giọng
máy xen vào lúc nào.

Thêm nút loa (🔊/🔇) cạnh nút đóng trong bảng tour, theo yêu cầu: người
học tự tắt hẳn giọng đọc (cả bản thu lẫn giọng máy, chỉ còn hiện chữ) và
bật lại bất cứ lúc nào, tour vẫn tự chuyển bước theo nhịp cố định khi
tắt tiếng. Nhớ lựa chọn qua localStorage.

Bump PHIEN_BAN.
@thuyhuongctu
thuyhuongctu marked this pull request as ready for review November 9, 2026 11:05
@thuyhuongctu
thuyhuongctu merged commit 4d90c49 into main Nov 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant