Dự án triển khai và đánh giá năng lực của Mô hình Trí tuệ nhận tạo Wav2Vec2 trong bài toán nhận diện và chuyển đổi giọng nói Tiếng Việt sang văn bản (Speech-to-Text). Đặc biệt tối ưu độ trễ (latency) cho các nền tảng trả lời câu hỏi tự động.
📦 Dự_án_Lab_NITS
┣ 📂 configs # Cấu hình (.yaml, .env)
┣ 📂 src # Mã nguồn lõi (API, Core AI)
┃ ┣ 📂 api # Server FastAPI
┃ ┗ 📂 core # Logic AI & Post-processing
┣ 📂 tools # Công cụ bổ trợ (Benchmark, Tester)
┣ 📂 data # Dữ liệu (Audio, CSV)
┣ 📜 main.py # File chạy chính của server
┣ 📜 requirements.txt # Thư viện phụ thuộc
┗ 📜 .gitignore # Cấu hình GitYêu cầu hệ thống: Python 3.9+
B1. Khởi tạo môi trường ảo (Khuyên dùng)
python -m venv venv
venv\Scripts\activate # Đối với Windows
source venv/bin/activate # Đối với macOS/LinuxB2. Cài đặt toàn bộ thư viện cần thiết
pip install -r requirements.txt(Hệ thống sẽ tự động tải các gói liên quan đến FastAPI, Torch, Transformes, Graido, v.v...)
Dịch vụ Nhận diện Giọng nói được xây dựng trên bộ khung Web FastAPI mạnh mẽ. Nó lắng nghe ảnh âm thanh gửi tới và giải mã qua GPU/CPU với độ trễ tối ưu < 1s.
python main.py- Máy chủ sẽ chạy mặc định tại cổng mạng local:
http://127.0.0.1:8000 - Trạng thái truyền Tín Hiệu: Server-Sent Events (SSE) Stream.
Để dễ dàng Test giọng nói trực tiếp qua Microphone mà không cần kĩ năng Code, dự án cung cấp Giao diện tương tác dựa trên Gradio.
(Chắc chắn rằng bạn đã Mở API Server ở mục số 2 trước) Mở 1 Terminal mới và gõ:
python tools/live_tester.pyHệ thống sẽ tự động cung cấp đường link Web ảo, ví dụ http://127.0.0.1:7860.
Mẹo chia sẻ Online ra mạng Internet (Dành cho Developer/QA):
- Tunnel Giao diện:
npx localtunnel --port 7860(Gửi cho Tester test)- Tunnel API gốc:
ngrok http 8000(Gửi thẳng cho lập trình viên Backend khác test Code Postman)
Sử dụng kịch bản benmark.py để quét qua hàng loạt đoạn ghi âm File Audio có sẵn và lập Báo cáo Khoa Học về Độ Chính Xác. Hệ thống sẽ áp dụng thuật toán Levenshtein Distance (Thuật toán Quy hoạch động DP) để so sánh file mẫu với kết quả của AI.
python tools/benchmark.pyChỉ số đánh giá (Metrics) đạt được bao gồm:
- WER (Word Error Rate): Tỷ lệ lỗi mặt Chữ vựng
- CER (Character Error Rate): Tỷ lệ lỗi mặt Ký tự cái
- E2E Latency: Độ trễ Toàn trình khép kín
- Kết quả sẽ được xuất bảng ra tệp
benchmark_results.csv.
Nếu có nhu cầu đắp thêm dữ liệu để huấn luyện lên thành các phiên bản tốt hơn, hoặc đổi sang mô hình ngôn ngữ Lịch sử riêng:
Trong file server.py, đổi đường dẫn chỉ về thư mục Folder File của bạn, hoặc ID từ hệ thống lưu trữ HuggingFace:
# Ví dụ: Mô hình Finetuned đẩy lên kho
MODEL_ID = "ten-to-chuc-nits/ai-mo-hinh-version2"
processor = Wav2Vec2Processor.from_pretrained(MODEL_ID)
model = Wav2Vec2ForCTC.from_pretrained(MODEL_ID).to(device)-- By NITS Lab Team - 2026