ShahadFawaz99's picture
Create app.py
68f92dc verified
import gradio as gr
import whisper # Library for speech recognition
from transformers import pipeline
import pandas as pd
# Load the Whisper model for speech recognition
whisper_model = whisper.load_model("base")
# Load the summarization model from Hugging Face
summarization = pipeline("summarization", model="google/pegasus-large")
def process_audio(audio_file, min_length, max_length):
try:
# Ensure audio_file is not None and has valid content
if audio_file is None:
raise ValueError("No audio file provided.")
# Use the Whisper model to transcribe the audio file into text
result = whisper_model.transcribe(audio_file)
text = result['text']
# Check if transcription was successful
if not text:
raise ValueError("Failed to transcribe the audio. The transcription result is empty.")
# Use the summarization pipeline to summarize the transcribed text
summary_result = summarization(text, min_length=min_length, max_length=max_length)
summary = summary_result[0]['summary_text']
# Check if summarization was successful
if not summary:
raise ValueError("Failed to summarize the transcript. The summary result is empty.")
# Create a DataFrame to store the audio file, transcript, and summary
df_results = pd.DataFrame({
"Audio File": [audio_file], # Store the path to the audio file
"Transcript": [text], # Store the transcribed text
"Summary": [summary] # Store the generated summary
})
# Save the results to a CSV file named "results.csv"
df_results.to_csv("results.csv", index=False)
# Return the transcript and summary to be displayed in the Gradio interface
return text, summary
except Exception as e:
# General error handling
error_message = f"An error occurred: {str(e)}"
return error_message, error_message
# Create a Gradio interface
iface = gr.Interface(
fn=process_audio, # The function to be called when processing the input
inputs=[
gr.Audio(sources="upload", type="filepath", label="Upload your audio file"), # Audio input field for file upload
gr.Slider(minimum=10, maximum=50, value=30, label="Minimum Summary Length"), # Slider for setting minimum summary length
gr.Slider(minimum=50, maximum=600, value=100, label="Maximum Summary Length") # Slider for setting maximum summary length
],
outputs=[
gr.Textbox(label="Transcript"), # Textbox for displaying the transcript
gr.Textbox(label="Summary") # Textbox for displaying the summary
],
title="Audio to Summarized Transcript", # Title of the app
description="Upload an audio file and adjust summary length to get both the transcript and summary." # Description of the app
)
# Launch the app
iface.launch()