# {py:mod}`abr_sdk.tts_preprocess`

```{py:module} abr_sdk.tts_preprocess
```

```{autodoc2-docstring} abr_sdk.tts_preprocess
:allowtitles:
```

## Module Contents

### Classes

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`NumberToWords <abr_sdk.tts_preprocess.NumberToWords>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords
    :summary:
    ```
* - {py:obj}`ItoNormalization <abr_sdk.tts_preprocess.ItoNormalization>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization
    :summary:
    ```
````

### Functions

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`unicode_normalization <abr_sdk.tts_preprocess.unicode_normalization>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.unicode_normalization
    :summary:
    ```
* - {py:obj}`remove_special_characters <abr_sdk.tts_preprocess.remove_special_characters>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.remove_special_characters
    :summary:
    ```
* - {py:obj}`spell_out_acronyms <abr_sdk.tts_preprocess.spell_out_acronyms>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.spell_out_acronyms
    :summary:
    ```
* - {py:obj}`expand_abbreviations <abr_sdk.tts_preprocess.expand_abbreviations>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.expand_abbreviations
    :summary:
    ```
* - {py:obj}`_fraction_denominator_word <abr_sdk.tts_preprocess._fraction_denominator_word>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._fraction_denominator_word
    :summary:
    ```
* - {py:obj}`_replace_slash_number <abr_sdk.tts_preprocess._replace_slash_number>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._replace_slash_number
    :summary:
    ```
* - {py:obj}`normalize_slash_numbers <abr_sdk.tts_preprocess.normalize_slash_numbers>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.normalize_slash_numbers
    :summary:
    ```
* - {py:obj}`collapse_repeated_punctuation <abr_sdk.tts_preprocess.collapse_repeated_punctuation>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.collapse_repeated_punctuation
    :summary:
    ```
* - {py:obj}`collapse_whitespace <abr_sdk.tts_preprocess.collapse_whitespace>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.collapse_whitespace
    :summary:
    ```
* - {py:obj}`add_final_period <abr_sdk.tts_preprocess.add_final_period>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.add_final_period
    :summary:
    ```
* - {py:obj}`final_cleanup <abr_sdk.tts_preprocess.final_cleanup>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.final_cleanup
    :summary:
    ```
* - {py:obj}`_americanize_word <abr_sdk.tts_preprocess._americanize_word>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._americanize_word
    :summary:
    ```
* - {py:obj}`normalize_british_spelling <abr_sdk.tts_preprocess.normalize_british_spelling>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.normalize_british_spelling
    :summary:
    ```
* - {py:obj}`_ssml_split_tag <abr_sdk.tts_preprocess._ssml_split_tag>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._ssml_split_tag
    :summary:
    ```
* - {py:obj}`_ssml_tag_error <abr_sdk.tts_preprocess._ssml_tag_error>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._ssml_tag_error
    :summary:
    ```
* - {py:obj}`find_unpreprocessed_chars <abr_sdk.tts_preprocess.find_unpreprocessed_chars>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.find_unpreprocessed_chars
    :summary:
    ```
* - {py:obj}`tts_preprocess <abr_sdk.tts_preprocess.tts_preprocess>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess.tts_preprocess
    :summary:
    ```
````

### Data

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`_SPOKEN_CHARS <abr_sdk.tts_preprocess._SPOKEN_CHARS>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._SPOKEN_CHARS
    :summary:
    ```
* - {py:obj}`_MONTHS <abr_sdk.tts_preprocess._MONTHS>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._MONTHS
    :summary:
    ```
* - {py:obj}`_NUM2WORDS <abr_sdk.tts_preprocess._NUM2WORDS>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._NUM2WORDS
    :summary:
    ```
* - {py:obj}`_FRACTION_DENOMINATORS <abr_sdk.tts_preprocess._FRACTION_DENOMINATORS>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._FRACTION_DENOMINATORS
    :summary:
    ```
* - {py:obj}`_SLASH_NUMBER_RE <abr_sdk.tts_preprocess._SLASH_NUMBER_RE>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._SLASH_NUMBER_RE
    :summary:
    ```
* - {py:obj}`_BRITISH_TO_AMERICAN <abr_sdk.tts_preprocess._BRITISH_TO_AMERICAN>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._BRITISH_TO_AMERICAN
    :summary:
    ```
* - {py:obj}`_DEFAULT_PIPELINE <abr_sdk.tts_preprocess._DEFAULT_PIPELINE>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._DEFAULT_PIPELINE
    :summary:
    ```
* - {py:obj}`_SSML_TAG_RE <abr_sdk.tts_preprocess._SSML_TAG_RE>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._SSML_TAG_RE
    :summary:
    ```
* - {py:obj}`_SSML_TAGS <abr_sdk.tts_preprocess._SSML_TAGS>`
  - ```{autodoc2-docstring} abr_sdk.tts_preprocess._SSML_TAGS
    :summary:
    ```
