Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -50,18 +50,28 @@ def generate_notes(transcript):
|
|
| 50 |
except LookupError:
|
| 51 |
sentences = custom_sent_tokenize(transcript)
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
mcqs = []
|
| 57 |
for sentence in sentences[:5]:
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
pdf_path = create_pdf(transcript, long_questions, short_questions, mcqs)
|
| 66 |
return pdf_path
|
| 67 |
|
|
@@ -69,24 +79,29 @@ def create_pdf(transcript, long_questions, short_questions, mcqs):
|
|
| 69 |
pdf = FPDF()
|
| 70 |
pdf.add_page()
|
| 71 |
|
|
|
|
| 72 |
pdf.set_font("Arial", "B", 16)
|
| 73 |
-
pdf.cell(200, 10, "Transcription Notes", ln=True, align="C")
|
| 74 |
|
|
|
|
| 75 |
pdf.set_font("Arial", "", 12)
|
| 76 |
pdf.multi_cell(0, 10, f"Transcription:\n{transcript.encode('latin1', 'replace').decode('latin1')}\n\n")
|
| 77 |
|
|
|
|
| 78 |
pdf.set_font("Arial", "B", 14)
|
| 79 |
pdf.cell(200, 10, "Long Questions", ln=True)
|
| 80 |
pdf.set_font("Arial", "", 12)
|
| 81 |
for question in long_questions:
|
| 82 |
pdf.multi_cell(0, 10, f"- {question.encode('latin1', 'replace').decode('latin1')}\n")
|
| 83 |
|
|
|
|
| 84 |
pdf.set_font("Arial", "B", 14)
|
| 85 |
pdf.cell(200, 10, "Short Questions", ln=True)
|
| 86 |
pdf.set_font("Arial", "", 12)
|
| 87 |
for question in short_questions:
|
| 88 |
pdf.multi_cell(0, 10, f"- {question.encode('latin1', 'replace').decode('latin1')}\n")
|
| 89 |
|
|
|
|
| 90 |
pdf.set_font("Arial", "B", 14)
|
| 91 |
pdf.cell(200, 10, "Multiple Choice Questions (MCQs)", ln=True)
|
| 92 |
pdf.set_font("Arial", "", 12)
|
|
@@ -121,6 +136,7 @@ iface = gr.Interface(
|
|
| 121 |
inputs=gr.Audio(type="filepath"),
|
| 122 |
outputs=gr.File(label="Download PDF with Notes or Error Report"),
|
| 123 |
title="Voice to Text Converter and Notes Generator",
|
|
|
|
| 124 |
)
|
| 125 |
|
| 126 |
iface.launch()
|
|
|
|
| 50 |
except LookupError:
|
| 51 |
sentences = custom_sent_tokenize(transcript)
|
| 52 |
|
| 53 |
+
# Generate long questions
|
| 54 |
+
long_questions = [f"Explain the concept discussed in: '{sentence}'." for sentence in sentences[:5]]
|
| 55 |
|
| 56 |
+
# Generate short questions
|
| 57 |
+
short_questions = [f"What does '{sentence.split()[0]}' mean in the context of this text?" for sentence in sentences[:5]]
|
| 58 |
+
|
| 59 |
+
# Generate MCQs with relevant distractors
|
| 60 |
mcqs = []
|
| 61 |
for sentence in sentences[:5]:
|
| 62 |
+
if len(sentence.split()) > 1: # Ensure there are enough words to create meaningful options
|
| 63 |
+
key_word = sentence.split()[0] # Use the first word as a key term
|
| 64 |
+
distractors = ["Term A", "Term B", "Term C"] # Replace with relevant terms if needed
|
| 65 |
+
options = [key_word] + distractors
|
| 66 |
+
random.shuffle(options) # Shuffle options for randomness
|
| 67 |
+
mcq = {
|
| 68 |
+
"question": f"What is '{key_word}' based on the context?",
|
| 69 |
+
"options": options,
|
| 70 |
+
"answer": key_word
|
| 71 |
+
}
|
| 72 |
+
mcqs.append(mcq)
|
| 73 |
+
|
| 74 |
+
# Generate and save a structured PDF
|
| 75 |
pdf_path = create_pdf(transcript, long_questions, short_questions, mcqs)
|
| 76 |
return pdf_path
|
| 77 |
|
|
|
|
| 79 |
pdf = FPDF()
|
| 80 |
pdf.add_page()
|
| 81 |
|
| 82 |
+
# Add title
|
| 83 |
pdf.set_font("Arial", "B", 16)
|
| 84 |
+
pdf.cell(200, 10, "Transcription Notes and Questions", ln=True, align="C")
|
| 85 |
|
| 86 |
+
# Add transcription content
|
| 87 |
pdf.set_font("Arial", "", 12)
|
| 88 |
pdf.multi_cell(0, 10, f"Transcription:\n{transcript.encode('latin1', 'replace').decode('latin1')}\n\n")
|
| 89 |
|
| 90 |
+
# Add long questions
|
| 91 |
pdf.set_font("Arial", "B", 14)
|
| 92 |
pdf.cell(200, 10, "Long Questions", ln=True)
|
| 93 |
pdf.set_font("Arial", "", 12)
|
| 94 |
for question in long_questions:
|
| 95 |
pdf.multi_cell(0, 10, f"- {question.encode('latin1', 'replace').decode('latin1')}\n")
|
| 96 |
|
| 97 |
+
# Add short questions
|
| 98 |
pdf.set_font("Arial", "B", 14)
|
| 99 |
pdf.cell(200, 10, "Short Questions", ln=True)
|
| 100 |
pdf.set_font("Arial", "", 12)
|
| 101 |
for question in short_questions:
|
| 102 |
pdf.multi_cell(0, 10, f"- {question.encode('latin1', 'replace').decode('latin1')}\n")
|
| 103 |
|
| 104 |
+
# Add MCQs
|
| 105 |
pdf.set_font("Arial", "B", 14)
|
| 106 |
pdf.cell(200, 10, "Multiple Choice Questions (MCQs)", ln=True)
|
| 107 |
pdf.set_font("Arial", "", 12)
|
|
|
|
| 136 |
inputs=gr.Audio(type="filepath"),
|
| 137 |
outputs=gr.File(label="Download PDF with Notes or Error Report"),
|
| 138 |
title="Voice to Text Converter and Notes Generator",
|
| 139 |
+
description="This app converts audio to text and generates academic questions including long, short, and multiple-choice questions."
|
| 140 |
)
|
| 141 |
|
| 142 |
iface.launch()
|