A python package for whisper normalizer
Project description
whisper_normalizer
A python package for text standardisation/normalization. It uses normalization algorithm mentioned in OpenAI whisper paper. Using Whisper normalization can cause issues in Indic languages and other low resource languages when using
BasicTextNormalizer
. So normalization in Indic languages is also implemented in this package which was derived from indic-nlp-library.
This package is a python implementation of the text standardisation/normalization approach which is being used in OpenAI whisper. The code was originally being released as open-source in Whisper source code. More details about the text normalization approach used by whisper can be found on Appendix Section C pp.21 the paper Robust Speech Recognition via Large-Scale Weak Supervision by OpenAI team.
Installation of package
pip install whisper_normalizer
or from github repository
pip install git+https://github.com/kurianbenoy/whisper_normalizer.git
Why should we normalize/standardize text?
- In ASR systems it’s important to normalize the text to reduce unintentional penalties in metrics like WER, CER etc.
- Text normalization/standardization is process of converting texts in different styles into a standardized form, which is a best-effort attempt to penalize only when a word error is caused by actually mistranscribing a word, and not by formatting or punctuation differences.(from Whisper paper)
Why use this python package?
This package is a python implementation of the text standardisation/normalization approach which is being used in OpenAI whisper text normalizer. If you want to use just text normalization alone, it’s better to use this instead reimplementing the same thing. OpenAI approach of text normalization is very helpful and is being used as normalization step when evaluating competitive models like AssemblyAI Conformer-1 model.
Models evaluated using Whisper normalization
- Massively Multilingual Speech (MMS) models by Meta
- Conformer 1 by AssemblyAI
- Conformer 2 by AssemblyAI
How to use
OpenAI open source approach of text normalization/standardization is mentioned in detail Appendix Section C pp.21 the paper Robust Speech Recognition via Large-Scale Weak Supervision.
Whisper Normalizer by default comes with two classes
BasicTextNormalizer
and
EnglishTextNormalizer
You can use the same thing in this package as follows:
from whisper_normalizer.basic import BasicTextNormalizer
normalizer = BasicTextNormalizer()
normalizer("I'm a little teapot, short and stout. Tip me over and pour me out!")
'i m a little teapot short and stout tip me over and pour me out '
from whisper_normalizer.english import EnglishTextNormalizer
english_normalizer = EnglishTextNormalizer()
english_normalizer("I'm a little teapot, short and stout. Tip me over and pour me out!")
'i am a little teapot short and stout tip me over and pour me out'
This model extends Whisper_normalizer to support Indic languages as well.
The logic for normalization in Indic languages is derived from
indic-nlp-library.
The logic for Malayalam normalization is expanded beyond the Indic NLP
library by
MalayalamNormalizer
.
from whisper_normalizer.indic_normalizer import MalayalamNormalizer
normalizer = MalayalamNormalizer()
normalizer("എന്റെ കമ്പ്യൂട്ടറിനു് എന്റെ ഭാഷ.")
'എന്റെ കമ്പ്യൂട്ടറിന് എന്റെ ഭാഷ.'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for whisper_normalizer-0.0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 744bf02dc56b14ad19ae8b4f749e107094f2ea6d82ba49668310584c73417bd6 |
|
MD5 | 93aa59b88745d01e9b866d194829c907 |
|
BLAKE2b-256 | 2455a993f5bb08e1e2ff1c52e23a86893d250ac4cbdb8aef376f4a5919b06157 |