| | --- |
| | license: apache-2.0 |
| | language: |
| | - en |
| | base_model: |
| | - openai/whisper-large-v3 |
| | metrics: |
| | - accuracy |
| | --- |
| | |
| | # Whisper Model for Incorrect English Phrases |
| |
|
| | ## Overview |
| |
|
| | This fine-tuned version of OpenAI’s Whisper model is specifically trained to handle incorrect English phrases. |
| | It is designed to transcribe and process non-standard or erroneous English input, including mispronunciations, |
| | grammatical mistakes, slang, and non-native speaker errors. This model helps improve transcription accuracy |
| | in scenarios where speakers use incorrect or informal English, making it useful in language learning, |
| | transcription of casual conversations, or analyzing spoken communication from non-native English speakers. |
| |
|
| | ## Training procedure |
| |
|
| | ### Training hyperparameters |
| |
|
| | The following hyperparameters were used during training: |
| | - learning_rate: 1e-05 |
| | - train_batch_size: 8 |
| | - eval_batch_size: 8 |
| | - seed: 42 |
| | - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
| | - lr_scheduler_type: linear |
| | - lr_scheduler_warmup_steps: 50 |
| | - training_steps: 100000 |
| | - mixed_precision_training: Native AMP |
| | |
| | ### Training results |
| | |
| | | Training Loss | Epoch | Step | Validation Loss | Wer | |
| | |:-------------:|:------:|:----:|:---------------:|:-------:| |
| | | 0.9094 | 0.1270 | 500 | 0.6347 | 24.3686 | |
| | | 0.5517 | 0.2541 | 1000 | 0.4835 | 18.0769 | |
| | | 0.5364 | 0.3811 | 1500 | 0.4330 | 15.1149 | |
| | | 0.5503 | 0.5081 | 2000 | 0.4113 | 13.6524 | |
| | | 0.6521 | 0.6352 | 2500 | 0.3987 | 13.5897 | |
| | | 0.6044 | 0.7622 | 3000 | 0.3912 | 13.0538 | |
| | | 0.5487 | 0.8892 | 3500 | 0.3835 | 12.6119 | |
| | | 0.5297 | 1.0163 | 4000 | 0.3791 | 12.4408 | |
| | | 0.46 | 1.1433 | 4500 | 0.3751 | 12.3525 | |
| | | 0.4947 | 1.2703 | 5000 | 0.3721 | 12.1415 | |
| | | 0.524 | 1.3974 | 5500 | 0.3682 | 13.0139 | |
| | | 0.4743 | 1.5244 | 6000 | 0.3649 | 13.3388 | |
| | | 0.5338 | 1.6514 | 6500 | 0.3621 | 12.9397 | |
| | | 0.5162 | 1.7785 | 7000 | 0.3597 | 13.3246 | |
| | | 0.5004 | 1.9055 | 7500 | 0.3590 | 12.3268 | |
| | |
| | ## Usage Guide |
| | |
| | This project was executed on an Ubuntu 22.04.3 system running Linux kernel 6.8.0-40-generic. |
| | |
| | Whisper large-v3 is supported in Hugging Face Transformers. To run the model, first install the Transformers library. |
| | For this example, we'll also install Hugging Face Datasets to load toy audio dataset from |
| | the Hugging Face Hub, and Hugging Face Accelerate to reduce the model loading time: |
| | |
| | ```bash |
| | pip install --upgrade pip |
| | pip install --upgrade transformers datasets[audio] accelerate |
| | ``` |
| | |
| | The model can be used with the pipeline class to transcribe audios of arbitrary length: |
| | |
| | ```python |
| | import torch |
| | from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline |
| | from datasets import load_dataset |
| |
|
| | device = "cuda:0" if torch.cuda.is_available() else "cpu" |
| | torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32 |
| | |
| | def download_adapter_model(): |
| | model_name = "whisper-v3-LoRA-en_students" |
| | print(f"Downloading the adapter model '{model_name}' from the Hugging Face Hub.", flush=True) |
| |
|
| | # Define the path for the directory |
| | local_directory = os.path.expanduser("~/.cache/huggingface/hub") |
| | |
| | # Check if the directory exists |
| | if not os.path.exists(local_directory): |
| | # If it doesn't exist, create it |
| | os.makedirs(local_directory) |
| | print(f"Directory '{local_directory}' created.", flush=True) |
| | else: |
| | print(f"Directory '{local_directory}' already exists.", flush=True) |
| | |
| | repo_id = f"Transducens/{model_name}" |
| | repo_adapter_dir = f"{model_name}/checkpoint-5000/adapter_model" |
| | repo_filename_config = f"{repo_adapter_dir}/adapter_config.json" |
| | repo_filename_tensors = f"{repo_adapter_dir}/adapter_model.safetensors" |
| |
|
| | adapter_config = hf_hub_download(repo_id=repo_id, filename=repo_filename_config, local_dir=local_directory) |
| | adapter_model_tensors = hf_hub_download(repo_id=repo_id, filename=repo_filename_tensors, local_dir=local_directory) |
| | |
| | print(f"Dowloaded the adapter model '{model_name}' from the Hugging Face Hub.", flush=True) |
| |
|
| | return os.path.join(local_directory, repo_adapter_dir) |
| | |
| | peft_model_id = adapter_path # Use the same model ID as before. |
| | peft_config = PeftConfig.from_pretrained(peft_model_id) |
| | model = WhisperForConditionalGeneration.from_pretrained( |
| | peft_config.base_model_name_or_path, load_in_8bit=False) |
| |
|
| | model = PeftModel.from_pretrained(model, peft_model_id) |
| | model.generation_config.language = "<|en|>" |
| | model.generation_config.task = "transcribe" |
| | |
| | tokenizer = WhisperTokenizer.from_pretrained("openai/whisper-large-v3", task="transcribe") |
| | feature_extractor = WhisperFeatureExtractor.from_pretrained("openai/whisper-large-v3") |
| |
|
| | pipe = pipeline(model=model, tokenizer=tokenizer, feature_extractor=feature_extractor, task="automatic-speech-recognition", device=device) |
| |
|
| |
|
| | ### Framework versions |
| |
|
| | - PEFT 0.11.1 |
| | - Transformers 4.42.4 |
| | - Pytorch 2.1.0+cu118 |
| | - Datasets 2.20.0 |
| | - Tokenizers 0.19.1 |