Spaces:
Runtime error
Runtime error
| import subprocess | |
| subprocess.run(["pip", "install", "PyPDF2", "transformers", "bark", "gradio","soundfile","PyMuPDF","numpy"]) | |
| import PyPDF2 | |
| from transformers import pipeline | |
| from bark import SAMPLE_RATE, generate_audio, preload_models | |
| import gradio as gr | |
| import os | |
| import io | |
| import fitz | |
| import tempfile | |
| from PyPDF2 import PdfReader | |
| import numpy as np | |
| from tempfile import NamedTemporaryFile | |
| import soundfile as sf | |
| def readPDF(pdf_file_path): | |
| if not pdf_file_path.endswith(".pdf"): | |
| raise ValueError("Please upload a PDF file.") | |
| with open(pdf_file_path, 'rb') as file: | |
| pdf_reader = file.read() | |
| return pdf_reader | |
| def summarize_and_convert_to_audio(pdf_reader, page): | |
| temp_file = tempfile.NamedTemporaryFile(delete=False) | |
| temp_file.write(pdf_reader) | |
| temp_file_path = temp_file.name | |
| # Use PyMuPDF to read the PDF content | |
| pdf_document = fitz.open(temp_file_path) | |
| print(page) | |
| # Get the abstract page text | |
| abstract_page_text = pdf_document[int(page) - 1].get_text() | |
| summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
| summary = summarizer(abstract_page_text, max_length=20, min_length=20) | |
| preload_models() | |
| text = summary[0]['summary_text'] | |
| audio_array = generate_audio(text) | |
| #save temporary file audio to use it in the second step | |
| with NamedTemporaryFile(suffix=".wav", delete=False) as temp_wav_file: | |
| wav_file_path = temp_wav_file.name | |
| sf.write(wav_file_path, audio_array, SAMPLE_RATE) | |
| return wav_file_path | |
| def read_and_speech(pdf_file,abstract_page): | |
| print(pdf_file) | |
| pdf_file_path= pdf_file.name | |
| print(pdf_file_path) | |
| page=abstract_page | |
| reader=readPDF(pdf_file_path) | |
| audio=summarize_and_convert_to_audio(reader,page) | |
| return audio; | |
| # Define app name, app description, and examples | |
| app_name = "From PDF to Speech" | |
| app_description = "Convert text from a PDF file to audio. Upload a PDF file. We accept only PDF files with abstracts." | |
| iface = gr.Interface( | |
| fn=read_and_speech, | |
| inputs=[ | |
| gr.File(file_types=["pdf"], label="Upload PDF file"), | |
| gr.Textbox(label="Insert the page where the abstract is located")], | |
| outputs=gr.Audio(type="filepath"), | |
| title=app_name, | |
| description=app_description, | |
| examples=[ | |
| ["Article.pdf",1], | |
| ], | |
| allow_flagging="never" | |
| ) | |
| iface.launch(share=True) |