File size: 1,637 Bytes
59ff216
 
ce2a837
59ff216
ce2a837
59ff216
 
ce2a837
59ff216
ce2a837
 
59ff216
ce2a837
59ff216
ce2a837
 
 
 
66cc2a4
 
ce2a837
 
 
 
bb08a5e
ce2a837
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from transformers import pipeline
from io import BytesIO

# Load models optimized for CPU
transcriber = pipeline("automatic-speech-recognition", model="openai/whisper-tiny.en", device=-1)
summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6", device=-1)
question_generator = pipeline("text2text-generation", model="google/t5-efficient-tiny", device=-1)

# Streamlit UI
st.title("Curate AI - Audio Transcription and Summarization")

uploaded_file = st.file_uploader("Upload an audio file", type=["wav", "mp3", "m4a"])
if uploaded_file is not None:
    st.audio(uploaded_file, format='audio/wav')

    # Convert the uploaded file to a format suitable for the transcription model
    audio_bytes = BytesIO(uploaded_file.read())
    
    # Transcribing the audio
    st.write("Transcribing the audio...")
    lecture_text = transcriber(audio_bytes)["text"]
    st.write("Transcription: ", lecture_text)
    
    # Summarization
    st.write("Summarizing the transcription...")
    num_words = len(lecture_text.split())
    max_length = min(num_words, 1024)  # Max input for BART is 1024 tokens
    summary = summarizer(lecture_text, max_length=1024, min_length=int(max_length * 0.1), truncation=True)
    st.write("Summary: ", summary[0]['summary_text'])
    
    # Question Generation
    context = f"Based on the following lecture summary: {summary[0]['summary_text']}, generate some relevant practice questions."
    st.write("Generating questions...")
    questions = question_generator(context, max_new_tokens=50)
    for question in questions:
        st.write(question["generated_text"])