| import whisper | |
| import gradio as gr | |
| from transformers import pipeline | |
| # Load models | |
| def transcribe_audio(file_path): | |
| model = whisper.load_model("base") # Use "tiny", "base", "small", etc. | |
| result = model.transcribe(file_path) | |
| return result["text"] | |
| def extract_topics(text): | |
| summarizer = pipeline("summarization") | |
| summary = summarizer(text, max_length=50, min_length=25, do_sample=False) | |
| return summary[0]["summary_text"] | |
| def process_audio(file): | |
| # Transcribe the audio file | |
| transcript = transcribe_audio(file.name) | |
| # Extract topics from the transcription | |
| topics = extract_topics(transcript) | |
| return transcript, topics | |
| # Gradio interface | |
| interface = gr.Interface( | |
| fn=process_audio, | |
| inputs=gr.Audio(source="upload", type="filepath"), | |
| outputs=["text", "text"], | |
| title="Audio Transcription and Topic Extraction", | |
| description="Upload an audio file to get a transcription and extract main topics." | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch() | |