# -*- coding: utf-8 -*- """app.py.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1zk7xuWSf7ii7zowOqNVLy0FwXYVHYE2V """ # https://huggingface.co/spaces/eHemink/assessment3_part2 # Here are imports import PyPDF2 import re import transformers import scipy from transformers import pipeline from bark import SAMPLE_RATE, generate_audio, preload_models import gradio as gr import os # Here is the code def abstract_to_audio(insert_pdf): # Extracting the abstract text from the article pdf def extract_abstract(pdf_file): # Open the PDF file in read-binary mode with open(pdf_file, 'rb') as file: # Create a PDF reader object pdf_reader = PyPDF2.PdfReader(file) # Initialize an empty string to store abstract content abstract_text = '' # Loop through each page in the PDF for page_num in range(len(pdf_reader.pages)): # Get the text from the current page page = pdf_reader.pages[page_num] text = page.extract_text() # Use regular expression to find the "Abstract" section abstract_match = re.search(r'\bAbstract\b', text, re.IGNORECASE) if abstract_match: # Get the text after the "Abstract" heading until the next section, indicated by "Introduction" heading start_index = abstract_match.end() next_section_match = re.search(r'\bIntroduction\b', text[start_index:]) if next_section_match: end_index = start_index + next_section_match.start() abstract_text = text[start_index:end_index] else: # If no next section found, extract text till the end abstract_text = text[start_index:] break # Exit loop once abstract is found return abstract_text.strip() abstract = extract_abstract(insert_pdf) # Creating a summarization pipeline model = "lidiya/bart-large-xsum-samsum" pipeline1 = pipeline(task = "summarization", model = model) # Summarizing the extracted abstract summarized = pipeline1(abstract) print(summarized[0]['summary_text']) tss_prompt = summarized[0]['summary_text'] # Generate audio file that speaks the generated sentence using Bark # download and load all models preload_models() # generate audio from text audio_array = generate_audio(tss_prompt) return (SAMPLE_RATE, audio_array) my_app = gr.Interface(fn=abstract_to_audio, inputs='file', outputs='audio', title="PDF Abstract Summarizer", description="Extracts abstracts from PDFs and generates audio summaries. This app only accepts PDFs with abstracts.", examples=[os.path.join(os.path.dirname(__file__), "Hidden_Technical_Debt_in_MLSystems.pdf")],cache_examples=True) my_app.launch()