Spaces:
Build error
Build error
import streamlit as st | |
import pandas as pd | |
from CallCenter import get_included_files, convertMp3ToWav, diarize_wav_file | |
import os | |
from segment_wave_files import segment_wave_files | |
from transcript_analysis import transcript_analysis | |
from transcribe_files import transcribe_segments | |
location, wave_files = get_included_files() | |
def main(): | |
# --- Streamlit App --- | |
st.title("Call Center Analysis") | |
# --- Selectable Elements --- | |
def get_file_sel(): | |
if selected_file is None: | |
return | |
st.session_state.selected_file = location+selected_file # Store the selected option in session state | |
st.write(f"{selected_file} is selected") # Display feedback | |
st.session_state.wave_file = st.session_state.selected_file | |
selected_file = st.selectbox("Select an element:", wave_files) | |
get_file_sel() | |
# --- File Upload --- | |
uploaded_file = st.file_uploader("Upload a file", type=['mp3', 'wav']) | |
if uploaded_file: | |
st.session_state.uploaded_file = uploaded_file.name | |
if st.session_state.uploaded_file is not None: | |
if os.path.splitext(uploaded_file.name)[1].lower()==".mp3": | |
bytes_data = uploaded_file.read() # read the content of the file in binary | |
if not os.path.exists("/tmp"): | |
os.makedirs("/tmp") | |
with open(os.path.join("/tmp", uploaded_file.name), "wb") as f: | |
f.write(bytes_data) # write this content elsewhere | |
wav_file = convertMp3ToWav(f"/tmp/{uploaded_file.name}") | |
st.session_state.wave_file = wav_file # Store the selected option in session state | |
else: | |
bytes_data = uploaded_file.read() # read the content of the file in binary | |
with open(os.path.join("/tmp", uploaded_file.name), "wb") as f: | |
f.write(bytes_data) # write this content elsewhere | |
st.session_state.wave_file = os.path.join("/tmp", uploaded_file.name) # Store the selected option in session state | |
st.write(f"You uploaded: {uploaded_file.name}") # Display feedback | |
uploaded_file = None | |
analysis = "" | |
# --- Start Button --- | |
if st.button("Start"): | |
if st.session_state.wave_file is not None: | |
with st.spinner("Please wait..."): | |
try: | |
speakers = diarize_wav_file(st.session_state.wave_file ) | |
speakers = segment_wave_files(speakers, st.session_state.wave_file ) | |
transcripts = transcribe_segments(speakers) | |
analysis = transcript_analysis(transcripts) | |
except Exception as e: | |
st.error(f"Error processing file: {st.session_state.wave_file}") | |
else: | |
st.warning("Please upload a file.") | |
# --- Reset Button --- | |
if st.button("Reset"): | |
st.experimental_rerun() | |
# --- Large Text Box (Display Only) --- | |
if analysis != "": | |
analysis = analysis[9:] | |
index=analysis.lower().find("sentiment") | |
summary=analysis[0:index].lstrip("\n") | |
sentiment = analysis[index:] | |
index=sentiment.lower().find(":") | |
sentiment = sentiment[index+1:].lstrip("\n") | |
height = 34*15 | |
st.text_area("SUMMARY:", value=summary, disabled=True, height=height) | |
st.text_area("SENTIMENT:", value=sentiment, disabled=True, height=height) | |
main() |