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="") 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)