````

### API

`````{py:class} NumberToWords
:canonical: abr_sdk.tts_preprocess.NumberToWords

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords
```

````{py:attribute} ONES
:canonical: abr_sdk.tts_preprocess.NumberToWords.ONES
:type: typing.ClassVar
:value: >
   ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.ONES
```

````

````{py:attribute} TEENS
:canonical: abr_sdk.tts_preprocess.NumberToWords.TEENS
:type: typing.ClassVar
:value: >
   ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', '...

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.TEENS
```

````

````{py:attribute} TENS
:canonical: abr_sdk.tts_preprocess.NumberToWords.TENS
:type: typing.ClassVar
:value: >
   ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.TENS
```

````

````{py:attribute} _ORDINAL_WORD
:canonical: abr_sdk.tts_preprocess.NumberToWords._ORDINAL_WORD
:type: typing.ClassVar
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords._ORDINAL_WORD
```

````

````{py:attribute} SCALES
:canonical: abr_sdk.tts_preprocess.NumberToWords.SCALES
:type: typing.ClassVar
:value: >
   ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'sept...

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.SCALES
```

````

````{py:attribute} DIGIT_FALLBACK_MIN
:canonical: abr_sdk.tts_preprocess.NumberToWords.DIGIT_FALLBACK_MIN
:type: typing.ClassVar
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.DIGIT_FALLBACK_MIN
```

````

````{py:method} _convert_hundreds(num: int) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords._convert_hundreds

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords._convert_hundreds
```

````

````{py:method} _ordinalize_word(word: str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords._ordinalize_word

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords._ordinalize_word
```

````

