Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import pipeline | |
from pydub import AudioSegment | |
import os | |
import tempfile | |
# ืืฆืืจืช pipeline ืืชืืืื ืืืกืืืื | |
transcriber = pipeline("automatic-speech-recognition", model="openai/whisper-base") | |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
def summarize_audio_or_video(file_path): | |
try: | |
# ืืืืงื ืื ืืงืืืฅ ืืื ืืืืื ืืืืจืช ืืืืื ืืืืืื ืืืืืช ืืฆืืจื | |
if file_path.endswith((".mp4", ".mov", ".avi", ".mkv")): | |
audio_file = convert_video_to_audio(file_path) | |
else: | |
audio_file = file_path | |
# ืืืืงืช ืืืืืื ืืงืืขืื ืฉื 30 ืฉื ืืืช | |
segments = split_audio(audio_file) | |
# ืชืืืื ืื ืงืืข ืืืฆืืจืคืืช ืืชืืืื ืืกืืคื | |
transcript = "" | |
for segment in segments: | |
segment_text = transcriber(segment, return_timestamps=False)["text"] | |
transcript += " " + segment_text | |
# ืกืืืื ืืชืืืื | |
summary = summarizer(transcript, max_length=50, min_length=25, do_sample=False)[0]["summary_text"] | |
# ืืืืงืช ืงืืืฅ ืืืืืื ืืืืืช ืืฆืืจื (ืื ืืื ืืืืื) | |
if audio_file != file_path: | |
os.remove(audio_file) | |
return summary | |
except Exception as e: | |
return f"ืฉืืืื ืืขืืืื ืืงืืืฅ: {str(e)}" | |
def convert_video_to_audio(video_file): | |
# ืืฆืืจืช ืงืืืฅ ืืืืื ืืื ื | |
temp_audio = tempfile.mktemp(suffix=".wav") | |
video = AudioSegment.from_file(video_file) | |
video.export(temp_audio, format="wav") | |
return temp_audio | |
def split_audio(audio_file, segment_length=30 * 1000): # 30 ืฉื ืืืช ืืืืืืฉื ืืืช | |
audio = AudioSegment.from_file(audio_file) | |
segments = [] | |
for i in range(0, len(audio), segment_length): | |
segment = audio[i:i + segment_length] | |
temp_segment = tempfile.mktemp(suffix=".wav") | |
segment.export(temp_segment, format="wav") | |
segments.append(temp_segment) | |
return segments | |
# ืืืืจืช ืืืฉืง Gradio | |
interface = gr.Interface( | |
fn=summarize_audio_or_video, | |
inputs=gr.Audio(type="filepath"), | |
outputs="text", | |
title="ืืืืจ ืืืืื/ืืืืื ืืกืืืื", | |
description="ืืขืื ืงืืืฅ ืืืืื ืื ืืืืื ืฉื ืืจืฆื ืืงืื ืกืืืื ืงืฆืจ ืฉื ืืชืืื." | |
) | |
if __name__ == "__main__": | |
interface.launch() | |