From 02d7c10f7d50b742bdfc576a172bb66175dd2a1f Mon Sep 17 00:00:00 2001 From: Ketan Date: Mon, 21 Sep 2026 01:55:42 -0400 Subject: [PATCH] fix stuff --- .gitignore | 5 + audio/__init__.py | 0 audio/audio_queue.py | 8 + audio/chime.py | 15 ++ audio/gtts.py | 20 ++ audio/tts.py | 33 ++++ bs/__init__.py | 0 bs/marshallhatesthis.mp3 | Bin 0 -> 133766 bytes bs/verity.py | 21 +++ chime.mp3 | Bin 0 -> 73142 bytes config.py | 14 ++ core/speech_recognition.py | 13 ++ core/ui.py | 211 +++++++++++++++++++++ core/wake_word.py | 8 + ico/icon.png | Bin 0 -> 11498 bytes ico/image.png | Bin 0 -> 3586 bytes main.py | 375 +++++++++++++++++++++++++++++++++++++ main.spec | 44 +++++ requirements.txt | 1 + setup.ps1 | 2 + somerville_weather.mp3 | Bin 0 -> 35712 bytes utils/__init__.py | 0 utils/ai_client.py | 43 +++++ utils/time_utils.py | 23 +++ utils/vosk_setup.py | 22 +++ utils/weather.py | 95 ++++++++++ 26 files changed, 953 insertions(+) create mode 100644 .gitignore create mode 100644 audio/__init__.py create mode 100644 audio/audio_queue.py create mode 100644 audio/chime.py create mode 100644 audio/gtts.py create mode 100644 audio/tts.py create mode 100644 bs/__init__.py create mode 100644 bs/marshallhatesthis.mp3 create mode 100644 bs/verity.py create mode 100644 chime.mp3 create mode 100644 config.py create mode 100644 core/speech_recognition.py create mode 100644 core/ui.py create mode 100644 core/wake_word.py create mode 100644 ico/icon.png create mode 100644 ico/image.png create mode 100644 main.py create mode 100644 main.spec create mode 100644 requirements.txt create mode 100644 setup.ps1 create mode 100644 somerville_weather.mp3 create mode 100644 utils/__init__.py create mode 100644 utils/ai_client.py create mode 100644 utils/time_utils.py create mode 100644 utils/vosk_setup.py create mode 100644 utils/weather.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d15c42b --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +__pycache__ +core/__pycache__ +utils/__pycache__ +audio/__pycache__ +venv \ No newline at end of file diff --git a/audio/__init__.py b/audio/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/audio/audio_queue.py b/audio/audio_queue.py new file mode 100644 index 0000000..af75920 --- /dev/null +++ b/audio/audio_queue.py @@ -0,0 +1,8 @@ +import queue + +q = queue.Queue() + +def callback(indata, frames, time_, status): + if status: + print(status) + q.put(bytes(indata)) diff --git a/audio/chime.py b/audio/chime.py new file mode 100644 index 0000000..b2225d5 --- /dev/null +++ b/audio/chime.py @@ -0,0 +1,15 @@ +import time + +import pygame + +from config import CHIME_FILE + + +def play_ding(): + pygame.mixer.init() + pygame.mixer.music.load(CHIME_FILE) + pygame.mixer.music.play() + while pygame.mixer.music.get_busy(): + time.sleep(0.05) + pygame.mixer.music.unload() + pygame.mixer.quit() diff --git a/audio/gtts.py b/audio/gtts.py new file mode 100644 index 0000000..74fad18 --- /dev/null +++ b/audio/gtts.py @@ -0,0 +1,20 @@ +import os +import tempfile +import time + +import pygame +from gtts import gTTS + + +def speak(text): + with tempfile.TemporaryDirectory() as tmpdirname: + temp_path = os.path.join(tmpdirname, "speech.mp3") + tts = gTTS(text=text,lang='en', tld='com') + tts.save(temp_path) + pygame.mixer.init() + pygame.mixer.music.load(temp_path) + pygame.mixer.music.play() + while pygame.mixer.music.get_busy(): + time.sleep(0.1) + pygame.mixer.music.unload() + pygame.mixer.quit() \ No newline at end of file diff --git a/audio/tts.py b/audio/tts.py new file mode 100644 index 0000000..530c469 --- /dev/null +++ b/audio/tts.py @@ -0,0 +1,33 @@ +import asyncio +import os +import tempfile +import time + +import edge_tts +import pygame + + +def speak(text): + async def generate_speech(): + voice = "en-US-ChristopherNeural" + communicate = edge_tts.Communicate(text, voice) + await communicate.save(temp_path) + + with tempfile.TemporaryDirectory() as tmpdirname: + temp_path = os.path.join(tmpdirname, "speech.mp3") + + asyncio.run(generate_speech()) + + pygame.mixer.init() + pygame.mixer.music.load(temp_path) + pygame.mixer.music.play() + + while pygame.mixer.music.get_busy(): + time.sleep(0.1) + + pygame.mixer.music.unload() + pygame.mixer.quit() + + +if __name__ == "__main__": + speak("Hello! I am now speaking using Microsoft Edge's natural text to speech engine.") \ No newline at end of file diff --git a/bs/__init__.py b/bs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bs/marshallhatesthis.mp3 b/bs/marshallhatesthis.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7b866275f830fff6ad2a05ac90bc42c4f5ef4e17 GIT binary patch literal 133766 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

