Content Admin Lite
Tải template Excel mẫu, upload file .xlsx để validate + convert, rồi tải JSON về commit.
🌱 Thông tin phát hành
Website phục vụ tự học cho học sinh tiểu học lớp 3–5, phát hành phiên bản 1.0 ngày 14/02/2026 cho bạn Đỗ Nhật Minh (Lớp SN3A, Trường Tiểu học Ngọc Linh) tự luyện tập.
❓ Liên hệ góp ý, nâng cao chất lượng Website?
Share liên hệ để hoàn thiện, bổ sung chất lượng các bài học:
📧 Email: bach.eps@gmail.com
📱 SĐT: 0969.5969.89 (Bố Nhật Minh)
🔊 English Audio CLI (Azure Speech)
Convert audio cho quiz_grammar.json + quiz_vocabulary.json theo mode incremental bằng manifest hash (engine: Azure Speech).
PHASE 5/6 Lite
🔊 English Audio CLI (Azure Speech)
Convert audio cho quiz_grammar.json + quiz_vocabulary.json theo mode incremental bằng manifest hash (engine: Azure Speech).
1) Quick start (làm theo đúng thứ tự)
set AZURE_SPEECH_KEY=<your_key> và set AZURE_SPEECH_REGION=<your_region> (CMD)
$env:AZURE_SPEECH_KEY="<your_key>" và $env:AZURE_SPEECH_REGION="<your_region>" (PowerShell)
npm run audio:voices — xem voice preset nhanh
npm run audio:gen:dry — chạy thử, không ghi file
npm run audio:gen -- --voice=en-US-GuyNeural --rate=-8% --fill-rate=-20% --retry=4 --retry-delay-ms=2000 --sleep-ms=300 — generate thật toàn bộ pending
Nếu dữ liệu rất lớn, dùng batch: thêm --limit=20. Mỗi lần chạy sẽ lấy 20 câu pending tiếp theo (không lặp 20 câu đầu).
2) Ý nghĩa tham số dễ nhớ
--voice=en-US-GuyNeural: giọng Mỹ nam--rate=-8%: chậm hơn 8% cho câu thường--fill-rate=-20%: chậm hơn 20% cho câufill_blank--limit=20: chạy theo lô 20 câu pending/lần--retry,--retry-delay-ms,--sleep-ms: giảm lỗi 403/rate-limit
3) Nếu gặp lỗi 403
- Đổi voice:
en-US-ChristopherNeuralhoặcen-US-EricNeural - Giảm tải: thêm
--limit=20(batch theo pending) - Chờ 1–3 phút rồi chạy lại
- Dùng retry/backoff:
--retry=4 --retry-delay-ms=2000 --sleep-ms=300 - Khi log báo
Pending generate: 0là đã xong toàn bộ.
4) Output + incremental policy
- Không cần tự tạo thư mục audio (script tự tạo).
- Audio file:
public/audio/english/grammar/<id>.mp3vàpublic/audio/english/vocabulary/<id>.mp3 - Manifest:
content/english/audio_manifest.json - ID mới hoặc hash đổi → generate; hash không đổi + file tồn tại → skip
- Prompt có blank dạng
____hoặc bất kỳ chuỗi_{2,}đều được đọc bằng pause (không đọc "underscore"); riêngfill_blankđọc chậm hơn.
🔍 Tùy chọn kiểm tra chất lượng:
Mặc định: tích hết. Bỏ tích rule không cần để bỏ qua cảnh báo.
Không ghi file lên server. Kết quả dùng để tải JSON về máy.