alphacep / alphacep/vosk-space
jarvis.py
- Lingua principale
- HTML
- Stelle
- 24
- Fork
- 24
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
import pyttsx3
import speech_recognition as sr
import webbrowser
import os
import sys
import threading
import tkinter as tk
from PIL import Image, ImageTk, ImageSequence
import ollama
# --- Offline Voice Engine ---
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id) # Female Voice
engine.setProperty('rate', 180)
def speak(text):
print(f"Jarvis: {text}")
engine.say(text)
engine.runAndWait() # Har word bolne ke liye zaroori line
# --- 1. Anime Avatar GUI ---
def start_avatar():
root = tk.Tk()
root.title("Jarvis Avatar")
root.geometry("500x450")
root.configure(bg='black')
root.attributes("-topmost", True)
# Aapka sahi path
gif_path = r"C:\Users\DELL\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\avatar.gif"
try:
img = Image.open(gif_path)
lbl = tk.Label(root, bg='black')
lbl.pack(pady=10)
def update(ind):
frame = ImageSequence.Iterator(img)[ind]
frame = frame.resize((450, 350))
photo = ImageTk.PhotoImage(frame)
lbl.configure(image=photo)
lbl.image = photo
ind += 1
if ind == img.n_frames: ind = 0
root.after(50, update, ind)
root.after(0, update, 0)
root.mainloop()
except: pass
# --- 2. Offline Listening Logic ---
def get_audio():
r = sr.Recognizer()
with sr.Microphone() as source:
print("\nMain sun rahi hoon Sir...")
r.pause_threshold = 0.8
audio = r.listen(source)
try:
# Offline model na hone par ye internet use karega
query = r.recognize_google(audio, language='hi-IN')
return query.lower()
except:
return "none"
if __name__ == "__main__":
os.system('chcp 65001') # Boxes fix karne ke liye
t1 = threading.Thread(target=start_avatar)
t1.daemon = True
t1.start()
speak("Hello Sir! Aapka din kaisa raha? Main ab online aur offline help ke liye taiyaar hoon.")
while True:
query = get_audio()
if query != "none":
print(f"Sir: {query}")
if 'youtube' in query:
speak("Zaroor Sir, YouTube khol rahi hoon.")
webbrowser.open("https://www.youtube.com")
elif 'chup ho jao' in query:
speak("Theek hai Sir, standby par ja rahi hoon.")
sys.exit()
else:
try:
# Ollama Llama 3 hamesha 100% offline chalta hai
response = ollama.chat(model='llama3', messages=[
{'role': 'system', 'content': 'Aap ek female assistant hain. Hindi mein jawab dein.'},
{'role': 'user', 'content': query}
])
speak(response['message']['content']) # Ye har word bolega
except:
speak("Sir, brain connect nahi ho raha.")
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.