import streamlit as st import sqlite3 from datetime import datetime import speech_recognition as sr from docx import Document from io import BytesIO # Database setup def create_db(): conn = sqlite3.connect("records.db") c = conn.cursor() c.execute(""" CREATE TABLE IF NOT EXISTS records ( id INTEGER PRIMARY KEY AUTOINCREMENT, text TEXT, timestamp TEXT ) """) conn.commit() conn.close() def insert_record(text, timestamp): conn = sqlite3.connect("records.db") c = conn.cursor() c.execute("INSERT INTO records (text, timestamp) VALUES (?, ?)", (text, timestamp)) conn.commit() conn.close() def fetch_records(): conn = sqlite3.connect("records.db") c = conn.cursor() c.execute("SELECT * FROM records") records = c.fetchall() conn.close() return records # Speech to text def speech_to_text(): recognizer = sr.Recognizer() with sr.Microphone() as source: st.info("Listening...") try: audio = recognizer.listen(source, timeout=10) text = recognizer.recognize_google(audio) return text except sr.UnknownValueError: return "Could not understand audio" except sr.RequestError as e: return f"Error: {e}" # Generate a Word document def create_document(content): doc = Document() doc.add_heading("Recorded Text", level=1) doc.add_paragraph(content) buffer = BytesIO() doc.save(buffer) buffer.seek(0) return buffer # Streamlit app def main(): create_db() st.title("Voice to Text App") # Voice recording st.header("1. Record Your Voice") if st.button("Record Voice"): text = speech_to_text() if text: st.success("Text Recorded!") st.write(text) timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") insert_record(text, timestamp) # Display records st.header("2. View Saved Records") records = fetch_records() for record in records: st.write(f"{record[1]} (Recorded on {record[2]})") # Download document st.header("3. Download or Share Document") if records: if st.button("Generate Document"): content = "\n\n".join([f"{rec[1]} (Recorded on {rec[2]})" for rec in records]) doc_file = create_document(content) st.download_button("Download Document", doc_file, "recorded_text.docx") if __name__ == "__main__": main()