khulnasoft's picture
Upload 48 files
9b674e9 verified
raw
history blame
9.68 kB
try:
from ..llm import *
from .assistant import *
from .chat_history import *
from ..audio.tts import text_to_speech
from ..audio.stt import speech_to_text
from ..audio.record import audio_data
from ..gui.signal import signal_handler
from ..utils.db import *
from ..utils.telemetry import my_tracer, os_name
except ImportError:
from llm import *
from agent.assistant import *
from agent.chat_history import *
from audio.tts import text_to_speech
from audio.stt import speech_to_text
from audio.record import audio_data
from gui.signal import signal_handler
from utils.db import *
from utils.telemetry import my_tracer, os_name
import threading
import traceback
from pygame import mixer
import time
last_ai_response = None
user_id = load_user_id()
os_name_ = os_name()
def tts_if_you_can(text:str, not_threaded=False, status_edit=False, bypass_other_settings = False):
try:
from ..gpt_computer_assistant import the_main_window
if (not is_just_text_model_active() and not the_main_window.api_enabled) or bypass_other_settings:
response_path = text_to_speech(text)
if status_edit:
signal_handler.assistant_response_ready.emit()
def play_audio():
for each_r in response_path:
mixer.init()
mixer.music.load(each_r)
mixer.music.play()
while mixer.music.get_busy():
if the_main_window.stop_talking:
mixer.music.stop()
break
time.sleep(0.1)
if status_edit:
signal_handler.assistant_response_stopped.emit()
if not not_threaded:
playback_thread = threading.Thread(target=play_audio)
playback_thread.start()
else:
play_audio()
except Exception as e:
pass
def process_audio(take_screenshot=True, take_system_audio=False, dont_save_image=False):
with my_tracer.start_span("process_audio") as span:
span.set_attribute("user_id", user_id)
span.set_attribute("os_name", os_name_)
try:
global audio_data, last_ai_response
from ..gpt_computer_assistant import the_input_box, the_main_window
from ..audio.record import audio_data, the_input_box_pre
transcription = speech_to_text(mic_record_location)
if take_system_audio:
transcription2 = speech_to_text(system_sound_location)
llm_input = transcription
print("Previously AI response", last_ai_response, "end prev")
print("Input Box AI", the_input_box_pre)
if (
the_input_box_pre != ""
and not the_input_box_pre.startswith("System:")
and the_input_box_pre not in last_ai_response
):
llm_input += the_input_box_pre
if take_system_audio:
llm_input += " \n Other of USER: " + transcription2
if the_input_box.toPlainText().startswith("System:"):
the_main_window.update_from_thread("Transciption Completed. Running AI...")
print("LLM INPUT (screenshot)", llm_input)
llm_output = assistant(
llm_input,
get_chat_message_history().messages,
get_client(),
screenshot_path=screenshot_path if take_screenshot else None,
dont_save_image=dont_save_image,
)
if the_input_box.toPlainText().startswith("System:"):
the_main_window.update_from_thread("AI Response Completed. Generating Audio...")
last_ai_response = llm_output
from ..gpt_computer_assistant import the_main_window
signal_handler.assistant_response_ready.emit()
def play_text():
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.complated_answer = True
the_main_window.manuel_stop = True
while the_main_window.reading_thread or the_main_window.reading_thread_2:
time.sleep(0.1)
the_main_window.read_part_task()
if the_main_window.stop_talking:
the_main_window.stop_talking = False
signal_handler.assistant_response_stopped.emit()
playback_thread = threading.Thread(target=play_text)
playback_thread.start()
except Exception as e:
print("Error in process_audio", e)
traceback.print_exc()
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.update_from_thread("EXCEPTION: " + str(e))
tts_if_you_can("Exception occurred. Please check the logs.")
signal_handler.assistant_response_stopped.emit()
def process_screenshot():
with my_tracer.start_span("process_screenshot") as span:
span.set_attribute("user_id", user_id)
span.set_attribute("os_name", os_name_)
try:
global last_ai_response
from ..gpt_computer_assistant import the_input_box, the_main_window
from ..audio.record import audio_data, the_input_box_pre
llm_input = "I just take a screenshot. for you to remember. Just say ok."
if (
the_input_box_pre != ""
and not the_input_box_pre.startswith("System:")
and the_input_box_pre not in last_ai_response
):
llm_input += the_input_box_pre
print("LLM INPUT (just screenshot)", llm_input)
if the_input_box.toPlainText().startswith("System:"):
the_main_window.update_from_thread("Transciption Completed. Running AI...")
llm_output = assistant(
llm_input,
get_chat_message_history().messages,
get_client(),
screenshot_path=just_screenshot_path,
dont_save_image=False,
)
if the_input_box.toPlainText().startswith("System:"):
the_main_window.update_from_thread("AI Response Completed. Generating Audio...")
last_ai_response = llm_output
from ..gpt_computer_assistant import the_main_window
signal_handler.assistant_response_ready.emit()
def play_text():
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.complated_answer = True
the_main_window.manuel_stop = True
while the_main_window.reading_thread or the_main_window.reading_thread_2:
time.sleep(0.1)
the_main_window.read_part_task()
if the_main_window.stop_talking:
the_main_window.stop_talking = False
signal_handler.assistant_response_stopped.emit()
playback_thread = threading.Thread(target=play_text)
playback_thread.start()
except Exception as e:
print("Error in process_screenshot", e)
traceback.print_exc()
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.update_from_thread("EXCEPTION: " + str(e))
tts_if_you_can("Exception occurred. Please check the logs.")
signal_handler.assistant_response_stopped.emit()
def process_text(text, screenshot_path=None):
with my_tracer.start_span("process_text") as span:
span.set_attribute("user_id", user_id)
span.set_attribute("os_name", os_name_)
try:
global last_ai_response
llm_input = text
llm_output = assistant(
llm_input,
get_chat_message_history().messages,
get_client(),
screenshot_path=screenshot_path,
dont_save_image=True,
)
last_ai_response = llm_output
from ..gpt_computer_assistant import the_main_window
signal_handler.assistant_response_ready.emit()
def play_text():
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.complated_answer = True
the_main_window.manuel_stop = True
while the_main_window.reading_thread or the_main_window.reading_thread_2:
time.sleep(0.1)
the_main_window.read_part_task()
if the_main_window.stop_talking:
the_main_window.stop_talking = False
signal_handler.assistant_response_stopped.emit()
playback_thread = threading.Thread(target=play_text)
playback_thread.start()
except Exception as e:
print("Error in process_text", e)
traceback.print_exc()
from ..gpt_computer_assistant import the_input_box, the_main_window
the_main_window.update_from_thread("EXCEPTION: " + str(e))
tts_if_you_can("Exception occurred. Please check the logs.")
signal_handler.assistant_response_stopped.emit()