diepduclai/VietENT-Text
VietENT-Text — Vietnamese ENT clinical sentence corpus 20,908 unique Vietnamese ear-nose-throat clinical sentences and a 235-term ENT catalogue, written to train and evaluate speech recognition on ENT consultations. from datasets import load_dataset ds = load_dataset("diepduclai/VietENT-Text", split="train") ds[0]["text"] Why this exists Vietnamese ASR handles general speech well and medical terminology badly, and the failures are the dangerous kind. Measured on… See the full description on the dataset page: https://huggingface.co/datasets/diepduclai/VietENT-Text.
VietENT-Text — Vietnamese ENT clinical sentence corpus
20,908 unique Vietnamese ear-nose-throat clinical sentences and a 235-term ENT catalogue, written to train and evaluate speech recognition on ENT consultations.
from datasets import load_dataset
ds = load_dataset("diepduclai/VietENT-Text", split="train")
ds[0]["text"]Why this exists
Vietnamese ASR handles general speech well and medical terminology badly, and the failures are the dangerous kind. Measured on this project's evaluation sets, Qwen/Qwen3-ASR-1.7B transcribes MOMETASON as "Sridharmitha Sen", NAPHAZOLIN as "nó fasilin", and NGHIỆM PHÁP WEBER as "nghiệm pháp web". On uncontaminated Vietnamese medical speech it recovers 43.9% of medical terms and 70.1% of numbers.
Numbers carry doses and durations. A dropped one turns "uống hai viên mỗi tám tiếng" into a sentence that still reads like a complete instruction.
Fields
Also in the repo: hotwords_catalogue_v2.txt (235 terms), and the generator ent_tts2.py / ent_terms_safety.py so the corpus can be rebuilt or extended.
How it was built, and why that matters
Every sentence is unique. The first version of this corpus had 986 sentences repeated about 19 times each; a model fine-tuned on it memorised the sentences and lost 6.6 WER points on general speech.
Quantities are randomised, not fixed per template — 83% of sentences carry a randomised dose, duration, count or percentage. A corpus where every dose is "hai lần một ngày" teaches the template, not the number.
Numbers are always written as words. Mixing "38,5 độ" and "ba mươi tám độ năm" into one corpus teaches a decoder two spellings for one sound. Vietnamese clinical speech says the temperature idiom as "ba mươi tám độ năm", not "ba mươi tám phẩy năm độ", and the corpus follows speech.
Contrastive laterality is forced. Where a sentence names two sides, the second is always the opposite of the first, so "bên phải … bên trái" appears as a real contrast rather than by chance.
Negation and laterality have dedicated templates per clinical group. Flipping one "không" costs 0.023% WER while inverting the clinical meaning, so no error-rate gate can see it. The corpus makes those tokens frequent enough to measure.
Terminology sourcing
The 235 terms are cross-checked against ICD-10 codes as published by the Vietnamese Ministry of Health, and cover drugs (with the spellings actually used in Vietnamese prescriptions), procedures, anatomy, pathology, symptoms, and the equipment names that appear in ENT clinic speech.
Limitations
These are written sentences, not transcripts. They are modelled on how ENT clinicians and patients speak, and they are checked for clinical plausibility, but they are not evidence of how any real consultation went. They contain no patient data of any kind.
Companion dataset
`diepduclai/VietENT-Speech` is 41,816 synthetic utterances of these sentences across 106 voices.
Citation
@misc{vietent2026,
title = {VietENT: a Vietnamese ENT clinical corpus for speech recognition},
author = {Diep Duc Lai},
year = {2026},
url = {https://huggingface.co/datasets/diepduclai/VietENT-Text}
}