Vietnamese Zipformer (Sherpa-ONNX / INT8)
Repository này chứa model Zipformer đã được fine-tune cho tác vụ nhận dạng tiếng Việt, đặc biệt tối ưu cho môi trường thoại (telephony). Model đã được export sang định dạng ONNX (INT8 quantization) để tối ưu hóa tốc độ inference bằng thư viện Sherpa-ONNX.
Chi tiết Model
- Kiến trúc: Zipformer (Transducer)
- Framework huấn luyện: icefall / k2
- Độ chính xác: INT8 (Quantized từ FP32) - Giúp giảm kích thước và tăng tốc độ.
- Loại Model: Streaming-compatible (Hỗ trợ Chunk-based) / Offline Transducer.
- Tổng số tham số: ~291M (Encoder ~286M, Decoder ~2.3M, Joiner ~2M)
Nguồn gốc và Tinh chỉnh (Origins & Refinements)
Nguồn gốc (Original Work)
Mô hình này được phát triển dựa trên kiến trúc Zipformer từ repository mã nguồn mở k2-fsa/icefall. Chúng tôi chân thành cảm ơn cộng đồng k2-fsa đã cung cấp các công cụ và pre-trained models xuất sắc.
Các Tinh chỉnh của Hataphu (Our Refinements)
Phiên bản này không chỉ là bản convert đơn thuần, mà đã bao gồm các tối ưu hóa chuyên sâu cho tiếng Việt và môi trường thực tế:
- Fine-tuning Đa nguồn: Huấn luyện lại trên tập dữ liệu tổng hợp lớn (VLSP, FOSD, Infore, cuộc gọi tổng đài) để bắt được đa dạng giọng vùng miền.
- Thích nghi Môi trường Thoại (Telephony Adaptation): Tối ưu hóa đặc biệt với dữ liệu thoại, giúp model hoạt động tốt ngay cả với audio chất lượng thấp (8kHz, nhiễu).
- Tích hợp RNNLM Shallow Fusion: Huấn luyện riêng một mô hình ngôn ngữ RNNLM trên dữ liệu văn bản từ các dataset, giúp giảm WER đạt chất lượng cao hơn bằng kỹ thuật Shallow Fusion.
- Sửa lỗi Export ONNX: Đã patch lại logic export của Zipformer (
chunk_sizehandling) để khắc phục lỗi broadcasting khi chạy inference với độ dài chuỗi động, đảm bảo tính ổn định khi deploy.
Dữ liệu Huấn luyện
Model được fine-tune trên tập dữ liệu tổng hợp từ Hugging Face bao gồm:
- Thienpkae/Tele_vi: Dữ liệu thoại chuyên dụng (Telephony).
- doof-ferb/fpt_fosd: FPT Open Speech Data.
- doof-ferb/vlsp2020_vinai_100h: VLSP 2020 (VinAI).
- cosrigel/vn_tts_medium_clean: Dữ liệu giọng đọc sạch.
- undertheseanlp/uts2025_vietipa: Dữ liệu UTS2025 VietIPA.
Lời cảm ơn (Acknowledgments)
Chúng tôi xin gửi lời cảm ơn chân thành đến các đơn vị và cá nhân đã chia sẻ các bộ dữ liệu quý giá cho cộng đồng nghiên cứu tiếng Việt:
- VLSP
- VINAI
- FPT Smart Cloud
- doof-ferb (Phan Tuấn Anh)
- Tác giả Thienpkae (Dataset
Tele_vi) - Tác giả cosrigel (Dataset
vn_tts) - Tác giả undertheseanlp (Dataset
vietipa)
Sự đóng góp của quý vị là nền tảng quan trọng để phát triển các mô hình nhận dạng tiếng Việt chất lượng cao.
Hướng dẫn Sử dụng với Sherpa-ONNX
1. Cài đặt
pip install sherpa-onnx soundfile
2. Inference cơ bản (Nhanh nhất)
import sherpa_onnx
import soundfile as sf
def main():
recognizer = sherpa_onnx.OfflineRecognizer.from_transducer(
tokens="tokens.txt",
encoder="models/encoder.int8.onnx", # Hoặc encoder.onnx (FP32)
decoder="models/decoder.int8.onnx",
joiner="models/joiner.int8.onnx",
num_threads=1,
sample_rate=16000,
feature_dim=80,
decoding_method="greedy_search",
)
audio, sample_rate = sf.read("path/to/your/audio.wav")
s = recognizer.create_stream()
s.accept_waveform(sample_rate, audio)
recognizer.decode_stream(s)
print(f"Kết quả: {s.result.text}")
if __name__ == "__main__":
main()
3. Inference với RNNLM (Chính xác nhất)
Để đạt độ chính xác cao hơn (giảm WER), hãy kích hoạt RNNLM rescoring bằng modified_beam_search:
# ... (bên trong hàm main)
recognizer = sherpa_onnx.OfflineRecognizer.from_transducer(
# ... các tham số model như trên ...
decoding_method="modified_beam_search",
lm="models/rnnlm.onnx", # Đường dẫn đến file RNNLM
lm_scale=0.5, # Trọng số LM (thử nghiệm từ 0.3 đến 0.6)
)
Chạy bằng dòng lệnh (Script có sẵn):
python inference.py path/to/audio.wav --decoding-method modified_beam_search --rnnlm-scale 0.5
Kết quả Benchmark (Thực nghiệm)
Kết quả đánh giá trên các tập dữ liệu chuẩn (sử dụng sherpa-onnx):
| Dataset | Split | WER (%) | CER (%) |
|---|---|---|---|
| VLSP2020-Test-T1 | test | 5.73 | 4.13 |
| VLSP2023-PublicTest | test | 14.49 | 11.27 |
| GigaSpeech2 | test | 12.13 | 8.39 |
| Thienpkae/Vi_Tele_test | test | 13.36 | 10.23 |
*Cấu hình đánh giá: Modified Beam Search, RNNLM scale 0.3