IP Library Granted Patent US 12,353,839
Granted Patent B2
US 12,353,839 · App. 17/693,267 · Granted Jul 8, 2025

On-device streaming inverse text normalization (ITN)

Inventors: Yashesh Gaur (Redmond, WA); Nicholas Kibre (Redwood City, CA); Issac J. Alphonso (San Jose, CA); Jian Xue (Bellevue, WA); Jinyu Li (Sammamish, WA); Piyush Behre (Santa Clara, CA); Shuangyu Chang (Davis, CA)
Assignee: Microsoft Technology Licensing, LLC
G06F40/56G06F40/284G10L15/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,353,839
App. No.
17/693,267
Granted
Jul 8, 2025
Kind
B2
Abstract

Solutions for on-device streaming inverse text normalization (ITN) include: receiving a stream of tokens, each token representing an element of human speech; tagging, by a tagger that can work in a streaming manner (e.g., a neural network), the stream of tokens with one or more tags of a plurality of tags to produce a tagged stream of tokens, each tag of the plurality of tags representing a different normalization category of a plurality of normalization categories; based on at least a first tag representing a first normalization category, converting, by a first language converter of a plurality of category-specific natural language converters (e.g., weighted finite state transducers, WFSTs), at least one token of the tagged stream of tokens, from a first lexical language form, to a first natural language form; and based on at least the first natural language form, outputting a natural language representation of the stream of tokens.

Claims (47)

1. A system comprising:

a processor; and

a computer-readable medium storing instructions that are operative upon execution by the processor to:

receive a stream of tokens, each token representing an element of human speech;

chunk the stream of tokens;

tag, by a tagger, the stream of tokens with one or more tags of a plurality of tags to produce a tagged stream of tokens by chunks in a streaming manner, each tag of the plurality of tags representing a different normalization category of a plurality of normalization categories, wherein the tagger comprises a neural network using self-attention to compute representations of input and output;

detect, by each category-specific natural language converter of a plurality of category-specific natural language converters, each of the plurality of category-specific natural language converters comprising a weighted finite state transducer (WFST), from the tagged stream of tokens, a tag representing a normalization category of the plurality of normalization categories upon which each category-specific natural language converter is trained to operate, wherein each category-specific natural language converter is trained for a single normalization category of the plurality of normalization categories by each respective trainer of a plurality of trainers;

upon detecting a first tag representing a first normalization category, convert, by a first language converter of the plurality of category-specific natural language converters, a first token of the tagged stream of tokens, from a first lexical language form to a first natural language form, wherein the first language converter is trained to operate upon the first normalization category, and wherein the first token is associated with the first tag;

upon detecting a second tag representing a second normalization category, convert, in parallel with converting by the first language converter, by a second language converter of the plurality of category-specific natural language converters, a second token of the tagged stream of tokens from a second lexical language form to a second natural language form, wherein the second language converter is trained to operate upon the second normalization category, and wherein the second token is associated with the second tag; and

based on at least the first natural language form, output a natural language representation of the stream of tokens.

2. The system of claim 1 , wherein the instructions are further operative to:

determine a chunk size, wherein the stream of tokens is chunked according to the chunk size.

3. The system of claim 1 , wherein the stream of tokens is obtained from a live speech, and wherein outputting the natural language representation comprises outputting the natural language representation as a streaming output.

4. The system of claim 1 , wherein tagging and converting are performed locally without transmitting data to a remote node.

5. The system of claim 1 , wherein the plurality of category-specific natural language converters comprises at least two natural language converters selected from a category list consisting of:

address, location, time, date, currency, decimal, fraction, email, internet address, and math.

6. The system of claim 1 , wherein chunking the stream of tokens comprises dynamically determining a number of tokens per chunk.

7. A method comprising:

receiving a stream of tokens, each token representing an element of human speech;

chunking the stream of tokens;

tagging, by a tagger, the stream of tokens with one or more tags of a plurality of tags to produce a tagged stream of tokens by chunks in a streaming manner, each tag of the plurality of tags representing a different normalization category of a plurality of normalization categories, wherein the tagger comprises a neural network using self-attention to compute representations of input and output;

detecting, by each category-specific natural language converter of a plurality of category-specific natural language converters, each of the plurality of category-specific natural language converters comprising a weighted finite state transducer (WFST), from the tagged stream of tokens, a tag representing a normalization category of the plurality of normalization categories upon which each category-specific natural language converter is trained to operate, wherein each category-specific natural language converter is trained for a single normalization category of the plurality of normalization categories by each respective trainer of a plurality of trainers;

upon detecting a first tag representing a first normalization category, converting, by a first language converter of the plurality of category-specific natural language converters, a first token of the tagged stream of tokens, from a first lexical language form to a first natural language form, wherein the first language converter is trained to operate upon the first normalization category, and wherein the first token is associated with the first tag;

upon detecting a second tag representing a second normalization category, converting, in parallel with converting by the first language converter, by a second language converter of the plurality of category-specific natural language converters, a second token of the tagged stream of tokens from a second lexical language form to a second natural language form, wherein the second language converter is trained to operate upon the second normalization category, and wherein the second token is associated with the second tag; and

based on at least the first natural language form and the second natural language form, outputting a natural language representation of the stream of tokens.

8. The method of claim 7 , further comprising:

determining a chunk size, wherein the stream of tokens is chunked according to the chunk size.

