Spaces:
Runtime error
Runtime error
import streamlit as st | |
import models.file as mf | |
import models.video as mv | |
import models.whisper as mw | |
import models.subtitles as ms | |
import models.transcript as mt | |
def sidebar(): | |
device = st.sidebar.selectbox('Select Device',('CPU','GPU')) | |
st.sidebar.write('You selected:', device) | |
return device | |
def load_model(): | |
# if pipeline is in session state, return it | |
# else, load it and save it to session state | |
if 'pipeline' not in st.session_state: | |
device = mw.get_device() | |
st.session_state['pipeline'] = mw.get_pipe(device) | |
return st.session_state['pipeline'] | |
def app(): | |
device = sidebar() | |
pipeline = load_model() | |
st.title('Transcript Small Whisper') | |
st.write('Welcome to the Home page!') | |
file = st.file_uploader("Upload Files",type=['mp4','wav','mp3']) | |
if file is not None: | |
progress_bar = st.progress(0) | |
status_text = st.empty() | |
status_text.text('Uploading file...') | |
progress_bar.progress(10) | |
st.write(file.name) | |
status_text.text('File uploaded!') | |
file_details = {"FileName":file.name,"FileType":file.type,"FileSize":file.size} | |
st.write(file_details) | |
# st.write("type of file: ", type(file)) | |
# st.write("Dir: ", dir(file)) | |
# st.write("File: ", file.read()) | |
if mf.get_file_type(file) == 'video': | |
status_text.text('Extracting audio from video...') | |
audio = mv.get_audio_from_video(file, file.name.replace(".mp4",".mp3")) | |
if mf.get_file_type(file) == 'audio': | |
status_text.text('Extracting audio from audio...') | |
audio = file.read() | |
progress_bar.progress(30) | |
status_text.text('Transcribing audio...') | |
transcript = mw.get_prediction(pipeline, audio) | |
progress_bar.progress(60) | |
status_text.text('Subtitling audio...') | |
subtitles = mw.get_prediction_with_timelines(transcript, file.name + '.srt') | |
progress_bar.progress(90) | |
status_text.text('Saving subtitles...') | |
st.session_state['subtitles'] = subtitles | |
ms.save_subtitles(subtitles, file.name + '.srt') | |
status_text.text('Saving transcript...') | |
st.session_state['transcript'] = transcript | |
mt.save_transcript(transcript, file.name + '.txt') | |
status_text.text('Done!') | |
progress_bar.progress(100) | |
st.download_button( | |
label="Download Transcript", | |
data=st.session_state['transcript'], | |
file_name=file.name + '.txt', | |
mime='text/plain' | |
) | |
st.download_button( | |
label="Download Subtitles", | |
data=st.session_state['subtitles'], | |
file_name=file.name + '.srt', | |
mime='text/plain' | |
) | |
if __name__ == '__main__': | |
app() |