|
--- |
|
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. |
|
|
|
## 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) |
|
``` |
|
|
|
|