import os import openai from dotenv import load_dotenv import time import speech_recognition as sr import pyttsx3 import numpy as np from gtts import gTTS mytext = 'Bem-vindo ao meu sistema' language = 'pt-br' # Definindo o idioma para português do Brasil openai.api_key = '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' # Coloque sua chave aqui load_dotenv() # Configurações do modelo model = 'gpt-4' # Configurações de reconhecimento e síntese de fala r = sr.Recognizer() engine = pyttsx3.init() voice = engine.getProperty('voices')[1] engine.setProperty('voice', voice.id) name = "Seu Nome" greetings = [f"E aí, mestre {name}!", "Sim?", f"Olá, {name}, como posso ajudar?"] def listen_for_wake_word(source): print("Aguardando 'Oi'...") while True: audio = r.listen(source) try: text = r.recognize_google(audio, language='pt-BR') if "oi" in text.lower(): print("Palavra de ativação detectada.") engine.say(np.random.choice(greetings)) engine.runAndWait() listen_and_respond(source) break except sr.UnknownValueError: pass # Função para ouvir e responder def listen_and_respond(source): print("Ouvindo...") while True: audio = r.listen(source) try: text = r.recognize_google(audio, language='pt-BR') print(f"Você disse: {text}") if not text: continue # Envio da mensagem para o GPT response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": f"{text}"}] ) response_text = response.choices[0].message.content print(response_text) # Gerar e reproduzir a resposta em áudio myobj = gTTS(text=response_text, lang=language, slow=False) myobj.save("response.mp3") os.system("vlc response.mp3") # Reproduzindo o áudio # Falar a resposta usando pyttsx3 engine.say(response_text) engine.runAndWait() if not audio: listen_for_wake_word(source) except sr.UnknownValueError: time.sleep(2) print("Silêncio detectado, ouvindo novamente...") listen_for_wake_word(source) break except sr.RequestError as e: print(f"Não foi possível obter resultados; {e}") engine.say(f"Erro ao obter resultados; {e}") engine.runAndWait() listen_for_wake_word(source) break # Usar o microfone padrão como fonte de áudio with sr.Microphone() as source: listen_for_wake_word(source)