From d06958d7d67dfdf33fa1085cf38be908fa11ae6a Mon Sep 17 00:00:00 2001 From: Jason Mak Date: Fri, 21 Aug 2026 12:28:47 +0800 Subject: [PATCH 1/3] fix(en-tn): verbalize plural time unit abbreviations (mins/hrs/secs) en/data/measure/unit.tsv maps the singular abbreviations min, sec, hr to their spoken forms, but not the plural written forms mins, hrs, secs. Since measure normalization only fires when the written token is recognized as a unit, the plural forms pass through unverbalized: '5 mins' -> 'five mins' (should be 'five minutes') '2-3 mins' -> 'two - three mins' (should be 'two to three minutes') The range case is the more visible failure: the measure range rule can't fire either, so the hyphen from '2-3' is left in the output -- for TTS this renders as silence. No grammar change is needed. MeasureFst already derives the spoken plural from the singular value via graph_unit_plural = convert_space(graph_unit @ SINGULAR_TO_PLURAL) (taggers/measure.py), so a plural written key only needs a row mapping to the existing singular spoken form -- the same pattern already used for 'lbs -> pound'. Fixes #477 Signed-off-by: Jason Mak --- .../text_normalization/en/data/measure/unit.tsv | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nemo_text_processing/text_normalization/en/data/measure/unit.tsv b/nemo_text_processing/text_normalization/en/data/measure/unit.tsv index 6a3ad687d..83d703c63 100644 --- a/nemo_text_processing/text_normalization/en/data/measure/unit.tsv +++ b/nemo_text_processing/text_normalization/en/data/measure/unit.tsv @@ -128,6 +128,9 @@ zb ZB sec second min minute hr hour +mins minute +hrs hour +secs second d day wk week mo month From 2ee82c1435d48f88f855fcd117144828cdaec603 Mon Sep 17 00:00:00 2001 From: Jason Mak Date: Fri, 21 Aug 2026 17:02:12 +0800 Subject: [PATCH 2/3] fix(en-tn): add kgs/wks/mos/yrs plural unit abbreviations Follow-up per review feedback: the same missing-plural-written-form bug affects kg/kgs, wk/wks, mo/mos, and yr/yrs, not just the min/sec/hr family fixed in the previous commit. Scoped to these four specifically, not a mechanical sweep of every abbreviation in the file: kgs mirrors the already-existing lbs -> pound precedent (mass units commonly get colloquial 's' plurals despite SI style guides discouraging it), and wks/mos/yrs are the same casual time-count family as mins/hrs/secs. Left the SI symbol portion of the file (km, mm, GB, kW, etc.) untouched, since those are not commonly written with a colloquial 's' plural the way day/week/month/year/ hour/minute/second/pound/kilogram are. Signed-off-by: Jason Mak --- .../text_normalization/en/data/measure/unit.tsv | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nemo_text_processing/text_normalization/en/data/measure/unit.tsv b/nemo_text_processing/text_normalization/en/data/measure/unit.tsv index 83d703c63..71b916285 100644 --- a/nemo_text_processing/text_normalization/en/data/measure/unit.tsv +++ b/nemo_text_processing/text_normalization/en/data/measure/unit.tsv @@ -31,6 +31,7 @@ kbps kilobit per second kcal kilo calory kgf kilogram force kg kilogram +kgs kilogram khz kilohertz km2 square kilometer km² square kilometer @@ -133,6 +134,9 @@ hrs hour secs second d day wk week +wks week mo month +mos month yr year +yrs year svc service \ No newline at end of file From 2f5d3ecdc04cc4ef1a8b1b83f8179cb66db704fa Mon Sep 17 00:00:00 2001 From: JMAK-Security Date: Mon, 5 Oct 2026 11:35:13 +0800 Subject: [PATCH 3/3] test(en-tn): add regression cases for plural unit abbreviations Covers mins/hrs/secs/kgs/wks/mos/yrs plus singular controls, so the plural verbalization added in this PR is locked in and any future regression in the measure tagger surfaces immediately. Verified: pytest tests/nemo_text_processing/en/test_measure.py --cpu reports 268 passed, 0 failed (253 pre-existing + 15 new). Signed-off-by: JMAK-Security --- .../test_cases_measure.txt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/nemo_text_processing/en/data_text_normalization/test_cases_measure.txt b/tests/nemo_text_processing/en/data_text_normalization/test_cases_measure.txt index c1981829f..6cb82516c 100644 --- a/tests/nemo_text_processing/en/data_text_normalization/test_cases_measure.txt +++ b/tests/nemo_text_processing/en/data_text_normalization/test_cases_measure.txt @@ -18,4 +18,19 @@ covid-19.5~covid- nineteen point five 45º&C~forty five degree and C 41,459.00 km³~forty one thousand four hundred and fifty nine point zero zero cubic kilometers Nancy lived on 1428 Elm St.~Nancy lived on fourteen twenty eight Elm Street -Nancy lived on 1428 Elm St. It was a strange place.~Nancy lived on fourteen twenty eight Elm Street. It was a strange place. \ No newline at end of file +Nancy lived on 1428 Elm St. It was a strange place.~Nancy lived on fourteen twenty eight Elm Street. It was a strange place. +5 mins~five minutes +2 hrs~two hours +30 secs~thirty seconds +3 kgs~three kilograms +2 wks~two weeks +6 mos~six months +5 yrs~five years +2-3 mins~two to three minutes +5 min~five minutes +2 hr~two hours +1 sec~one second +3 kg~three kilograms +2 wk~two weeks +6 mo~six months +5 yr~five years \ No newline at end of file