import speech_recognition as sr
from transformers import pipeline
from fpdf import FPDF
# -------------------------
# 1. Record or load audio
# -------------------------
def transcribe_audio(audio_file=None, duration=30):
recognizer = sr.Recognizer()
if audio_file:
with sr.AudioFile(audio_file) as source:
audio = recognizer.record(source)
else:
with sr.Microphone() as source:
print("🎙️ Recording meeting... Speak now.")
audio = recognizer.listen(source, phrase_time_limit=duration)
try:
print("🔎 Transcribing...")
return recognizer.recognize_google(audio)
except sr.UnknownValueError:
return "Could not understand audio."
except sr.RequestError:
return "API unavailable."
# -------------------------
# 2. Summarize transcript
# -------------------------
def summarize_text(text):
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
summary = summarizer(text, max_length=150, min_length=50, do_sample=False)
return summary[0]['summary_text']
# -------------------------
# 3. Save notes to PDF
# -------------------------
def save_to_pdf(transcript, summary, filename="meeting_notes.pdf"):
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.multi_cell(0, 10, " Meeting Transcript:\n" + transcript + "\n\n")
pdf.multi_cell(0, 10, " Meeting Summary:\n" + summary)
pdf.output(filename)
print(f"✅ Notes saved as {filename}")
# -------------------------
# Main
# -------------------------
if __name__ == "__main__":
# Record live OR use existing audio file (WAV recommended)
transcript = transcribe_audio(audio_file=None, duration=20)
print("\n Transcript:\n", transcript)
if transcript and len(transcript) > 50:
summary = summarize_text(transcript)
print("\n Summary:\n", summary)
save_to_pdf(transcript, summary)
else:
print(" Transcript too short to summarize.")
No comments:
Post a Comment