|
|
import streamlit as st |
|
|
import speech_recognition as sr |
|
|
from gtts import gTTS |
|
|
from langdetect import detect |
|
|
import os |
|
|
import tempfile |
|
|
|
|
|
|
|
|
recognizer = sr.Recognizer() |
|
|
|
|
|
|
|
|
def speak_text(text): |
|
|
tts = gTTS(text=text, lang='en') |
|
|
|
|
|
with tempfile.NamedTemporaryFile(delete=True) as tmpfile: |
|
|
tmpfile_name = tmpfile.name + '.mp3' |
|
|
tts.save(tmpfile_name) |
|
|
os.system(f"mpg321 {tmpfile_name}") |
|
|
|
|
|
|
|
|
def recognize_speech(): |
|
|
with sr.Microphone() as source: |
|
|
st.write("Listening...") |
|
|
audio = recognizer.listen(source) |
|
|
try: |
|
|
st.write("Recognizing...") |
|
|
text = recognizer.recognize_google(audio) |
|
|
return text |
|
|
except sr.UnknownValueError: |
|
|
st.write("Sorry, I could not understand the audio.") |
|
|
return "" |
|
|
except sr.RequestError: |
|
|
st.write("Could not request results; check your internet connection.") |
|
|
return "" |
|
|
|
|
|
|
|
|
def detect_language(text): |
|
|
try: |
|
|
lang = detect(text) |
|
|
return lang |
|
|
except Exception as e: |
|
|
st.write(f"Error in language detection: {e}") |
|
|
return "Unknown" |
|
|
|
|
|
|
|
|
st.title("Real-Time Speech Recognition and Language Detection") |
|
|
|
|
|
|
|
|
if st.button("Start Recording"): |
|
|
text = recognize_speech() |
|
|
if text: |
|
|
st.write(f"Recognized Text: {text}") |
|
|
|
|
|
|
|
|
lang = detect_language(text) |
|
|
st.write(f"Detected Language: {lang}") |
|
|
|
|
|
|
|
|
speak_text(f"You said: {text}") |
|
|
|
|
|
elif st.button("Stop Recording"): |
|
|
st.write("Stopped Recording") |
|
|
|
|
|
|