Spaces:
Sleeping
Sleeping
File size: 4,395 Bytes
79071c3 a3461e0 2972be3 2feaaff 1369650 a3461e0 dc4c085 6f9a04e 1369650 a3461e0 1369650 3e28394 a3461e0 2972be3 a3461e0 1369650 190699f 3e28394 1369650 9db1c97 2feaaff 3e28394 1369650 2feaaff 3e28394 1369650 3e28394 2028126 3e28394 dc4c085 2feaaff 3e28394 2feaaff 1369650 22e46e1 79071c3 1369650 22e46e1 3e28394 2028126 2feaaff dc4c085 1369650 2028126 3e28394 dc4c085 1369650 2028126 1369650 2028126 dc4c085 2028126 dc4c085 1369650 2028126 3e28394 9db1c97 3e28394 9db1c97 3e28394 1369650 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | from scripts.save_pdf import save_minutes_pdf
import streamlit as st
from scripts.transcribe import SpeechToText
from scripts.summarize import TextSummarizer
from scripts.translate_summary import SummaryTranslator
from scripts.gemini_minutes import generate_minutes
from fpdf import FPDF
import os
import datetime
# Ensure directories exist
for folder in ["audio_files", "transcripts", "minutes"]:
os.makedirs(folder, exist_ok=True)
# Initialize objects
stt = SpeechToText(model_size="base")
summarizer = TextSummarizer()
translator = SummaryTranslator()
# Streamlit Tabs
tab_home, tab_transcript, tab_history, tab_info = st.tabs(["π Home", "π€ Transcript", "π History", "βΉοΈ Info"])
# Home Tab
with tab_home:
st.title("ποΈ AudioMind SmartVoice Documentation Assistant")
st.markdown("Efficient meetings with Gemini-powered minutes generation, transcription, and translations.")
st.image("https://images.unsplash.com/photo-1573164713988-8665fc963095", caption="Power meetings with Gemini AI")
# Transcript Tab
with tab_transcript:
st.header("π€ Upload & Generate Minutes")
uploaded_file = st.file_uploader("Upload audio", type=["wav", "mp3", "m4a"])
if uploaded_file:
audio_path = os.path.join("audio_files", uploaded_file.name)
with open(audio_path, "wb") as f:
f.write(uploaded_file.getbuffer())
st.audio(audio_path)
if st.button("Generate Transcript, Summary & Minutes"):
with st.spinner("Processing..."):
transcript = stt.transcribe(audio_path)
summary = summarizer.summarize_text(transcript) if len(transcript.split()) >= 30 else "Transcript too short."
translations = {
'hi': translator.translate_summary(summary, 'hi'),
'ta': translator.translate_summary(summary, 'ta'),
'te': translator.translate_summary(summary, 'te')
}
# Gemini Minutes Generation
minutes_content = generate_minutes(transcript, summary, translations)
# Save PDF clearly
timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
minutes_filename = f"Minutes_{timestamp}.pdf"
minutes_path = os.path.join("minutes", minutes_filename)
from fpdf import FPDF
# Use clearly defined Unicode-compatible PDF function
save_minutes_pdf(minutes_content, minutes_path)
st.subheader("π Transcript")
st.text_area("Transcript", transcript, height=200)
st.subheader("π Summary")
st.write(summary)
st.subheader("π Translations")
st.markdown(f"**Hindi:** {translations['hi']}")
st.markdown(f"**Tamil:** {translations['ta']}")
st.markdown(f"**Telugu:** {translations['te']}")
with open(minutes_path, "rb") as pdf_file:
st.download_button("Download Minutes PDF", pdf_file, file_name=minutes_filename)
# History Tab
with tab_history:
st.header("π Minutes History")
minutes_files = sorted(os.listdir("minutes"), reverse=True)
if minutes_files:
for file in minutes_files:
date = file.replace("Minutes_", "").replace(".pdf", "").replace("_", " ")
file_path = os.path.join("minutes", file)
col1, col2 = st.columns([3, 1])
col1.write(f"π
{date}")
with open(file_path, "rb") as f:
col2.download_button("Download", data=f, file_name=file)
else:
st.info("No previous minutes found.")
# Info Tab
with tab_info:
st.header("π©βπ» Developers")
st.markdown("""
Anushree Mahajan: https://www.linkedin.com/in/anushree-mahajan-2a5a612b5?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
Prerna Jondhale: https://www.linkedin.com/in/prerana-jondhale-079321359?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
Pooja Kulkarni: https://www.linkedin.com/in/pooja-kulkarni-317b882b5?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
Vaishnavi Gurdale: https://www.linkedin.com/in/vaishnavi-gurdale-6149782b5?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app
""")
|