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
    """)