AI-Rephraser / app.py
imseldrith's picture
Update app.py
a96f15c
raw
history blame contribute delete
3.19 kB
import gradio as gr
from parrot import Parrot
from gtts import gTTS
from IPython.display import Audio
import os
import difflib
# Create a Parrot instance
parrot = Parrot(model_tag="t5-small", use_gpu=False)
# Supported languages for paraphrasing
languages = {
"English": "en",
"French": "fr",
"Spanish": "es",
"German": "de"
}
# Supported models for paraphrasing
models = {
"T5 Small": "t5-small",
"T5 Base": "t5-base",
"Pegasus": "google/pegasus-multi_news"
}
def paraphrase_text(text, language, model, level):
# Call the Parrot instance to paraphrase the input text
result = parrot.predict([text], model_tag=model, context_length=level, src_lang=language, dest_lang=language)
return result[0]['translation_text']
def speak_paraphrased_text(text, language):
# Use gTTS to generate an audio file of the paraphrased text and play it
tts = gTTS(text=text, lang=language)
tts.save("paraphrased_text.mp3")
return Audio("paraphrased_text.mp3", autoplay=True)
def highlight_diffs(original_text, paraphrased_text, level):
# Use diff-match-patch library to highlight the differences between original and paraphrased text
dmp = difflib.Differ()
diffs = list(dmp.compare(original_text.split(), paraphrased_text.split()))
if level == "only_changes":
return " ".join([diff[2:] for diff in diffs if diff.startswith("+ ")])
else:
return " ".join([diff[2:] if diff.startswith("+ ") else diff[2:].replace(diff[0], "<span style='background-color:yellow'>"+diff[0]+"</span>") for diff in diffs])
# Create a Gradio interface
interface = gr.Interface(
fn=paraphrase_text,
inputs=[
gr.inputs.Textbox(label="Enter text to paraphrase:"),
gr.inputs.Dropdown(list(languages.keys()), label="Select language for paraphrasing:"),
gr.inputs.Dropdown(list(models.keys()), label="Select model for paraphrasing:"),
gr.inputs.Slider(minimum=1, maximum=10, default=5, label="Level of paraphrasing:"),
gr.inputs.Checkbox(label="Generate audio output?"),
gr.inputs.File(label="Upload file containing text to paraphrase (Optional):")
],
outputs=[
gr.outputs.Textbox(label="Paraphrased text:"),
gr.outputs.File(label="Download paraphrased text as text file:"),
gr.outputs.HTML(label="Highlighted differences:")
],
title="Parrot Paraphrasing Tool",
description="Enter text to paraphrase, select language and model, and choose level of paraphrasing."
)
def app(text, language, model, level, audio_output, file_upload):
if file_upload:
with open(file_upload.name, "r", encoding="utf-8") as f:
text = f.read()
paraphrased_text = paraphrase_text(text, languages[language], models[model], level)
if audio_output:
speak_paraphrased_text(paraphrased_text, languages[language])
download_output = gr.outputs.File(paraphrased_text, label="Download paraphrased text as text file:", type="file", file_name="paraphrased_text.txt")
highlighted_diffs = highlight_diffs(text, paraphrased_text, level)
return paraphrased_text, download_output, highlighted_diffs
interface.launch()