Wav2vec2 Vi Pronunciation Onnx
Mô hình phân loại phát âm tiếng Việt (Miền Nam) — phân biệt phát âm đúng và phát âm sai cho các phụ âm D/R/GI.
Modellquelle
- Art
- Other
- Dateigröße
- 2,37 MB
- Basismodell
- nguyenvulebinh/wav2vec2-large-vi-vlsp2020
- Version
- vRevision 9bd8c7a
- Aktualisiert
- 22. Sept. 2026
- Downloads
- 5
- Quelle
- Hugging Face
Quellenbeschreibung
🎤 Vietnamese Pronunciation Classifier (ONNX)
Mô hình phân loại phát âm tiếng Việt (Miền Nam) — phân biệt phát âm đúng và phát âm sai cho các phụ âm D/R/GI.
Model Details
| Attribute | Value |
|---|---|
| Base Model | wav2vec2-large-vi-vlsp2020 |
| Format | ONNX (cross-platform) |
| Task | Binary Classification (correct / wrong) |
| Language | Vietnamese (Southern dialect) |
| Sample Rate | 16 kHz |
| Audio Duration | 500ms per sample |
| Validation Accuracy | 80.3% |
| ONNX Opset | 14 |
Classes
| Label | Class ID | Description |
|---|---|---|
✅ correct | 0 | Phát âm đúng |
❌ wrong | 1 | Phát âm sai (nhầm D/R/GI) |
Quick Start — ONNX Runtime
pip install onnxruntime librosa numpy
import numpy as np
import librosa
import onnxruntime as ort
from huggingface_hub import hf_hub_download
# 1. Download model
repo_id = "Bao2311/wav2vec2-vi-pronunciation-onnx"
onnx_path = hf_hub_download(repo_id, "phoneme_classifier.onnx")
data_path = hf_hub_download(repo_id, "phoneme_classifier.onnx.data")
# 2. Load ONNX session
session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"])
# 3. Load & preprocess audio (16kHz, 500ms)
audio, _ = librosa.load("your_audio.wav", sr=16000, mono=True)
audio = audio[:8000] # crop to 500ms = 8000 samples
if len(audio) < 8000:
audio = np.pad(audio, (0, 8000 - len(audio)))
# 4. Normalize
audio = audio.astype(np.float32)
mean, std = audio.mean(), audio.std()
if std > 0:
audio = (audio - mean) / std
# 5. Inference
input_values = audio.reshape(1, -1)
logits = session.run(None, {"input_values": input_values})[0][0]
# 6. Softmax → prediction
exp_logits = np.exp(logits - np.max(logits))
probs = exp_logits / exp_logits.sum()
pred = int(np.argmax(probs))
labels = {0: "correct ✅", 1: "wrong ❌"}
print(f"Prediction: {labels[pred]} (confidence: {probs[pred]:.1%})")
Files
| File | Size | Description |
|---|---|---|
phoneme_classifier.onnx | ~2.5 MB | ONNX model graph |
phoneme_classifier.onnx.data | ~1.2 GB | Model weights (external data) |
config.json | <1 KB | Model configuration |
preprocessor_config.json | <1 KB | Feature extractor config |
Training Details
- Base model:
nguyenvulebinh/wav2vec2-large-vi-vlsp2020 - Epochs: 10
- Batch Size: 4
- Learning Rate: 1e-4
- Optimizer: AdamW
- Loss: CrossEntropyLoss
- Frozen layers: Wav2Vec2 feature extractor + first 8 encoder layers
Limitations
- Chỉ hỗ trợ tiếng Việt (giọng Miền Nam)
- Tối ưu cho audio 500ms, 16kHz mono
- Binary classification (đúng/sai), chưa phân loại chi tiết loại lỗi
License
Apache 2.0
Quellen
1 Quelle
Quellen
1 QuelleVerifiziert 6. Sept.
Modellartefakte
1 Artefakt
Modellartefakte
1 ArtefaktQuellenauszüge
2 Auszüge
Quellenauszüge
2 Auszüge--- language: - vi license: apache-2.0 tags: - onnx - wav2vec2 - audio-classification - pronunciation - vietnamese - speech pipeline_tag: audio-classification library_name: onnxruntime base_model: nguyenvulebinh/wav2vec2-large-vi-vlsp2020 model-index: - name: wav2vec2-vi-pronunciation-onnx results: - task: type: audio-classification name: Audio Classification metrics: - type: accuracy value: 80.3 name: Validation Accuracy --- # 🎤 Vietnamese Pronunciation Classifier (ONNX) Mô hình phân loại phát âm tiếng Việt (Miền Nam) — phân biệt **phát âm đúng** và **phát âm sai** cho các phụ âm D/R/GI. ## Model Details | Attribute | Value | |-----------|-------| | **Base Model** | [wav2vec2-large-vi-vlsp2020](https://huggingface.co/nguyenvulebinh/wav2vec2-large-vi-vlsp2020) | | **Format** | ONNX (cross-platform) | | **Task** | Binary Classification (correct / wrong) | | **Language** | Vietnamese (Southern dialect) | | **Sample Rate** | 16 kHz | | **Audio Duration** | 500ms per sample | | **Validation Accuracy** | 80.3% | | **ONNX Opset** | 14 | ## Classes | Label | Class ID | Description | |-------|----------|-------------| | ✅ `correct` | 0 | Phát âm đúng | | ❌ `wrong` | 1 | Phát âm sai (nhầm D/R/GI) | ## Quick Start — ONNX Runtime ```bash pip install onnxruntime librosa numpy ``` ```python import numpy as np import librosa import onnxruntime as ort from huggingface_hub import hf_hub_download # 1. Download model repo_id = "Bao2311/wav2vec2-vi-pronunciation-onnx" onnx_path = hf_hub_download(repo_id, "phoneme_classifier.onnx") data_path = hf_hub_download(repo_id, "phoneme_classifier.onnx.data") # 2. Load ONNX session session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"]) # 3. Load & preprocess audio (16kHz, 500ms) audio, _ = librosa.load("your_audio.wav", sr=16000, mono=True) audio = audio[:8000] # crop to 500ms = 8000 samples if len(audio) < 8000: audio = np.pad(audio, (0, 8000 - len(audio))) # 4. Normalize audio = audio.astype(np.float32) mean, std = audio.mean(), audio.std() if std > 0: audio = (audio - mean) / std # 5. Inference input_values = audio.reshape(1, -1) logits = session.run(None, {"input_values": input_values})[0][0] # 6. Softmax → prediction exp_logits = np.exp(logits - np.max(logits)) probs = exp_logits / exp_logits.sum() pred = int(np.arg...
Source context: 5 downloads · 0 likes · Pipeline audio-classification · Library onnxruntime · Repo Bao2311/wav2vec2-vi-pronunciation-onnx
