Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import pipeline | |
# Load Hugging Face models for speech-to-text and grammar correction | |
# For different languages, you can modify the pipelines to use language-specific models. | |
s2t_en = pipeline("automatic-speech-recognition", model="facebook/s2t-medium-librispeech-asr") | |
s2t_fr = pipeline("automatic-speech-recognition", model="facebook/s2t-medium-librispeech-asr") # For French | |
s2t_ur = pipeline("automatic-speech-recognition", model="facebook/s2t-medium-librispeech-asr") # For Urdu (if available) | |
grammar_en = pipeline("text2text-generation", model="prithivida/grammar_error_correcter_v1") | |
grammar_fr = pipeline("text2text-generation", model="prithivida/grammar_error_correcter_v1") # For French grammar correction | |
grammar_ur = pipeline("text2text-generation", model="prithivida/grammar_error_correcter_v1") # For Urdu grammar correction | |
def out(audio1, audio2, input_lang, output_lang): | |
if input_lang == "English": | |
s2t_model = s2t_en | |
grammar_model = grammar_en | |
elif input_lang == "French": | |
s2t_model = s2t_fr | |
grammar_model = grammar_fr | |
else: | |
s2t_model = s2t_ur | |
grammar_model = grammar_ur | |
# Check if audio is provided | |
if audio1 is None and audio2 is None: | |
return "No audio uploaded", "No audio uploaded" | |
elif audio1 is None: | |
# Use the second audio input (microphone or file) | |
x = s2t_model(audio2)["text"] | |
corrected = grammar_model(x)[0]['generated_text'] | |
else: | |
# Use the first audio input (microphone or file) | |
x = s2t_model(audio1)["text"] | |
corrected = grammar_model(x)[0]['generated_text'] | |
# If output language is different, translate (you can use Hugging Face models for translation) | |
if output_lang == "English": | |
# Placeholder translation model; you should replace this with a suitable translation pipeline | |
# Currently, we are assuming output will be in the same language. | |
translated = corrected | |
elif output_lang == "French": | |
# Placeholder translation model for French | |
translated = corrected | |
else: | |
# Placeholder translation model for Urdu | |
translated = corrected | |
return corrected, translated | |
# Define Gradio Interface | |
iface = gr.Interface( | |
fn=out, | |
title="Speech-to-Text with Grammar Correction and Translation", | |
description="Select input and output language. Upload an audio file or use the microphone to convert speech to text, correct the grammar, and optionally translate it.", | |
inputs=[ | |
gr.inputs.Audio(source="upload", type="filepath", label="Upload Audio File (Optional)", optional=True), | |
gr.inputs.Audio(source="microphone", type="filepath", label="Record Using Microphone (Optional)", optional=True), | |
gr.inputs.Dropdown(["English", "French", "Urdu"], label="Input Language", default="English"), | |
gr.inputs.Dropdown(["English", "French", "Urdu"], label="Output Language", default="English") | |
], | |
outputs=["text", "text"], | |
examples=[["Grammar-Correct-Sample.mp3"], ["Grammar-Wrong-Sample.mp3"]], | |
) | |
# Launch Gradio Interface | |
iface.launch(enable_queue=True, show_error=True) | |