Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import speech_recognition as sr | |
| from gtts import gTTS | |
| from langdetect import detect | |
| from groq import Groq | |
| import os | |
| # Set Groq API Key | |
| os.environ["GROQ_API_KEY"] = "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" | |
| # Initialize Groq client | |
| client = Groq(api_key=os.environ.get("GROQ_API_KEY")) | |
| # Helper functions | |
| def recognize_speech(): | |
| recognizer = sr.Recognizer() | |
| with sr.Microphone() as source: | |
| st.info("Listening for English speech...") | |
| try: | |
| audio = recognizer.listen(source, timeout=5) | |
| text = recognizer.recognize_google(audio) | |
| return text | |
| except sr.UnknownValueError: | |
| return "Sorry, I couldn't understand the audio." | |
| except sr.RequestError as e: | |
| return f"Error with the speech recognition service: {e}" | |
| def generate_ai_response(prompt): | |
| try: | |
| response = client.chat.completions.create( | |
| messages=[{"role": "user", "content": prompt}], | |
| model="llama3-8b-8192", | |
| ) | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| return f"Error generating AI response: {e}" | |
| def convert_to_speech(input_text): | |
| tts = gTTS(text=input_text, lang="en") | |
| tts.save("output.mp3") | |
| st.audio("output.mp3", format="audio/mp3") | |
| os.remove("output.mp3") | |
| # Streamlit App Interface | |
| st.title("Speech-to-Text and AI Response App") | |
| st.sidebar.header("Options") | |
| choice = st.sidebar.selectbox( | |
| "Choose an action:", ["Home", "Speak and Convert to Text", "AI Response for Text"] | |
| ) | |
| if choice == "Home": | |
| st.write("Welcome! This ChatGpt 0.1 made by Abuzar Ali. Use the sidebar to navigate the app.") | |
| elif choice == "Speak and Convert to Text": | |
| st.write("Click below to speak.") | |
| if st.button("Speak Now"): | |
| recognized_text = recognize_speech() | |
| if recognized_text: | |
| st.write(f"Recognized Text: {recognized_text}") | |
| if detect(recognized_text) == "en": | |
| st.success("Input is in English.") | |
| else: | |
| st.warning("Input is not in English. Please use English only.") | |
| elif choice == "AI Response for Text": | |
| user_input = st.text_area("Enter your English text:") | |
| if st.button("Get AI Response"): | |
| if detect(user_input) == "en": | |
| ai_response = generate_ai_response(user_input) | |
| st.write(f"AI Response: {ai_response}") | |
| if st.button("Convert AI Response to Speech"): | |
| convert_to_speech(ai_response) | |
| else: | |
| st.warning("Input is not in English. Please use English only.") | |