Skip to content

Add project_input support for english including tests #314

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

FredHaa
Copy link

@FredHaa FredHaa commented Aug 15, 2025

What does this PR do ?

This PR aims to add a feature which enables projection of the input to the output string.

E.g., when project_input is enabled, running ITN on the string "the road is one kilometer long" produces the output "the road is [1 km][one kilometer] long". Here the content in the left square bracket is the inverse normalized output, and the content in the right bracket which lead to the output.

This is useful in e.g. speech pipelines where ITN is used for processing the output of an ASR model, and correct word level timestamps are required of the processed output. While it is possible to align the input with the output using the fst_alignment script in the repo, this is not as robust as directly computing the input, together with the output, using the fst.

Currently, only English has been pushed, but I have it mostly working in all languages. Decided to keep the PR small initially, to make it easier to review. A full PR with support for all languages will touch most of the files in the repo.

All tests aren't currently passing, but I am working on it. The primary purpose of this PR is to gauge if this has interest for the larger community, or if I should just maintain a fork with project_input support.

The method currently relies on a custom input tag, which isn't supported by sparrowhawk. I would like to add sparrowhawk support, but currently am not sure how.

Before your PR is "Ready for review"

Pre checks:

  • Have you signed your commits? Use git commit -s to sign.
  • Do all unittests finish successfully before sending PR?
    1. pytest or (if your machine does not have GPU) pytest --cpu from the root folder (given you marked your test cases accordingly @pytest.mark.run_only_on('CPU')).
    2. Sparrowhawk tests bash tools/text_processing_deployment/export_grammars.sh --MODE=test ...
  • If you are adding a new feature: Have you added test cases for both pytest and Sparrowhawk here.
  • Have you added __init__.py for every folder and subfolder, including data folder which has .TSV files?
  • Have you followed codeQL results and removed unused variables and imports (report is at the bottom of the PR in github review box) ?
  • Have you added the correct license header Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. to all newly added Python files?
  • If you copied nemo_text_processing/text_normalization/en/graph_utils.py your header's second line should be Copyright 2015 and onwards Google, Inc.. See an example here.
  • Remove import guards (try import: ... except: ...) if not already done.
  • If you added a new language or a new feature please update the NeMo documentation (lives in different repo).
  • Have you added your language support to tools/text_processing_deployment/pynini_export.py.

PR Type:

  • New Feature
  • Bugfix
  • Documentation
  • Test

If you haven't finished some of the above items you can still open "Draft" PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant