Spaces:
Sleeping
Sleeping
import streamlit as st | |
import speech_recognition as sr | |
from threading import Timer | |
import time | |
def listen_for_speech(): | |
# Initialize recognizer class | |
r = sr.Recognizer() | |
# Starts listening in the background (non-blocking) | |
with sr.Microphone() as source: | |
# Adjust for ambient noise for 1 second | |
r.adjust_for_ambient_noise(source, duration=1) | |
st.write("Listening...") | |
try: | |
# Listen for 5 seconds, then this turns into pumpkin (stops listening) | |
audio = r.listen(source, timeout=5, phrase_time_limit=5) | |
# Use Google Web Speech API to convert audio to text | |
text = r.recognize_google(audio) | |
st.write("You said: " + text) | |
except sr.WaitTimeoutError: | |
st.warning("Hmm... It seems the airwaves were silent. Please press the button and speak up!") | |
except Exception as e: | |
# Handle all possible exceptions from the recognizer | |
st.error(f"Oops! Something went wrong. Here's what: {e}") | |
def start_listening(): | |
# This is where the magic happens... or starts happening | |
t = Timer(0, listen_for_speech) | |
t.start() | |
# We'll give it 10 seconds total before killing this quest for words | |
# Just enough to go "Anybody home?" or "Going once, going twice..." | |
time.sleep(10) | |
t.cancel() | |
# Streamlit app begins | |
st.title('The Blabber Be-Gone!') | |
if st.button('Press me and speak!'): | |
start_listening() |