BW0DKLtjL^9I308)9JF>0& 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 literal 0 HcmV?d00001 diff --git a/bs/verity.py b/bs/verity.py new file mode 100644 index 0000000..a99ca48 --- /dev/null +++ b/bs/verity.py @@ -0,0 +1,21 @@ +import os +import time + +import pygame + + +def ouiouioui(): + temp_path = os.path.join(r"bs/marshallhatesthis.mp3") + pygame.mixer.init() + pygame.mixer.music.load(temp_path) + pygame.mixer.music.play() + + while pygame.mixer.music.get_busy(): + time.sleep(0.1) + + pygame.mixer.music.unload() + pygame.mixer.quit() + + +if __name__ == "__main__": + ouiouioui() \ No newline at end of file diff --git a/chime.mp3 b/chime.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4c247b52fdc6861d551cc05298c7b4597c95f201 GIT binary patch literal 73142 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�F>zL% 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

<1 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 CqAOMa literal 0 HcmV?d00001 diff --git a/config.py b/config.py new file mode 100644 index 0000000..25ee584 --- /dev/null +++ b/config.py @@ -0,0 +1,14 @@ +# Model details +VOSK_MODEL_FOLDER = 'vosk-model-small-en-us-0.15' +VOSK_MODEL_URL = "https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip" +VOSK_MODEL_ZIP = "voicemodel.zip" + +# Sound files +CHIME_FILE = "chime.mp3" + +# AI API +AI_URL = "http://localhost:11434/api/generate" +AI_MODEL = "deepseek-r1:1.5b" + +WAKE_WORDS = ["hey risa", "hey lisa", "risa", "lisa", "Hey Nate", "Nate"] +TTS_MODEL = "tts_models/en/ljspeech/vits" \ No newline at end of file diff --git a/core/speech_recognition.py b/core/speech_recognition.py new file mode 100644 index 0000000..7523dd2 --- /dev/null +++ b/core/speech_recognition.py @@ -0,0 +1,13 @@ +import json + +from audio.audio_queue import q + + +def listen_for_command(rec): + while True: + data = q.get() + if rec.AcceptWaveform(data): + result_json = json.loads(rec.Result()) + result = result_json.get("text", "").lower().strip() + if result: + return result diff --git a/core/ui.py b/core/ui.py new file mode 100644 index 0000000..fbc028f --- /dev/null +++ b/core/ui.py @@ -0,0 +1,211 @@ +from PySide6.QtCore import QEasingCurve, QPoint, QPropertyAnimation, Qt, Signal +from PySide6.QtWidgets import ( + QApplication, + QLabel, + QLineEdit, + QMainWindow, + QVBoxLayout, + QWidget, +) + + +class RisaAssistantPopup(QMainWindow): + text_submitted = Signal(str) + + def __init__(self): + super().__init__() + + self.setWindowFlags( + Qt.WindowType.FramelessWindowHint | + Qt.WindowType.WindowStaysOnTopHint | + Qt.WindowType.Tool + ) + self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) + + self.popup_width = 540 + self.font_style = "font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, Arial, sans-serif;" + + self.main_container = QWidget(self) + self.main_layout = QVBoxLayout(self.main_container) + self.main_layout.setContentsMargins(10, 10, 10, 10) + self.main_layout.setSpacing(15) + + self.content_card = QWidget() + self.content_card.setObjectName("ContentCard") + self.content_layout = QVBoxLayout(self.content_card) + self.content_layout.setContentsMargins(22, 16, 22, 16) + + self.content_label = QLabel() + self.content_label.setTextFormat(Qt.TextFormat.RichText) + self.content_label.setWordWrap(True) + self.content_layout.addWidget(self.content_label) + self.main_layout.addWidget(self.content_card) + + self.input_card = QWidget() + self.input_card.setObjectName("InputCard") + self.input_layout = QVBoxLayout(self.input_card) + self.input_layout.setContentsMargins(20, 20, 20, 20) + self.input_layout.setAlignment(Qt.AlignmentFlag.AlignCenter) + + self.star_icon = QLabel("✹") + self.star_icon.setStyleSheet("font-size: 42px; color: #000000; margin-bottom: 2px;") + self.star_icon.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.input_layout.addWidget(self.star_icon) + + self.status_label = QLabel("Sleeping...") + self.status_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.status_label.setStyleSheet("font-size: 13px; color: #777777; font-weight: 600; margin-bottom: 5px;") + self.input_layout.addWidget(self.status_label) + + self.input_field = QLineEdit() + self.input_field.setPlaceholderText("Type or Speak to RISA...") + self.input_field.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.input_field.setFrame(False) + self.input_layout.addWidget(self.input_field) + self.input_field.returnPressed.connect(self._on_text_submitted) + + self.main_layout.addWidget(self.input_card) + self.setCentralWidget(self.main_container) + + self.setStyleSheet(""" + QWidget#ContentCard, QWidget#InputCard { + background-color: rgba(245, 245, 240, 0.78); + border: 1px solid rgba(255, 255, 255, 0.45); + border-radius: 28px; + } + QLineEdit { + background: transparent; + color: #000000; + font-family: 'Segoe UI', Arial, sans-serif; + font-size: 18px; + } + QLineEdit::placeholder { + color: #555555; + } + """) + + self.content_card.hide() + self.anim = None + + def _on_text_submitted(self): + text = self.input_field.text().strip() + if text: + self.input_field.clear() + self.text_submitted.emit(text) + + def set_listening_state(self, state: str): + if state == "idle": + self.star_icon.setStyleSheet("font-size: 42px; color: #888888; margin-bottom: 2px;") + self.status_label.setText("Sleeping (Say 'Hey Risa')...") + self.status_label.setStyleSheet("font-size: 13px; color: #888888; font-weight: 600; margin-bottom: 5px;") + elif state == "active": + self.star_icon.setStyleSheet("font-size: 42px; color: #D4FF00; margin-bottom: 2px;") + self.status_label.setText("Listening...") + self.status_label.setStyleSheet("font-size: 13px; color: #ff8c00; font-weight: bold; margin-bottom: 5px;") + elif state == "thinking": + self.star_icon.setStyleSheet("font-size: 42px; color: #007acc; margin-bottom: 2px;") + self.status_label.setText("Thinking...") + self.status_label.setStyleSheet("font-size: 13px; color: #007acc; font-weight: bold; margin-bottom: 5px;") + + def update_layout_and_animate(self): + self.setFixedWidth(self.popup_width) + self.adjustSize() + self.resize(self.popup_width, self.sizeHint().height()) + self.animate_popup(self.height()) + + def show_initial_input(self): + self.content_card.hide() + self.input_layout.setContentsMargins(20, 25, 20, 25) + self.star_icon.show() + self.status_label.show() + self.input_field.setFocus() + self.update_layout_and_animate() + + def show_thinking(self, prompt_text: str): + html_content = f""" +

