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()