Jarvis / main.py
Kingffx's picture
Create main.py
d41d6a1 verified
import speech_recognition as sr
import pyttsx3
from ai_brain import get_ai_response
# 1. Voice Output (Speaker) Setup
engine = pyttsx3.init()
voices = engine.getProperty('voices')
# Aap index 0 (Male/Jarvis voice) ya 1 (Female voice) set kar sakte hain
engine.setProperty('voice', voices[0].id)
engine.setProperty('rate', 170) # Bolne ki speed
def speak(text):
"""Text ko aawaz mein badalne ka function"""
print(f"Jarvis: {text}")
engine.say(text)
engine.runAndWait()
# 2. Voice Input (Mic) Setup
recognizer = sr.Recognizer()
def listen():
"""Mic se aawaz sunkar text mein badalne ka function"""
with sr.Microphone() as source:
print("\nListening... (Aap bol sakte hain)")
# Background noise ko adjust karne ke liye
recognizer.adjust_for_ambient_noise(source, duration=0.5)
try:
audio = recognizer.listen(source, timeout=5, phrase_time_limit=10)
print("Processing...")
# Google ka free Speech-to-Text engine
command = recognizer.recognize_google(audio, language="en-IN") # "hi-IN" bhi kar sakte hain Hindi ke liye
print(f"You said: {command}")
return command
except sr.WaitTimeoutError:
pass
except sr.UnknownValueError:
print("Main samajh nahi paya, kripya fir se bolein.")
except sr.RequestError:
print("Speech service down hai.")
return ""
# 3. Main Loop (Ye hamesha chalta rahega)
def start_jarvis():
speak("System is online. I am ready.")
while True:
user_command = listen().lower()
if "stop" in user_command or "exit" in user_command:
speak("Shutting down systems. Goodbye!")
break
if user_command:
# Brain se connect karke jawab mangna
response = get_ai_response(user_command)
# Jawab ko bolna
speak(response)
if __name__ == "__main__":
start_jarvis()