Spaces:
Sleeping
Sleeping
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() | |