import os import gradio as gr import transformers transformers.utils.move_cache() from transformers import pipeline from pytube import YouTube auto_speech_recog = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h") summarizer = pipeline("summarization", model="facebook/bart-large-cnn", max_length="5000") def transcribe_upload(input_file): out = auto_speech_recog(input_file, chunk_length_s=10, stride_length_s=(2, 2))['text'].lower() print("/n", out.count(" "), "\n") return out def transcribe_record(input_file): return auto_speech_recog(input_file, chunk_length_s=10, stride_length_s=(2, 2))['text'].lower() def text_summerization(text_input): return summarizer(text_input, max_length=1432, min_length=300, do_sample=False, truncation=True) def load_video_url(video, url): video = gr.Video() current_dir = os.getcwd() try: yt = YouTube(url) except: print("Connection Error") try: highest_audio = yt.streams.filter(progressive=False).get_highest_resolution().itag file_url = os.path.join(current_dir, "audio", "test.mp4") yt.streams.get_by_itag(highest_audio).download(output_path=os.path.join(current_dir, "audio"), filename = "test.mp4") except : print("error") return file_url with gr.Blocks(css = "css/index.css") as iface: gr.Markdown(elem_id="logo" , value="![](data:image/png;base64,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)") with gr.Column(): with gr.Tab("Record Audio"): input_record = gr.Audio(label = 'Record Audio Input',source="microphone",type="filepath") gr_transcribe_record = gr.Button('Transcribe') with gr.Tab("Upload Audio as File"): input_upload = gr.Audio(label = 'Upload Audio',source="upload",type="filepath") gr_transcribe_upload = gr.Button('Transcribe') with gr.Tab("URL"): with gr.Row(): with gr.Column(): input_url = gr.Textbox(elem_id="url_input",label="URL", show_label=False) video_url = gr.Video(elem_id="video_elem", show_label=False, interactive = False) video_url.style(width=600, height=400) input_url.submit(load_video_url, [video_url, input_url], video_url) gr_transcribe_url = gr.Button('Transcribe') asr_out = gr.Textbox(label="Text transcribe") summerize_btn = gr.Button("Summerize") summerize_out = gr.Textbox(label="Summrization") gr_transcribe_url.click(transcribe_upload, video_url, asr_out) gr_transcribe_record.click(transcribe_record, input_record, asr_out) gr_transcribe_upload.click(transcribe_upload, input_upload, asr_out) summerize_btn.click(text_summerization, asr_out, summerize_out) iface.launch(debug=True)