9. The method of claim 7 , wherein the stream of tokens is obtained from a live speech, and wherein outputting the natural language representation comprises outputting the natural language representation as a streaming output.

10. The method of claim 7 , wherein tagging and converting are performed locally without transmitting data to a remote node.

11. The method of claim 7 , wherein the plurality of category-specific natural language converters comprises at least two natural language converters selected from a category list consisting of:

address, location, time, date, currency, decimal, fraction, email, internet address, and math.

12. The method of claim 7 , wherein chunking the stream of tokens comprises dynamically determining a number of tokens per chunk.

13. One or more computer storage devices having computer-executable instructions stored thereon, which, on execution by a computer, cause the computer to perform operations comprising:

receiving a stream of tokens, each token representing an element of human speech;

chunking the stream of tokens;

tagging, by a tagger, the stream of tokens with one or more tags of a plurality of tags to produce a tagged stream of tokens by chunks in a streaming manner, each tag of the plurality of tags representing a different normalization category of a plurality of normalization categories, wherein the tagger comprises a neural network using self-attention to compute representations of input and output;

detecting, by each category-specific natural language converter of a plurality of category-specific natural language converters, each of the plurality of category-specific natural language converters comprising a weighted finite state transducer (WFST), from the tagged stream of tokens, a tag representing a normalization category of the plurality of normalization categories upon which each category-specific natural language converter is trained to operate, wherein each category-specific natural language converter is trained for a single normalization category of the plurality of normalization categories by each respective trainer of a plurality of trainers;

upon detecting a first tag representing a first normalization category, converting, by a first language converter of the plurality of category-specific natural language converters, a first token of the tagged stream of tokens, from a first lexical language form to a first natural language form, wherein the first language converter is trained to operate upon the first normalization category, and wherein the first token is associated with the first tag;

upon detecting a second tag representing a second normalization category, convert, in parallel with converting by the first language converter, by a second language converter of the plurality of category-specific natural language converters, a second token of the tagged stream of tokens from a second lexical language form to a second natural language form, wherein the second language converter is trained to operate upon the second normalization category, and wherein the second token is associated with the second tag; and

based on at least the first natural language form and the second natural language form, outputting a natural language representation of the stream of tokens.

14. The one or more computer storage devices of claim 13 , wherein the operations further comprise:

determining a chunk size, wherein the stream of tokens is chunked according to the chunk size.

15. The one or more computer storage devices of claim 13 , wherein the stream of tokens is obtained from a live speech, and wherein outputting the natural language representation comprises outputting the natural language representation as a streaming output.

16. The one or more computer storage devices of claim 13 , wherein tagging and converting are performed locally without transmitting data to a remote node.

17. The one or more computer storage devices of claim 13 , wherein the plurality of category-specific natural language converters comprises at least two natural language converters selected from a category list consisting of:

address, location, time, date, currency, decimal, fraction, email, internet address, and math.

18. The one or more computer storage devices of claim 13 , wherein chunking the stream of tokens comprises dynamically determining a number of tokens per chunk.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2022
From: GAUR, YASHESH; KIBRE, NICHOLAS; ALPHONSO, ISSAC J.; XUE, JIAN; LI, JINYU; BEHRE, PIYUSH; CHANG, SHUANGYU
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059509/0868 →
Continuity (1)
Related Publication 20230289536A1 · Sep 14, 2023
References Cited (12)
US 20090157385A1 · Tian · 2009 [cited by examiner]
US 20190278841A1 · Pusateri · 2019 [cited by examiner]
US 20220229993A1 · Vu · 2022 [cited by examiner]
Garg A, Vadisetti GP, Gowda D, Jin S, Jayasimha A, Han Y, Kim J, Park J, Kim K, Kim S, Lee YY. Streaming On-Device End-to-End ASR System for Privacy-Sensitive Voice-Typing. In Interspeech 2020 (pp. 3371-3375). (Year: 20… [cited by examiner]
Zhang Y, Bakhturina E, Gorman K, Ginsburg B. Nemo inverse text normalization: From development to production. arXiv preprint arXiv:2104.05055. Apr. 11, 2021. (Year: 2021). [cited by examiner]
Ebden P, Sproat R. The Kestrel TTS text normalization system. Natural Language Engineering. May 2015;21(3):333-53. (Year: 2015). [cited by examiner]
Gorman K, Sproat R. Minimally supervised number normalization. Transactions of the Association for Computational Linguistics. Nov. 1, 2016;4:507-19. (Year: 2016). [cited by examiner]
Sunkara M, Shivade C, Bodapati S, Kirchhoff K. Neural inverse text normalization. In ICASSP 2021-2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) Jun. 6, 2021 (pp. 7573-7577). IEEE.… [cited by examiner]
Lai, et al., “A Unified Transformer-based Framework for Duplex Text Normalization”, In repository of arXiv:2108.09889v1, Aug. 23, 2021, 5 Pages. [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US22/054039”, Mailed Date: Apr. 4, 2023, 12 Pages. [cited by applicant]
Pusateri, et al., “A Mostly Data-driven Approach to Inverse Text Normalization”, In Proceedings of 18th Annual Conference of the International Speech Communication Association, Aug. 20, 2017, pp. 2784-2788. [cited by applicant]
Zhang, et al., “NeMo Inverse Text Normalization: From Development To Production”, In repository of arXiv:2104.05055v2, May 17, 2021, 5 Pages. [cited by applicant]