abhisheksasidharanr's picture
Update app.py
d5bb9eb verified
raw
history blame
3.1 kB
import streamlit as st
import assemblyai as aai
from enum import Enum
if 'body' not in st.session_state:
st.session_state.body = []
st.session_state.summary = ""
st.session_state.senti = ""
def readFiles(file):
audio_process(file)
def audio_process(file):
aai.settings.api_key = st.secrets["ASSEMBLY_KEY"]
config = aai.TranscriptionConfig(
speech_model=aai.SpeechModel.best,
iab_categories=True,
# auto_chapters=True,
# content_safety=True,
# auto_highlights=True,
sentiment_analysis=True,
entity_detection=True,
speaker_labels=True,
# filter_profanity=True,
language_detection=True,
summarization=True,
# summary_type=aai.SummarizationType.bullets
).set_redact_pii(
policies=[
aai.PIIRedactionPolicy.medical_condition,
# aai.PIIRedactionPolicy.email_address,
# aai.PIIRedactionPolicy.phone_number,
# aai.PIIRedactionPolicy.banking_information,
# aai.PIIRedactionPolicy.credit_card_number,
# aai.PIIRedactionPolicy.credit_card_cvv,
# aai.PIIRedactionPolicy.date_of_birth,
# aai.PIIRedactionPolicy.person_name
]
)
transcriber = aai.Transcriber(config=config)
transcript = transcriber.transcribe(file)
if transcript.status == aai.TranscriptStatus.error:
print(transcript.error)
else:
for utterance in transcript.utterances:
result = {'speaker': utterance.speaker, 'answer': utterance.text}
st.session_state.body.append(result)
st.session_state.summary = transcript.summary
negative = 0
positive = 0
neutral = 0
for sentiment_result in transcript.sentiment_analysis:
sents = sentiment_result.sentiment
if sents.value=='NEGATIVE':
negative = negative+1
if sents.value=='NEUTRAL':
neutral = neutral+1
if sents.value=='POSITIVE':
positive = positive+1
st.session_state.senti = f"Neutral: {neutral}, Positive : {positive}, Negative : {negative}"
col1, col2 = st.columns(2)
def main():
with st.sidebar:
st.header("Upload Audio File Here", divider='rainbow')
files = st.file_uploader('', accept_multiple_files=False)
button = st.button("Process")
if button:
if files:
with st.spinner("Processing"):
readFiles(files)
else:
st.error('No files selected')
with col1:
st.subheader('CONVERSATIONS', divider='rainbow')
for chat in st.session_state.body:
with st.chat_message(chat["speaker"]):
st.write(chat["answer"])
with col2:
st.subheader('SUMMARY', divider='rainbow')
st.write(st.session_state.summary)
st.subheader('SENTIMENT ANALYSIS', divider='rainbow')
st.write(st.session_state.senti)
if __name__ == "__main__":
main()