````{py:method} _spell_digits(digits: str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords._spell_digits

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords._spell_digits
```

````

````{py:method} _grouped_words(num: int) -> list[str]
:canonical: abr_sdk.tts_preprocess.NumberToWords._grouped_words

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords._grouped_words
```

````

````{py:method} to_cardinal(num: int | str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords.to_cardinal

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.to_cardinal
```

````

````{py:method} to_year(num: int | str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords.to_year

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.to_year
```

````

````{py:method} to_ordinal(num: int | str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords.to_ordinal

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.to_ordinal
```

````

````{py:method} to_decimal(num: float | str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords.to_decimal

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.to_decimal
```

````

````{py:method} to_currency(num: float | str) -> str
:canonical: abr_sdk.tts_preprocess.NumberToWords.to_currency

```{autodoc2-docstring} abr_sdk.tts_preprocess.NumberToWords.to_currency
```

````

`````

`````{py:class} ItoNormalization()
:canonical: abr_sdk.tts_preprocess.ItoNormalization

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization
```

```{rubric} Initialization
```

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization.__init__
```

````{py:method} _remove_commas(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization._remove_commas

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization._remove_commas
```

````

````{py:method} _convert_currency(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization._convert_currency

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization._convert_currency
```

````

````{py:method} _convert_decimal(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization._convert_decimal

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization._convert_decimal
```

````

````{py:method} _convert_ordinal(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization._convert_ordinal

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization._convert_ordinal
```

````

````{py:method} _convert_cardinal(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization._convert_cardinal

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization._convert_cardinal
```

````

````{py:method} __call__(text: str) -> str
:canonical: abr_sdk.tts_preprocess.ItoNormalization.__call__

```{autodoc2-docstring} abr_sdk.tts_preprocess.ItoNormalization.__call__
```

````

`````

````{py:function} unicode_normalization(text: str) -> str
:canonical: abr_sdk.tts_preprocess.unicode_normalization

```{autodoc2-docstring} abr_sdk.tts_preprocess.unicode_normalization
```
````

````{py:data} _SPOKEN_CHARS
:canonical: abr_sdk.tts_preprocess._SPOKEN_CHARS
:value: >
   'frozenset(...)'

```{autodoc2-docstring} abr_sdk.tts_preprocess._SPOKEN_CHARS
```

````

````{py:function} remove_special_characters(text: str) -> str
:canonical: abr_sdk.tts_preprocess.remove_special_characters

```{autodoc2-docstring} abr_sdk.tts_preprocess.remove_special_characters
```
````

````{py:function} spell_out_acronyms(text: str) -> str
:canonical: abr_sdk.tts_preprocess.spell_out_acronyms

```{autodoc2-docstring} abr_sdk.tts_preprocess.spell_out_acronyms
```
````

````{py:function} expand_abbreviations(text: str) -> str
:canonical: abr_sdk.tts_preprocess.expand_abbreviations

```{autodoc2-docstring} abr_sdk.tts_preprocess.expand_abbreviations
```
````

````{py:data} _MONTHS
:canonical: abr_sdk.tts_preprocess._MONTHS
:value: >
   ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', '...

```{autodoc2-docstring} abr_sdk.tts_preprocess._MONTHS
```

````

````{py:data} _NUM2WORDS
:canonical: abr_sdk.tts_preprocess._NUM2WORDS
:value: >
   'NumberToWords(...)'

```{autodoc2-docstring} abr_sdk.tts_preprocess._NUM2WORDS
```

````

````{py:data} _FRACTION_DENOMINATORS
:canonical: abr_sdk.tts_preprocess._FRACTION_DENOMINATORS
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess._FRACTION_DENOMINATORS
```

````

````{py:function} _fraction_denominator_word(denominator: int, *, plural: bool) -> str
:canonical: abr_sdk.tts_preprocess._fraction_denominator_word

```{autodoc2-docstring} abr_sdk.tts_preprocess._fraction_denominator_word
```
````

````{py:data} _SLASH_NUMBER_RE
:canonical: abr_sdk.tts_preprocess._SLASH_NUMBER_RE
:value: >
   'compile(...)'

```{autodoc2-docstring} abr_sdk.tts_preprocess._SLASH_NUMBER_RE
```

````

````{py:function} _replace_slash_number(match: re.Match) -> str
:canonical: abr_sdk.tts_preprocess._replace_slash_number

```{autodoc2-docstring} abr_sdk.tts_preprocess._replace_slash_number
```
````

````{py:function} normalize_slash_numbers(text: str) -> str
:canonical: abr_sdk.tts_preprocess.normalize_slash_numbers

```{autodoc2-docstring} abr_sdk.tts_preprocess.normalize_slash_numbers
```
````

````{py:function} collapse_repeated_punctuation(text: str) -> str
:canonical: abr_sdk.tts_preprocess.collapse_repeated_punctuation

```{autodoc2-docstring} abr_sdk.tts_preprocess.collapse_repeated_punctuation
```
````

````{py:function} collapse_whitespace(text: str) -> str
:canonical: abr_sdk.tts_preprocess.collapse_whitespace

```{autodoc2-docstring} abr_sdk.tts_preprocess.collapse_whitespace
```
````

````{py:function} add_final_period(text: str) -> str
:canonical: abr_sdk.tts_preprocess.add_final_period

```{autodoc2-docstring} abr_sdk.tts_preprocess.add_final_period
```
````

````{py:function} final_cleanup(text: str) -> str
:canonical: abr_sdk.tts_preprocess.final_cleanup

```{autodoc2-docstring} abr_sdk.tts_preprocess.final_cleanup
```
````

````{py:data} _BRITISH_TO_AMERICAN
:canonical: abr_sdk.tts_preprocess._BRITISH_TO_AMERICAN
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess._BRITISH_TO_AMERICAN
```

````

````{py:function} _americanize_word(word: str) -> str
:canonical: abr_sdk.tts_preprocess._americanize_word

```{autodoc2-docstring} abr_sdk.tts_preprocess._americanize_word
```
````

````{py:function} normalize_british_spelling(text: str) -> str
:canonical: abr_sdk.tts_preprocess.normalize_british_spelling

```{autodoc2-docstring} abr_sdk.tts_preprocess.normalize_british_spelling
```
````

````{py:data} _DEFAULT_PIPELINE
:canonical: abr_sdk.tts_preprocess._DEFAULT_PIPELINE
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess._DEFAULT_PIPELINE
```

````

````{py:data} _SSML_TAG_RE
:canonical: abr_sdk.tts_preprocess._SSML_TAG_RE
:value: >
   'compile(...)'

```{autodoc2-docstring} abr_sdk.tts_preprocess._SSML_TAG_RE
```

````

````{py:data} _SSML_TAGS
:canonical: abr_sdk.tts_preprocess._SSML_TAGS
:type: dict[str, set[str]]
:value: >
   None

```{autodoc2-docstring} abr_sdk.tts_preprocess._SSML_TAGS
```

````

````{py:function} _ssml_split_tag(tag: str) -> tuple[bool, str, str]
:canonical: abr_sdk.tts_preprocess._ssml_split_tag

```{autodoc2-docstring} abr_sdk.tts_preprocess._ssml_split_tag
```
````

````{py:function} _ssml_tag_error(tag: str) -> str | None
:canonical: abr_sdk.tts_preprocess._ssml_tag_error

```{autodoc2-docstring} abr_sdk.tts_preprocess._ssml_tag_error
```
````

````{py:function} find_unpreprocessed_chars(text: str) -> set[str]
:canonical: abr_sdk.tts_preprocess.find_unpreprocessed_chars

```{autodoc2-docstring} abr_sdk.tts_preprocess.find_unpreprocessed_chars
```
````

````{py:function} tts_preprocess(text: str, *, pipeline: list[collections.abc.Callable] | None = None) -> str
:canonical: abr_sdk.tts_preprocess.tts_preprocess

```{autodoc2-docstring} abr_sdk.tts_preprocess.tts_preprocess
```
````
