sidiali_project / app.py
Muhammed_Kotb1
remove tokenizer from omaradel model to fix error
61f99c5
raw
history blame
No virus
8.66 kB
import torch
import torchaudio
import jiwer
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC, Wav2Vec2CTCTokenizer
# Load the Arabic-specific processor and model
model_name = "omarxadel/hubert-large-arabic-egyptian"
tokenizer = Wav2Vec2CTCTokenizer.from_pretrained(model_name)
processor = Wav2Vec2Processor.from_pretrained(model_name)
model = Wav2Vec2ForCTC.from_pretrained(model_name)
def transcribe(audio_file):
try:
# Load the audio file
print("Loading audio file...")
audio_input, sr = torchaudio.load(audio_file)
print(f"Audio loaded: {audio_input.shape}, Sample rate: {sr}")
# Resample if needed
if sr != 16000:
print("Resampling audio...")
resampler = torchaudio.transforms.Resample(orig_freq=sr, new_freq=16000)
audio_input = resampler(audio_input)
sr = 16000
print(f"Audio shape after resampling: {audio_input.shape}, Sample rate: {sr}")
# Convert tensor to numpy array
audio_input = audio_input[0].numpy()
# Process audio input
print("Processing audio input...")
input_values = processor(audio_input, return_tensors="pt", sampling_rate=sr).input_values
# Run model inference
print("Running model inference...")
with torch.no_grad():
logits = model(input_values).logits
# Decode transcription
print("Decoding transcription...")
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
return transcription[0]
except Exception as e:
print(f"An error occurred: {e}")
return None
# Define reference transcription for WER calculation
reference_transcription = " ู‚ุงู„ ุงู„ู…ุตู†ู ุฑุญู…ู‡ ุงู„ู„ู‡ ุชุนุงู„ู‰ ูˆู†ูุนู†ุง ุงู„ู„ู‡ ุจุนู„ูˆู…ู‡ ููŠ ุงู„ุฏุงุฑูŠู† ุงู…ูŠู† ูุตู„ ูˆุงู„ุฑุจุง ููŠ ุงู„ุฐู‡ุจ ูˆุงู„ูุถู‡ ูˆุงู„ู…ุทุนูˆู…ุงุช ุงู„ุฑุจุง ุดูƒู„ ู…ู† ุงุดูƒุงู„ ุงู„ุจูŠูˆุน ููŠู‡ ุชุจุงุฏู„ ู…ุซู„ ุงู„ุซู…ู† ูˆุงู„ู…ุซู…ู† ูู‡ู†ุง ููŠู‡ ู…ุงู„ ุจุงุฒุงุก ู…ุงู„ ูˆู„ุฐู„ูƒ ุงุฎุชู„ุท ุงู„ุงู…ุฑ ุนู„ู‰ ุงู„ู…ุดุฑูƒูŠู† ููŠ ู…ูƒู‡ ูู‚ุงู„ูˆุง ุงู†ู…ุง ุงู„ุจูŠุน ู…ุซู„ ุงู„ุฑุจุง ูŠุนู†ูŠ ู‡ุฐุง ููŠู‡ ู…ุจุงุฏู„ู‡ ูˆู‡ุฐุง ููŠู‡ ู…ุจุงุฏู„ู‡ ูˆููŠ ุงู„ู…ุจุงุฏู„ู‡ ุฒูŠุงุฏู‡ ุจูŠู† ุงู„ุซู…ู† ูˆ ุงู„ู…ุซู…ู† ูˆู‡ู†ุง ุฒูŠุงุฏู‡ ุจูŠู† ุงู„ุซู…ู† ูˆุงู„ู…ุซู…ู† ูู…ุง ุงู„ูุฑู‚ ู†ุญู† ู†ุจูŠุน ูˆู†ุดุชุฑูŠ ูˆุงู„ูุฑู‚ ู‡ูˆ ุงู† ุงู„ู„ู‡ ุณุจุญุงู†ู‡ ูˆุชุนุงู„ู‰ ุงู…ุฑ ุจุญุฑู…ุฉ ุงู„ุฑุจุง ู…ู† ุงุฌู„ ุงู„ุญูุงุธ ุนู„ู‰ ู†ุธุงู… ุงู„ุงู‚ุชุตุงุฏ ุงู„ู†ู‚ุฏูŠ ู…ู† ุฏุงุฎู„ู‡ ูู„ูˆ ุงุจุงุญ ุงู„ู„ู‡ ุงู„ุฑุจุง ู„ูƒุงู† ู‡ู†ุงูƒ ุฒูŠุงุฏู‡ ููŠ ูˆุณูŠุท ุงู„ุชุจุงุฏู„ ุฏูˆู† ุฒูŠุงุฏุฉ ุงู„ุงู†ุชุงุฌ ูˆูŠุญุฏุซ ุจุฐู„ูƒ ุงู„ุชุถุฎู… ู…ู† ุฏุงุฎู„ ุงู„ู†ุธุงู… ูุงุฐุง ุญุฏุซ ุงู„ุชุถุฎู… ู…ู† ุฐุงุช ุงู„ู†ุธุงู… ู ุงู„ุฐูŠ ูŠุถุงุฑ ุจุฐู„ูƒ ู…ุญุฏูˆุฏ ุงู„ุฏุฎู„ ุงู„ุฐูŠ ูŠุถุงุฑ ุจุฐู„ูƒ ุงู„ูู‚ูŠุฑ ูุญุฑู… ุงู„ู„ู‡ ุงู„ุฑุจุง ู…ู† ุงุฌู„ ุงู„ุง ูŠู‚ุน ุธู„ู… ุนู„ู‰ ุงู„ูู‚ูŠุฑ ูˆุงูˆุฌุจ ุงู„ุฒูƒุงู‡ ุญุชู‰ ูŠุชุนุงุฏู„ ุฏุฎู„ ุงู„ูู‚ูŠุฑ ู„ุงุฏุงุก ู…ู‚ุชุถูŠุงุช ุงู„ุญูŠุงู‡ ูุชุญุฑูŠู… ุงู„ุฑุจุง ู…ุฑุชุจุท ููŠ ุงู„ู†ุธุฑ ุงู„ุงู„ู‡ูŠ ู…ุน ุงูŠุฌุงุจ ุงู„ุฒูƒุงู‡ ุญุฑู… ุงู„ู„ู‡ ุงู„ุฑุจุง ูˆุงูˆุฌุจ ุญุฑู… ูˆุงูˆุฌุจ ุงู„ุฒูƒุงู‡ ู…ู† ุงุฌู„ ุญู…ุงูŠุฉ ุงู†ุณุงู†ูŠุฉ ุงู„ูู‚ูŠุฑ ู…ุญุฏูˆุฏ ุงู„ุฏุฎู„ ูู„ุง ูŠุฌุฏ ุงู„ุงุณุนุงุฑ ููˆู‚ ุงู„ุทุงู‚ู‡ ูˆูŠุณุชุทูŠุน ุงู† ูŠุญุตู„ ุจุงุณุชู‡ู„ุงูƒู‡ ู„ู…ุง ุงุฎุฐู‡ ู…ู† ุงู„ุฒูƒุงู‡ ู…ุง ูŠุฑูŠุฏ ู…ู† ู…ู‚ุชุถูŠุงุช ุงู„ุญูŠุงู‡ ูุงุฐุง ูƒุงู† ุงู„ุงู…ุฑ ูƒุฐู„ูƒ ูˆู‡ุฐุง ู†ุธุงู… ุฑุจุงู†ูŠ ุงู„ู‡ูŠ ูƒุงู† ุญุฑุง ู„ุง ูŠุณุชุทูŠุน ุงุญุฏ ุงู† ูŠุชุญูƒู… ููŠู‡ ู„ุง ููŠ ุงุฌุชู…ุงุน ูˆู„ุง ููŠ ุณูŠุงุณู‡ ูˆู„ุง ููŠ ุงู‚ุชุตุงุฏ ูŠูƒู…ู„ ุงู„ู…ู†ุธูˆู…ู‡ ุงู„ุตู„ุงู‡ ูุงุฐุง ุฐู‡ุจู‡ุง ุงู„ู†ุงุณ ูˆู‚ููˆุง ู…ุชุฌุงูˆุฑูŠู† ุงู„ุบู†ูŠ ุจุฌูˆุงุฑู‡ ุงู„ูู‚ูŠุฑ ูˆุงู„ูู‚ูŠุฑ ุจุฌูˆุงุฑู‡ ุงู„ู…ุณูƒูŠู† ูˆุงู„ู…ุณูƒูŠู† ุจุฌูˆุงุฑู‡ ุงู„ุบู†ูŠ ู„ุง ูุฑู‚ ุจูŠู†ู‡ู…ุง ูˆุงู„ุตู ุงู„ุงูˆู„ ู…ู†ุงุฎ ู…ู† ุณุจู‚ ุณุจู‚ ุงู„ู‰ ุงู„ุตู ุงู„ุงูˆู„ ุงู„ุบู†ูŠ ุงูˆ ุณุจู‚ ุงู„ู‰ ุงู„ุตู ุงู„ุซุงู†ูŠ ุงูˆ ุณุจู‚ ุงู„ู‰ ุงู„ุตู ุงู„ุงูˆู„ ุงู„ูู‚ูŠุฑ ู„ุง ูŠุณุชุทูŠุน ุงุญุฏ ุงู† ูŠุฌุฐุจู‡ ู…ู† ุงูˆู„ูŠุชู‡ ุญุชู‰ ูŠุชุงุฎุฑ ุจุณุจุจ ุบู†ุงู‡ ุงูˆ ุฌุงู‡ู‡ ุงูˆ ุณู„ุทุงู†ู‡ ู„ุงู† ู…ู† ุฌุงุก ููˆุฌุฏ ุงู„ุตู„ุงู‡ ูู„ูŠู„ุญู‚ ุจู‡ุง ุญูŠุซ ู…ุง ุงู†ุชู‡ู‰ ุจู‡ ุงู„ุตู ูˆูƒุฐู„ูƒ ููŠ ุทู„ุจ ุงู„ุนู„ู… ุญูŠุซ ู…ุง ุงู†ุชู‡ู‰ ุจู‡ ุงู„ู…ุฌู„ุณ ู…ู† ุงูŠู† ุชุชุงุชู‰ ู‡ุฐู‡ ุงู„ู†ูุณูŠู‡ ุงู„ุงุจูŠู‡ ู…ู† ุฏูˆู† ูƒุจุฑ ุงู†ู…ุง ุจุนุฒู‡ ูˆุฑู‚ูŠ ูˆุงู†ุณุงู†ูŠู‡ ุจูˆุฌูˆุจ ุงู„ุฒูƒุงู‡ ูุงู„ุฒูƒุงุฉ ู„ูŠุณุช ู…ู†ู‡ ูˆู„ุง ุนุทูŠู‡ ูˆู„ุง ู‡ูŠ ูŠุฏ ุนู„ูŠุง ูˆ ุจุญุฑู…ุฉ ุงู„ุฑุจุง ุญุชูŠ ูŠุญุงูุธ ุนู„ู‰ ุงู„ู†ุธุงู… ุงู„ุงู‚ุชุตุงุฏูŠ ู…ู† ุฏุงุฎู„ู‡ ู…ู† ุงู„ุชุถุฎู… ุฐู‡ุจุช ุงู„ุงูŠุงู… ูˆุฌุงุกุช ุงู„ุงูŠุงู… ูˆุชุณู„ุท ุนู„ูŠู†ุง ุงุจุงู„ุณู‡ ุงู„ุฌู† ูˆุงู„ุงู†ุณ ูˆุงุฎุฑุฌูˆุง ุงู„ุฐู‡ุจ ูˆุงู„ูุถู‡ ู…ู† ุงู„ุชุนุงู…ู„ ูˆุงุณุชุจุฏู„ูˆุง ุจู‡ุง ุญูŠู„ู‡ ุณุฎูŠูู‡ ูˆู‡ูŠ ุญูŠู„ู‡ ุงู„ูˆุฑู‚ ุงู„ู†ู‚ุฏูŠ ุฌุนู„ูˆุง ู„ู‡ ุงูˆู„ุง ุบุทุงุก ุซู… ุจุนุฏ ุฐู„ูƒ ุชู†ุงุณูˆุง ุงู„ุบุทุงุก ูุงุตุจุญ ูˆุฑู‚ุง ู„ุง ู‚ูŠู…ู‡ ู„ู‡ ููŠ ุงู†ุชุงุฌู‡ ู…ุน ู‚ูŠู…ุชู‡ ุฏูŠู†ุงุฑ ุงู„ุฐู‡ุจ 4 ุฌุฑุงู… ูˆุฑุจุน ู„ูˆ ุณูŠุญู†ุงู‡ ูŠุทู„ุน 4 ุฌุฑุงู… ูˆุฑุจุน ุฐู‡ุจ ู„ูˆ ุตูƒูŠู†ุงู‡ ูŠุทู„ุน 4 ุฌุฑุงู… ูˆุฑุจุน ุฐู‡ุจ ู„ูˆ ุจุนู†ุงู‡ ูŠุทู„ุน 4 ุฌุฑุงู… ูˆุฑุจุน ุงู„ุฐู‡ุจ ู‚ูŠู…ุชู‡ ููŠู‡ ุงู„ูˆุฑู‚ู‡ ุงู„ 200 ุฌู†ูŠู‡ ุงู„ู„ูŠ ููŠ ุฌูŠุจูƒ ู…ุชูƒู„ูู‡ 16 ู‚ุฑุด ุญุชุฉ ุงู„ูˆุฑู‚ู‡ ุฏูŠ ูˆุดูˆูŠุฉ ุงู„ุงุญุจุงุฑ ุงู„ู„ูŠ ุนู„ูŠู‡ุง 16 ู‚ุฑุด ุทุจ ุงู„ูุฑู‚ ุจูŠู† 16 ู‚ุฑุด ูˆ200 ุฌู†ูŠู‡ ููŠู† ุณู„ุทุฉ ุงู„ุฏูˆู„ู‡ ุณู„ุทุฉ ุงู„ุงุตุฏุงุฑ ูˆุณู„ุทุฉ ุงู„ุฏูˆู„ู‡ ุฏูŠ ุจุชุชุญุณุจ ุงุฒุงูŠ ููŠ ู†ูุณู‡ุง ุจู‡ุง ูŠุนู†ูŠ ุฌูˆู‡ ู…ุตุฑ ูƒุฏู‡ ูŠุจู‚ู‰ ุจู‡ุง ูŠุนู†ูŠ ุงู„ 200 ุฌู†ูŠู‡ 200 ุฌู†ูŠู‡ ุทุจ ูˆููŠ ุฎุงุฑุฌู‡ุง ูŠุจู‚ู‰ ุจู‚ูˆุฉ ุงู†ุชุงุฌู‡ุง ูุงู„ุฏูˆู„ุงุฑ ูŠุจู‚ู‰ ุจ 50 ุฌู†ูŠู‡ ุงู„ู„ูŠ ู‡ูˆ ูƒุงู† ุจ 39 ู‚ุฑุด ูˆู†ุต ูŠุนู†ูŠ ูƒุงู† ุงู„ุฌู†ูŠู‡ ุจ 5 ุฏูˆู„ุงุฑ ูˆุจุนุฏูŠู† ู„ู…ุง ุงู†ู‡ุงุฑ ุจู‚ู‰ 2 ูˆู†ุต ููŠ ุงู„ุงูˆู„ ููŠ ุงู„ุงุฑุจุนูŠู†ุงุช ูƒุงู† ุงู„ุฌู†ูŠู‡ ุงู„ู…ุตุฑูŠ ุจ 5 ุฏูˆู„ุงุฑ 5 ุฏูˆู„ุงุฑ ููŠ 50 ุฌู†ูŠู‡ ูŠุจู‚ู‰ ุจูƒุงู… ูŠุจู‚ู‰ ุจ 250 ู…ุฑู‡ ูŠุจู‚ู‰ ุงู„ุฌู†ูŠู‡ ุงุจูˆ 40 ุณู†ุฉ 40 ุจูŠุณุงูˆูŠ 250 ุฌู†ูŠู‡ ู…ู† ุงู„ุฌู†ูŠู‡ุงุช ุงู„ู„ูŠ ู…ุนุงู†ุง ุฏูŠ ุชุฎูŠู„ ุงุถุฑุจ ุฏุฎู„ูƒ ููŠ 250 ูู„ูˆ ุณุงู„ู†ุง ุงู„ุดูŠุฎ ูู„ุงู† ูˆู„ุง ุนู„ุงู† ุจุชุงุฎุฏ ูƒุงู… ูŠู‚ูˆู„ู„ูƒ ุนุจุงุฑู‡ ุนู† 6000 ุฌู†ูŠู‡ ููŠ ุงู„ุดู‡ุฑ ุทุจ 6000 ุฌู†ูŠู‡ ููŠ ุงู„ุดู‡ุฑ ุงุถุฑุจู‡ุง ููŠ 250 ูŠุจู‚ู‰ 150 ู‚ุตุงุฏู‡ุง ุตูุฑ ูŠุจู‚ู‰ ู…ู„ูŠูˆู† ูˆู†ุต ู‡ุง ุชุฎูŠู„ ู†ูุณูƒ ุจู‚ู‰ ุงู† ุงู†ุช ู…ุนุงูƒ ู…ู„ูŠูˆู† ูˆู†ุต ูƒู„ ุดู‡ุฑ ู‡ุชุนุฑู ุชุณูƒู† ู‡ุชุนุฑู ุชุดุชุฑูŠ ู„ูƒ ุนุฑุจูŠู‡ ู…ู† ุงู… 2 ู…ู„ูŠูˆู† ุฏูŠ ุงู‚ู„ ุญุงุฌู‡ ุญุชู‰ ุงู„ุนุฑุจูŠู‡ ุงู… 14 ู…ู„ูŠูˆู† ู…ู…ูƒู† ุชุฌูŠุจู‡ุง ุจุณ ุจุงู„ุชู‚ุณูŠุท ุงู„ู„ู‡ ู‡ูˆ ุงูŠู‡ ุงู„ู„ูŠ ุญุตู„ ุชุถุฎู… ูˆุงู„ุชุถุฎู… ุฏู‡ ู…ุนู†ุงุชู‡ ุงูŠู‡ ู…ุนู†ุงุชู‡ ุงู† ู‡ุฐุง ุงู„ูˆุณูŠุท ู„ู„ุชุจุงุฏู„ ู„ู… ูŠุนุฏ ุณุจุจุง ู„ุงุบู†ุงุก ุงู„ูู‚ูŠุฑ ุงู„ูƒู„ุงู… ุฏู‡ ูƒู„ู‡ ูŠุง ุงุฎูŠ ู„ู‚ูŠู†ุง ุงู„ุดุงูุนูŠ ูู‡ู…ู‡ ุงู„ูƒู„ุงู… ุงู„ู„ูŠ ุงุญู†ุง ู‚ู„ู†ุงู‡ ุฏู‡ ูˆุงู„ุงู…ุงู… ุงู„ุบุฒุงู„ูŠ ุฑูƒู† ุงู„ุดุงูุนูŠู‡ ูุงู‡ู…ูŠู†ู‡ ุจูŠูƒุชุจูˆู‡ ุนุงุฏูŠ ูƒุฏู‡ ููŠู‚ูˆู„ ุฑุถูŠ ุงู„ู„ู‡ ุชุนุงู„ู‰ ุนู†ู‡ ููŠ ุงู„ุงู… ูˆุนู„ุฉ ุงู„ุฑุจุง ุชุนุจุฏูŠู‡ ูุงู„ุฐู‡ุจ ูˆุงู„ูุถู‡ ุฌุฒุก ุนู„ู‡ ูŠุนู†ูŠ ุฌุฒุก ุงู„ุนู„ู‡ ูŠุนู†ูŠ ุงุฐุง ุฎุฑุฌ ุนู† ุงู„ุฐู‡ุจูŠู‡ ูˆุงู„ูุถูŠู‡ ูู„ุง ุฑุจุง ูˆูŠู‚ูˆู„ ุงุจู† ุงู„ุญุงุฌุจ ูˆู‡ู„ ุญุฑู… ุงู„ุฑุจุง ู„ุฌูˆู‡ุฑู‡ู…ุง ุงูˆ ู„ุฌูˆู‡ุฑูŠุชู‡ู…ุง ุงู„ุฐู‡ุจ ูˆุงู„ูุถู‡ ู„ุฌูˆู‡ุฑู‡ู…ุง ุนุดุงู† ู‡ู… ุฐู‡ุจ ูˆูุถู‡ ูˆู„ุง ู„ุงู†ู‡ู… ูˆุณูŠุท ู„ู„ุชุจุงุฏู„ ู‚ุงู„ ุจู„ ู„ุฌูˆู‡ุฑู‡ู…ุง ู„ุฌูˆู‡ุฑู‡ู…ุง ูŠุนู†ูŠ ู„ุงู†ู‡ู… ุฐู‡ุจ ูˆูุถู‡ ู…ุด ู„ุฌูˆู‡ุฑูŠุชู‡ู…ุง ูŠุนู†ูŠ ูƒูˆู†ู‡ู… ูˆุณูŠุท ู„ู„ุชุจุงุฏู„ ุจูŠู† ุงู„ู†ุงุณ ู„ูˆ ูƒุงู† ูˆุณูŠุท "
# Transcribe the audio file
transcription = transcribe("sidiali_reba_zahab_feda.wav")
if transcription:
print(transcription)
# Calculate Word Error Rate (WER)
wer = jiwer.wer(reference_transcription, transcription)
print(f"Word Error Rate (WER): {wer}")
# Save the transcription and WER to a file
with open("evaluation_results.txt", "w", encoding="utf-8") as f:
f.write(f"Transcription: {transcription}\n")
f.write(f"Reference: {reference_transcription}\n")
f.write(f"Word Error Rate (WER): {wer}\n")
print("Evaluation results saved to evaluation_results.txt")