import streamlit as st import datetime import os # Initialize session state variables if 'transcript_history' not in st.session_state: st.session_state.transcript_history = [] # Create containers at the top level st.title("Speech Recognition with Transcript History") # Create the main layout col1, col2 = st.columns([2, 1]) with col1: # Speech recognition component html = """ Continuous Speech Demo
Ready
""" st.components.v1.html(html, height=400) with col2: # Display transcript history st.subheader("Transcript History") transcript_text = st.empty() # Save transcript function def save_transcript(text): if not os.path.exists('transcripts'): os.makedirs('transcripts') timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') filename = f"transcripts/transcript_{timestamp}.md" with open(filename, 'w', encoding='utf-8') as f: f.write(text) # Display full transcript if st.session_state.transcript_history: full_transcript = "\n".join(st.session_state.transcript_history) transcript_text.text_area("Full Transcript", value=full_transcript, height=300) # Save and download buttons col1, col2 = st.columns(2) with col1: if st.button("Save Transcript"): save_transcript(full_transcript) st.success("Transcript saved!") with col2: st.download_button( label="Download Transcript", data=full_transcript, file_name=f"transcript_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.md", mime="text/markdown" ) # Listen for transcript updates if st.session_state.get('transcriptUpdate'): new_text = st.session_state.transcriptUpdate st.session_state.transcript_history.append(new_text) st.session_state.transcriptUpdate = None # Clear the update st.experimental_rerun()