Spaces:
Sleeping
Sleeping
| """ | |
| Model Loading Module for Arabic Word Recognition | |
| Handles Wav2Vec2 model initialization and caching | |
| """ | |
| from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer | |
| from typing import Tuple, Optional | |
| class ModelLoader: | |
| """Handles loading and caching of Wav2Vec2 Arabic model""" | |
| MODEL_NAME = "jonatasgrosman/wav2vec2-large-xlsr-53-arabic" | |
| def __init__(self): | |
| self.model = None | |
| self.tokenizer = None | |
| self.is_loaded = False | |
| def load_model(self) -> Tuple[Optional[Wav2Vec2ForCTC], Optional[Wav2Vec2Tokenizer], bool]: | |
| """ | |
| Load Wav2Vec2 Arabic model | |
| Returns: | |
| Tuple of (model, tokenizer, success_flag) | |
| """ | |
| try: | |
| print(f"Loading model: {self.MODEL_NAME}") | |
| tokenizer = Wav2Vec2Tokenizer.from_pretrained(self.MODEL_NAME) | |
| model = Wav2Vec2ForCTC.from_pretrained(self.MODEL_NAME) | |
| self.model = model | |
| self.tokenizer = tokenizer | |
| self.is_loaded = True | |
| print("✅ Model loaded successfully!") | |
| return model, tokenizer, True | |
| except Exception as e: | |
| print(f"❌ Model loading error: {str(e)}") | |
| return None, None, False | |
| def get_model_info(self) -> dict: | |
| """Return model information""" | |
| return { | |
| "name": self.MODEL_NAME, | |
| "parameters": "~315M", | |
| "specialization": "Arabic speech recognition", | |
| "sample_rate": 16000, | |
| "input_format": "Mono audio, WAV" | |
| } | |