File size: 2,610 Bytes
87359bb
69bf66b
 
87359bb
69bf66b
 
 
 
 
 
651ae26
 
 
 
 
 
 
87359bb
e31036d
651ae26
 
87359bb
edcf95f
 
 
4f26484
edcf95f
 
e31036d
651ae26
e31036d
651ae26
edcf95f
 
 
 
 
2212eea
 
 
 
 
 
 
 
 
 
87359bb
651ae26
edcf95f
651ae26
2212eea
651ae26
 
2212eea
 
 
edcf95f
2212eea
651ae26
204ee93
2212eea
 
 
edcf95f
2212eea
 
edcf95f
e31036d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import whisper
from pytube import YouTube
from transformers import pipeline
import gradio as gr
import os

model = whisper.load_model("base")
summarizer = pipeline("summarization")

def get_audio(url):
    yt = YouTube(url)
    video = yt.streams.filter(only_audio=True).first()
    out_file = video.download(output_path=".")
    base, ext = os.path.splitext(out_file)
    new_file = base + '.mp3'
    os.rename(out_file, new_file)
    return new_file

def get_text_from_url(url):
    result = model.transcribe(get_audio(url))
    return result['text']

def get_text_from_file(file):
    # Assuming the uploaded file is already in MP3 format
    result = model.transcribe(file.name)
    return result['text']

def get_summary_from_url(url):
    article = get_text_from_url(url)
    b = summarizer(article)
    return b[0]['summary_text']

def get_summary_from_file(file):
    article = get_text_from_file(file)
    b = summarizer(article)
    return b[0]['summary_text']

def process_url(url):
    transcription = get_text_from_url(url)
    summary = get_summary_from_url(url)
    return summary, transcription

def process_file(file):
    transcription = get_text_from_file(file)
    summary = get_summary_from_file(file)
    return summary, transcription

with gr.Blocks() as demo:
    gr.Markdown("<h1><center>Youtube video transcription with OpenAI's Whisper</center></h1>")
    gr.Markdown("<center>Enter the link of any youtube video or upload an MP4 file to get the transcription and a summary in text form.</center>")
    
    with gr.Tab('Youtube Video'):
        with gr.Row():
            input_text = gr.Textbox(placeholder='Enter the Youtube video URL', label='URL')
            output_summary = gr.Textbox(placeholder='Summary text of the Youtube Video', label='Summary')
            output_transcription = gr.Textbox(placeholder='Transcription of the video', label='Transcription')
        result_button = gr.Button('Process Youtube Video')
        
    with gr.Tab('Uploaded MP4'):
        with gr.Row():
            input_file = gr.File(label='Upload MP4')
            output_file_summary = gr.Textbox(placeholder='Summary text of the video', label='Summary')
            output_file_transcription = gr.Textbox(placeholder='Transcription of the video', label='Transcription')
        result_button_file = gr.Button('Process Uploaded MP4')

    result_button.click(process_url, inputs=input_text, outputs=[output_summary, output_transcription])
    result_button_file.click(process_file, inputs=input_file, outputs=[output_file_summary, output_file_transcription])
    
demo.launch(debug=True)