+ """ + self.content_label.setText(html_content) + self.content_card.show() + + self.input_layout.setContentsMargins(20, 20, 20, 20) + self.update_layout_and_animate() + + def display_command_card(self, mode: str, data: dict = None): + if data is None: + data = {} + + html_content = "" + + if mode == "weather": + html_content = f""" + + + + + + + + + +
{data.get('temp', '72')}°{data.get('humidity', '55')}% Humidity
+ {data.get('high', '85')}° High    {data.get('low', '63')}° Low
{data.get('condition', 'Sunny')}{data.get('location', 'Bridgewater NJ')}
+ """ + elif mode == "time": + html_content = f""" + + + + + + + + + +
{data.get('time', '3:30 PM')}{data.get('day', '')}
Sunny, rain soon.{data.get('date', '')}
+ """ + elif mode == "general": + html_content = f""" +
+ Risa Assistant
+
{data.get('text', '')}
+
+ """ + + if html_content: + self.content_label.setText(html_content) + self.content_card.show() + + self.input_layout.setContentsMargins(20, 20, 20, 20) + self.update_layout_and_animate() + + def animate_popup(self, current_height): + screen = QApplication.primaryScreen() + screen_geom = screen.availableGeometry() + + self.end_x = screen_geom.left() + int((screen_geom.width() - self.popup_width) / 2) + self.end_y = screen_geom.bottom() - current_height - 25 + self.start_y = screen_geom.bottom() + 50 + + if self.anim and self.anim.state() == QPropertyAnimation.State.Running: + self.anim.stop() + + if not self.isVisible(): + self.move(self.end_x, self.start_y) + self.show() + + self.anim = QPropertyAnimation(self, b"pos") + self.anim.setDuration(350) + self.anim.setStartValue(self.pos()) + self.anim.setEndValue(QPoint(self.end_x, self.end_y)) + self.anim.setEasingCurve(QEasingCurve.Type.OutCubic) + self.anim.start() + + def changeEvent(self, event): + if event.type() == event.Type.ActivationChange and not self.isActiveWindow(): + self.hide() + super().changeEvent(event) \ No newline at end of file diff --git a/core/wake_word.py b/core/wake_word.py new file mode 100644 index 0000000..f481b00 --- /dev/null +++ b/core/wake_word.py @@ -0,0 +1,8 @@ +from config import WAKE_WORDS + +from .speech_recognition import listen_for_command + + +def detect_wake_word(rec): + phrase = listen_for_command(rec) + return any(phrase.startswith(word) for word in WAKE_WORDS) \ No newline at end of file diff --git a/ico/icon.png b/ico/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c62f20bbfea36a6ce6531183f236b0d13de61a3 GIT binary patch literal 11498 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 QEdT%j07*qoM6N<$f^@Pp0{{R3 literal 0 HcmV?d00001 diff --git a/ico/image.png b/ico/image.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab638cf8a0a2f2708cf28dbc6f03a4c86c83824 GIT binary patch literal 3586 zcmV+d4*l_oP)P+pgayfgl!$!9`VL>`v_f&K-x@QVa+I5Y5?!2AIU5P40u>=`ded&&xs z@i+uXEnJdJ(RKta}^yPz|2XH{c%5$EmKJ^Ng zC(9u~YNnR}e?rXs)eCczFzFRC^h+XQu>?rfq%Ho$Alk98F2~Y{SPTKzgw~zU6IHX? zEgp{yh&Wr6=QMu;F8R$onro|A!@@(4E-`;tcyAdUSiW_>vzvq}0i&V9OYVr0IH0)i zEX^kiT?-FAn!MnG1*oO@5g;Rb#R&mzvi)?s>^-^&@E$D$bd{I9qG93Cz;5#kAK9mq z1STY+%WJ+SajGcpv8Ab5cxgRx7m=d8VOByyd(6j8`-X zr~|SY_EGo;Uv=$XD2|ueX8%LbIrffHr*ak<#B;$LL#K1j;%MQJ%SP<41`6A zB%@JhBR~(-D}>RU+}}HrfB?rymCE223K9KpV;#uUEea}ddOqyc~2p8 zZ>!Ae4baMsGkHVU2&2jCj`QLK$kp8D+>zJlt&RHICjv3lIuldST5!EH2PB9X8kc%qJ3e>+C0X>c=1O7h6S_^9=5gj9- zZlQx;LUTHf{LwJ;=!>OkLMSrAOuj&i)sBvIi$PB%c7Oo&awb zvboaHxAHQ6HrKZ}CctM8LhA*Yj!ZTIMOuGMiwKQ&dDbEf?l|ybP~nJcrrsJ)6Hu)6 zx9t_f2R4!-pqaWD-+QASGu+KI!SL@i0YzH>cZwLF;ZvT&H>o0@S5)EcBoyNWT++a= z``C;$G9F1Y8qZqA}yZr1aRhofMQ3YA7YZuYS7rzGq{63*yff>H%F` z@;41kQUYS!tv}`y8!3)})Q}Ie3co7DlmPgTPIALW{p3QEdm~1@fLsYk8hr)1L;-ua zb|J+W|scB@=*=9^h!)kGs>VdpBBVJ{WrBj7Jr9^QKb{)!_5 z{l)+l;5EugXwjRz;Ks;UFCt=mwsWsSfGS9?^!UiEq88sX;NTdTdKF7~SvMlwn!~WK z7zS)^6=)^)xpWCdk#{2Jzsi0k465}3FFd|xi390Xr4I-2;BYoe6!pq+w*XS&YiDY@J8Aklvs=>9-~VY7C`e4#7oX5{Burz9j^> zjbntr2T11!oKa4c?v9 zsVh2qW%7GMz~sg9=UTv3yyXk{cjl7rQl-W(oF?@-w>$Apt%^#)O1y zA=^+~RZL`nz>m4WrAhSWo)D3=Y)9?kdyuWF}MpshW?uF^b%fEs|=I zttj6cK);A0)uf$`Lyso5hH+~uOFKP}EzYR1#UZMbe`Scsb!1|GYqEkN%-z9CQM zJ5iy6TB1^io~Pabv)G1GkIIPrE^!(%ZcJS=KY!}l_=Ruk0pG^2O`OH}3BV+xix#WO zv#AnVArBVg{t+{_uAPk}2u%ICCd4;aa7UZI3<=og{vvtu zgF`mrMj)M>^2JHik0K2Ti0B$~_czEAsiBQA&O#==rq`tXE9Q$>fKI8XPsmf!nT4~AuC>lZNj1jr+TF^f%>R5(KGYO?M<Q5!D0j zEZt9E@(ECc3N8DPO|XyLV}~tfUj~?)t>eaH-;&F@ZFTmSql4$y1>6K^G9z7T;(Jtx zeysF4j1L5U%mseEpQ@gHoZ~7t0hnkuNfXod)pI<363T!t%re~0Neul2D20BED8R`i zsXSd0%770YQ_H?lF_K~gM05$L+X(M{J7|AmCr4B`ih82P7glO`EJWT1+mi(I1uhiW8f( zJ+V@|rxz_k|2QDUsDJAJC`W+ulTj|_87a0x(?-nK=zWRK)*8V9tEifhreJsW<7Co7r06n2f8~y*rVlFBpa%@EChd3Vhw;zVU z-&on?HWtHaOdu<%2m%N}VzSdUwK zURmHR33|m4p}O-hc{l-jeniIzn0?z&K!Yu`we@XlBwG|@d!p0NFXtkNV6Ag;gij(Lge+06E z;wbJVrwN%?+@ieX5-V@tiZybjYj+N8PWKSi)lTMd%#VOUX{xl5N{acNhl>cQnOCBT zpELWsu%2>lt@zdm(eE}4gFsf$PYb{q0dFldtOz?69(sJRx0?DFjO~YJG?{+>1n3D7 zn*DF`u-;(FAN}YU*>$SCS=4^F#Sk#SO}#<8Ro0IPshgGoznknA7}RG0pNl16P~i0; zLM^^!s&3c7*EnZTgN1!Ahk!xx2SmiyrL{zFaQ*Q=KlN3OTKp+obFer_TwR%OB+C3Sm_w*O@mv5wbAK0@7 zpf9zxXI1HO2^cL=M8{fU+j>URKKBxkdelud=m(wN8+h8kpq}y#kdb6UbWQjEO5$q3 z)T3qT>q%Z!!hYUuN~jnXEdKxi0RR81CywI)000I_L_t&o0Gbl_6gnEdw*UYD07*qo IM6N<$g2ffdT>t<8 literal 0 HcmV?d00001 diff --git a/main.py b/main.py new file mode 100644 index 0000000..218038c --- /dev/null +++ b/main.py @@ -0,0 +1,375 @@ +import os +import subprocess +import sys +import threading +import time +import webbrowser +from datetime import date, datetime + +import pyautogui +import speech_recognition as sr +from PySide6.QtCore import QObject, Signal +from PySide6.QtGui import QIcon +from PySide6.QtWidgets import QApplication, QMenu, QSystemTrayIcon + +from audio.tts import speak +from bs.verity import ouiouioui + +# External file imports +from core.ui import RisaAssistantPopup +from utils.ai_client import ask_ai +from utils.time_utils import time_to_words +from utils.weather import get_local_weather + +popup_window = None +trigger_bridge = None +tray_icon = None + +recognizer = sr.Recognizer() +microphone = sr.Microphone() + +recognizer.dynamic_energy_threshold = True +recognizer.pause_threshold = 0.8 + +class VoiceTriggerBridge(QObject): + hide_window = Signal() + show_input_panel = Signal() + show_thinking_panel = Signal(str) + update_display_card = Signal(str, dict) + show_timeout_card = Signal(str) + update_state = Signal(str) + +# Commands +def process_command(command: str) -> bool: + global trigger_bridge + command = command.lower().strip() + if not command: + return False + + print(f"Executing command: '{command}'") + + # Time Commands + if any(word in command for word in ["time", "what time", "current time"]): + now = datetime.now() + time_words = time_to_words(now) + if trigger_bridge: + time_data = { + "time": now.strftime("%I:%M %p").lstrip('0'), + "day": now.strftime("%A"), + "date": now.strftime("%B %d, %Y") + } + trigger_bridge.update_display_card.emit("time", time_data) + speak(f"The time is {time_words}") + return True + + elif any(word in command for word in ["date", "what's the date"]): + today_date = date.today().strftime("%B %d, %Y") + if trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": f"Today is {today_date}."}) + speak(f"The date is {today_date}") + return True + + # Weather + elif any(word in command for word in ["weather", "weather today", "what is the weather"]): + weather = get_local_weather() + if weather: + city = weather['location']['city'] + temp_unit = weather['units']['temp'] + current_temp = weather['current_temp'] + high_temp = weather['high_temp'] + low_temp = weather['low_temp'] + clouds = weather['cloud_cover_pct'] + rain = weather['precipitation'] + + if clouds < 10: cloud_phrase = "Clear skies" + elif clouds < 40: cloud_phrase = "Partly cloudy skies" + elif clouds < 75: cloud_phrase = "Mostly cloudy skies" + else: cloud_phrase = "Completely overcast" + + if rain > 0: + cloud_phrase += ", rain soon." + + if trigger_bridge: + trigger_bridge.update_display_card.emit("weather", { + "temp": str(current_temp), + "humidity": str(clouds), + "high": str(high_temp), + "low": str(low_temp), + "condition": cloud_phrase, + "location": f"{city} NJ" + }) + print(f"Right now in {city}, it is {current_temp}{temp_unit} with {cloud_phrase.lower()}. Today's high will be {high_temp} degrees, and the low will be {low_temp} degrees.") + speak(f"Right now in {city}, it is {current_temp}{temp_unit} with {cloud_phrase.lower()}. Today's high will be {high_temp} degrees, and the low will be {low_temp} degrees.") + return True + return False + + # Identity + elif any(phrase in command for phrase in ["who are you", "your name", "what do you do"]): + if trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": "Hi, my name is Risa. I'm your voice assistant."}) + speak("Hi, my name is Risa. I'm your voice assistant.") + return True + elif any(phrase in command for phrase in ["what is the capital of france", "What is the capital of france", "What's the capital of france"]): + if trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": "Oui oui oui! It paris"}) + ouiouioui() + return True + # Media Controls + elif any(phrase in command for phrase in ["pause", "pause music", "pause video", "play", "resume"]): + pyautogui.press('playpause') + speak("Done") + return True + + elif "volume up" in command: + for _ in range(5): pyautogui.press("volumeup") + speak("Volume up") + return True + + elif "volume down" in command: + for _ in range(5): pyautogui.press("volumedown") + speak("Volume down") + return True + + elif "mute" in command: + pyautogui.press("volumemute") + return True + + # Web Controls + elif "open google" in command: + speak("Opening Google") + webbrowser.open("https://google.com") + return True + + elif "open youtube" in command: + speak("Opening Youtube") + webbrowser.open("https://youtube.com") + return True + + elif "search for" in command: + query = command.split("search for")[-1].strip() + if query: + if trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": f"Searching Google for: {query}"}) + speak(f"Searching for {query}") + webbrowser.open(f"https://www.google.com/search?q={query}") + return True + + # Apps + elif "open calculator" in command: + speak("Opening Calculator") + if os.name == 'nt': subprocess.Popen('calc.exe') + else: subprocess.Popen('gnome-calculator' if os.name == 'posix' else 'open -a Calculator') + return True + # Sleep + elif any(phrase in command for phrase in ["stop listening", "go to sleep", "hide"]): + speak("Going to sleep.") + if popup_window and trigger_bridge: + trigger_bridge.hide_window.emit() + trigger_bridge.update_state.emit("idle") + return False + + + # Commands List + elif any(phrase in command for phrase in ["list commands", "what are your commands", "show commands"]): + commands_html = """ +
+ System Capabilities:
+ + + + + + + +
• Time / Date: "What time is it?", "What's the date?"
• Weather: "What is the weather today?"
• Controls: "Volume up/down", "Mute", "Pause/Play"
• Apps & Web: "Open Google", "Search for [query]"
• AI Core: "Ask AI [your question]"
• Sleep: "Stop listening", "Go to sleep"
+
+ """ + if trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": commands_html}) + speak("Here is a list of commands.") + return True + + else: + # AI Fallback Query + prompt = command + if prompt.startswith("ask ai") or prompt.startswith("ask a i"): + for phrase in ["ask ai", "ask a i"]: + if prompt.startswith(phrase): + prompt = prompt.replace(phrase, "", 1).strip(" :") + break + + if prompt: + if trigger_bridge: + trigger_bridge.show_thinking_panel.emit(prompt) + trigger_bridge.update_state.emit("thinking") + + speak("Thinking about it...") + ai_response = ask_ai(prompt) + + if trigger_bridge and ai_response: + trigger_bridge.update_display_card.emit("general", {"text": str(ai_response)}) + elif trigger_bridge: + trigger_bridge.update_display_card.emit("general", {"text": f"Processed request: '{prompt}'"}) + + return True + else: + speak("What would you like to ask?") + return True + +# Voice listener loop +def voice_listener_loop(): + global trigger_bridge + + with microphone as source: + recognizer.adjust_for_ambient_noise(source, duration=1.5) + print("\nRisa is active... Say 'Hey Risa [your command]' in one sentence!") + in_conversation = False + timeout_emitted = False + + if trigger_bridge: + trigger_bridge.update_state.emit("idle") + + while True: + try: + if not in_conversation: + if trigger_bridge: + trigger_bridge.update_state.emit("idle") + print(".", end="", flush=True) + + audio = recognizer.listen(source, timeout=None, phrase_time_limit=10) + raw_text = recognizer.recognize_google(audio).lower() + + if "hey risa" in raw_text or "hey lisa" in raw_text: + print(f"\n[Triggered]: '{raw_text}'") + timeout_emitted = False + + if trigger_bridge: + trigger_bridge.show_input_panel.emit() + trigger_bridge.update_state.emit("active") + + if "risa" in raw_text: + command_text = raw_text.split("risa")[-1].strip() + else: + command_text = raw_text.split("lisa")[-1].strip() + + if command_text: + executed = process_command(command_text) + if executed: + in_conversation = True + else: + speak("How can I help?") + in_conversation = True + else: + print("\n[Follow-up Mode: Listening...]") + if trigger_bridge: + trigger_bridge.update_state.emit("active") + time.sleep(0.4) + + audio = recognizer.listen(source, timeout=6, phrase_time_limit=6) + command_text = recognizer.recognize_google(audio).lower() + print(f"[Follow-up Command Received]: '{command_text}'") + + timeout_emitted = False + executed = process_command(command_text) + if not executed: + in_conversation = False + + except (sr.UnknownValueError, sr.WaitTimeoutError, sr.RequestError) as e: + if in_conversation: + print("\n[Follow-up timeout or unrecognized audio: resetting context]") + in_conversation = False + + if not timeout_emitted: + if trigger_bridge: + error_msg = "Risa could not hear you clearly or the request timed out." + if isinstance(e, sr.WaitTimeoutError): + error_msg = "Follow-up timed out. No speech detected." + + html_error = f""" +
+ Timeout
+
{error_msg} Please reinitiate Risa by saying: Hey Risa
+
+ """ + trigger_bridge.update_display_card.emit("general", {"text": html_error}) + trigger_bridge.update_state.emit("idle") + timeout_emitted = True + + except Exception as e: + print(f"\nUnexpected error: {e}") + in_conversation = False + if trigger_bridge: + trigger_bridge.update_state.emit("idle") + +def handle_typed_command(command_text: str): + def run(): + if trigger_bridge: + trigger_bridge.show_input_panel.emit() + trigger_bridge.update_state.emit("active") + + process_command(command_text) + + threading.Thread(target=run, daemon=True).start() + +def trigger_from_tray(): + if popup_window: + popup_window.show() + popup_window.raise_() + popup_window.activateWindow() + if trigger_bridge: + trigger_bridge.show_input_panel.emit() + trigger_bridge.update_state.emit("active") + +def setup_system_tray(app): + global tray_icon + + app.setQuitOnLastWindowClosed(False) + + icon = QIcon("ico/icon.png") + + tray_icon = QSystemTrayIcon(icon, app) + tray_icon.setToolTip("Risa Assistant") + + tray_menu = QMenu() + + show_action = tray_menu.addAction("Open Risa") + show_action.triggered.connect(trigger_from_tray) + + tray_menu.addSeparator() + + quit_action = tray_menu.addAction("Quit") + quit_action.triggered.connect(app.quit) + + tray_icon.setContextMenu(tray_menu) + + def on_tray_activated(reason): + if reason in (QSystemTrayIcon.Trigger, QSystemTrayIcon.DoubleClick): + trigger_from_tray() + + tray_icon.activated.connect(on_tray_activated) + tray_icon.show() + +def main(): + global popup_window, trigger_bridge + app = QApplication(sys.argv) + + setup_system_tray(app) + + trigger_bridge = VoiceTriggerBridge() + popup_window = RisaAssistantPopup() + + trigger_bridge.show_input_panel.connect(popup_window.show_initial_input) + trigger_bridge.show_thinking_panel.connect(popup_window.show_thinking) + trigger_bridge.update_display_card.connect(popup_window.display_command_card) + trigger_bridge.hide_window.connect(popup_window.hide) + trigger_bridge.update_state.connect(popup_window.set_listening_state) + + popup_window.text_submitted.connect(handle_typed_command) + + listener_thread = threading.Thread(target=voice_listener_loop, daemon=True) + listener_thread.start() + + sys.exit(app.exec()) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/main.spec b/main.spec new file mode 100644 index 0000000..e03e1a6 --- /dev/null +++ b/main.spec @@ -0,0 +1,44 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['main.py'], + pathex=[], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + [], + exclude_binaries=True, + name='main', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +) +coll = COLLECT( + exe, + a.binaries, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='main', +) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..59258cc --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pip install ruff diff --git a/setup.ps1 b/setup.ps1 new file mode 100644 index 0000000..04a685f --- /dev/null +++ b/setup.ps1 @@ -0,0 +1,2 @@ +.venv\Scripts\Activate.ps1 +pip install -r requirements.txt \ No newline at end of file diff --git a/somerville_weather.mp3 b/somerville_weather.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..56779a4c69092345b47891230e84b83340bdc5bc GIT binary patch literal 35712 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 literal 0 HcmV?d00001 diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/ai_client.py b/utils/ai_client.py new file mode 100644 index 0000000..3fb2800 --- /dev/null +++ b/utils/ai_client.py @@ -0,0 +1,43 @@ +import re + +import ollama + +from audio.tts import speak + +AI_MODEL = "gemma4:e2b-it-qat" +AI_HOST = "http://localhost:11434" +def clean_response(text): + cleaned = re.sub(r".*?", "", text, flags=re.DOTALL | re.IGNORECASE) + lines = [line for line in cleaned.splitlines() if line.strip()] + return "\n".join(lines).strip() +def ask_ai(prompt): + try: + full_prompt = ( + "You must answer in exactly one or two sentences.\n\n" + f"Question: {prompt}\n" + "Answer:" + ) + print("Thinking...", end="", flush=True) + client = ollama.Client(host=AI_HOST) + stream = client.generate( + model=AI_MODEL, + prompt=full_prompt, + stream=True + ) + ai_text = "" + for chunk in stream: + text_piece = chunk.get("response", "") + if text_piece: + print(text_piece, end="", flush=True) + ai_text += text_piece + print() + final_text = clean_response(ai_text) + if not final_text: + speak("Sorry, I got no response from the AI.") + else: + speak(final_text) + except Exception as e: + + print("\nAI Error:", e) + + speak("Sorry, I couldn't connect to the AI.") \ No newline at end of file diff --git a/utils/time_utils.py b/utils/time_utils.py new file mode 100644 index 0000000..61ea3da --- /dev/null +++ b/utils/time_utils.py @@ -0,0 +1,23 @@ +from datetime import datetime + + +def time_to_words(dt: datetime): + hour = dt.hour % 12 or 12 + minute = dt.minute + numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", + "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", + "eighteen", "nineteen", "twenty", "twenty-one", "twenty-two", "twenty-three", + "twenty-four", "twenty-five", "twenty-six", "twenty-seven", "twenty-eight", + "twenty-nine", "thirty", "thirty-one", "thirty-two", "thirty-three", "thirty-four", + "thirty-five", "thirty-six", "thirty-seven", "thirty-eight", "thirty-nine", + "forty", "forty-one", "forty-two", "forty-three", "forty-four", "forty-five", + "forty-six", "forty-seven", "forty-eight", "forty-nine", "fifty", "fifty-one", + "fifty-two", "fifty-three", "fifty-four", "fifty-five", "fifty-six", "fifty-seven", + "fifty-eight", "fifty-nine"] + am_pm = "AM" if dt.hour < 12 else "PM" + if minute == 0: + return f"{numbers[hour]} o'clock {am_pm}" + elif minute < 10: + return f"{numbers[hour]} oh {numbers[minute]} {am_pm}" + else: + return f"{numbers[hour]} {numbers[minute]} {am_pm}" diff --git a/utils/vosk_setup.py b/utils/vosk_setup.py new file mode 100644 index 0000000..41b9fc2 --- /dev/null +++ b/utils/vosk_setup.py @@ -0,0 +1,22 @@ +import os +import zipfile + +import requests +import vosk + +from config import VOSK_MODEL_FOLDER, VOSK_MODEL_URL, VOSK_MODEL_ZIP + + +def setup_vosk_model(): + if not os.path.isdir(VOSK_MODEL_FOLDER): + print("Downloading Vosk model") + response = requests.get(VOSK_MODEL_URL) + with open(VOSK_MODEL_ZIP, "wb") as file: + file.write(response.content) + with zipfile.ZipFile(VOSK_MODEL_ZIP, 'r') as zip_ref: + zip_ref.extractall() + print("Downloaded!") + + model = vosk.Model(VOSK_MODEL_FOLDER) + rec = vosk.KaldiRecognizer(model, 16000) + return rec diff --git a/utils/weather.py b/utils/weather.py new file mode 100644 index 0000000..fc41194 --- /dev/null +++ b/utils/weather.py @@ -0,0 +1,95 @@ +import requests + + +def get_local_weather( + fallback_lat=40.59, + fallback_lon=-74.62, + fallback_city="Bridgewater", + fallback_region="New Jersey", + fallback_country_code="US" +): + """ + Fetches the user's current location and automatically determines + whether to return Metric or Imperial units based on their country. + """ + lat, lon = fallback_lat, fallback_lon + city, region = fallback_city, fallback_region + country_code = fallback_country_code + + # Geolocation Lookup + try: + geo_url = "http://ip-api.com/json" + geo_response = requests.get(geo_url, timeout=5).json() + + if geo_response.get("status") == "success": + lat = geo_response["lat"] + lon = geo_response["lon"] + city = geo_response["city"] + region = geo_response["regionName"] + country_code = geo_response.get("countryCode", "US") + else: + print("IP lookup API returned an error status. Using fallback coordinates.") + except Exception: + print("Network error during IP lookup. Using fallback coordinates.") + + # Unit System 'n Weather URL + is_imperial = country_code in ["US", "LR", "MM"] + + unit_suffix = "" + if is_imperial: + unit_suffix = "&temperature_unit=fahrenheit&precipitation_unit=inch" + + weather_url = ( + f"https://api.open-meteo.com/v1/forecast?" + f"latitude={lat}&longitude={lon}" + f"¤t=temperature_2m,precipitation,cloud_cover" + f"&daily=temperature_2m_max,temperature_2m_min" + f"&timezone=auto" + f"{unit_suffix}" + ) + + try: + response = requests.get(weather_url, timeout=5) + + if response.status_code == 200: + data = response.json() + current = data["current"] + daily = data["daily"] + + temp_unit = "°F" if is_imperial else "°C" + precip_unit = "inch" if is_imperial else "mm" + + return { + "location": { + "city": city, + "region": region, + "country_code": country_code, + "lat": lat, + "lon": lon + }, + "unit_system": "imperial" if is_imperial else "metric", + "units": {"temp": temp_unit, "precipitation": precip_unit}, + "current_temp": current['temperature_2m'], + "high_temp": daily['temperature_2m_max'][0], + "low_temp": daily['temperature_2m_min'][0], + "precipitation": current['precipitation'], + "cloud_cover_pct": current['cloud_cover'] + } + else: + print(f"Weather API returned error code: {response.status_code}") + return None + + except Exception as e: + print(f"Network error while fetching weather: {e}") + return None + +if __name__ == "__main__": + # Test block + weather_data = get_local_weather() + if weather_data: + u = weather_data["units"] + print(f"\n--- Location: {weather_data['location']['city']}, {weather_data['location']['region']} ({weather_data['location']['country_code']}) ---") + print(f"System Chosen: {weather_data['unit_system'].upper()}") + print(f"Current Temperature: {weather_data['current_temp']}{u['temp']}") + print(f"Today's High: {weather_data['high_temp']}{u['temp']}") + print(f"Precipitation: {weather_data['precipitation']} {u['precipitation']}") \ No newline at end of file