HAMMALE's picture
Add model, Gradio demo, and README
bd0e2b2 verified
Raw History Blame Contribute Delete
1.99 kB
import gradio as gr
import torch
import librosa
import numpy as np
from transformers import AutoProcessor, AutoModelForCTC
# Load model and processor
print("Loading model...")
processor = AutoProcessor.from_pretrained("HAMMALE/mms-darija-finetuned")
model = AutoModelForCTC.from_pretrained("HAMMALE/mms-darija-finetuned")
def transcribe_audio(audio_file):
try:
# Load audio
if audio_file is None:
return "Please upload an audio file."
# Load and preprocess audio
audio, sr = librosa.load(audio_file, sr=16000)
# Handle very short audio
if len(audio) < 1600: # Less than 0.1 seconds
return "Audio too short. Please upload a longer audio file."
# Process with model
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
# Inference
with torch.no_grad():
logits = model(**inputs).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)[0]
return transcription if transcription.strip() else "No transcription generated."
except Exception as e:
return f"Error processing audio: {str(e)}"
# Create Gradio interface
demo = gr.Interface(
fn=transcribe_audio,
inputs=gr.Audio(type="filepath", label="Upload Darija Audio"),
outputs=gr.Textbox(label="Transcription", placeholder="Transcription will appear here..."),
title="🎤 Darija Speech Recognition",
description="Upload an audio file in Moroccan Arabic (Darija) and get the transcription. This model was fine-tuned on the Darija Bible dataset.",
article="Model: [HAMMALE/mms-darija-finetuned](https://huggingface.co/HAMMALE/mms-darija-finetuned)",
examples=[
# You can add example audio files here if you have them
],
cache_examples=False,
theme=gr.themes.Soft()
)
if __name__ == "__main__":
demo.launch()