Spaces:
Runtime error
Runtime error
| # Import all of the dependencies | |
| import streamlit as st | |
| import os | |
| import imageio | |
| import numpy as np | |
| import tensorflow as tf | |
| from utils import load_data, num_to_char | |
| from modelutil import load_model | |
| # Set the layout to the streamlit app as wide | |
| st.set_page_config(layout='wide') | |
| # Setup the sidebar | |
| with st.sidebar: | |
| st.image('https://plus.unsplash.com/premium_photo-1682309676673-392c56015c5c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80') | |
| st.title('Lip Reading') | |
| st.info('This application is originally developed from the LipNet deep learning model.') | |
| st.title('LipNet using StreamLit βπ»') | |
| # Generating a list of options or videos | |
| options = os.listdir(os.path.join('data', 's1')) | |
| selected_video = st.selectbox('Choose video', options) | |
| # Generate two columns | |
| col1, col2 = st.columns(2) | |
| if options: | |
| # Rendering the video | |
| with col1: | |
| st.info('The video below displays the converted video in mp4 format') | |
| file_path = os.path.join('data','s1', selected_video) | |
| os.system(f'ffmpeg -i {file_path} -vcodec libx264 test_video.mp4 -y') | |
| # Rendering inside of the app | |
| video = open('test_video.mp4', 'rb') | |
| video_bytes = video.read() | |
| st.video(video_bytes) | |
| with col2: | |
| st.info('π This is all the machine learning model sees when making a prediction') | |
| video, annotations,image_data = load_data(tf.convert_to_tensor(file_path)) | |
| # st.text(video.shape) | |
| imageio.mimsave('animation.gif',np.squeeze((video * 25).astype(np.uint8)) , duration=100) | |
| st.image('animation.gif', width=400) | |
| st.info('This is the output of the machine learning model as tokens') | |
| model = load_model() | |
| yhat = model.predict(tf.expand_dims(video, axis=0)) | |
| decoder = tf.keras.backend.ctc_decode(yhat, [75], greedy=True)[0][0].numpy() | |
| st.text(decoder) | |
| # Convert prediction to text | |
| st.info('Decode the raw tokens into words') | |
| converted_prediction = tf.strings.reduce_join(num_to_char(decoder)).numpy().decode('utf-8') | |
| st.text(converted_prediction) | |