L’evoluzione dell’intelligenza artificiale ha portato a sviluppi sorprendenti, e uno degli esempi più eclatanti è GPT-4, un modello linguistico di OpenAI. Recentemente, ho sviluppato uno script Python che integra GPT-4 in un sistema di chatbot conversazionale con output vocale. Questo script rappresenta un esempio notevole di come le API AI possano essere sfruttate per creare interazioni utente avanzate.
import pyaudio
import vosk
import os
import json
from gtts import gTTS
import simpleaudio as sa
from openai import OpenAI
from pydub import AudioSegment
# Inizializza il client OpenAI
client = OpenAI(api_key='sk-XXX') # Inserire API OpenAI
# Inizializza la cronologia dei messaggi
message_history = []
def get_response_from_gpt4(user_input):
global message_history
# Aggiungi il messaggio dell'utente alla cronologia
message_history.append({"role": "user", "content": user_input})
completion = client.chat.completions.create(
model="gpt-4",
messages=message_history
)
if completion.choices and completion.choices[0].message:
risposta = completion.choices[0].message.content
# Aggiungi la risposta del modello alla cronologia
message_history.append({"role": "assistant", "content": risposta})
else:
risposta = "Nessuna risposta ottenuta dall'API."
return risposta
def text_to_speech(text, lang="it"):
tts = gTTS(text=text, lang=lang, slow=False)
tts.save("./response.mp3")
command = 'ffmpeg -y -i ./response.mp3 ./response.wav > NUL 2>&1'
os.system(command)
wave_obj = sa.WaveObject.from_wave_file("./response.wav")
play_obj = wave_obj.play()
play_obj.wait_done()
def main():
global message_history
# Initialize Vosk
vosk.SetLogLevel(0)
model_path = "./vosk-model-it-0.22" # Scaricare il modello
vosk_model = vosk.Model(model_path)
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=16000,
input=True,
frames_per_buffer=8000)
stream.start_stream()
rec = vosk.KaldiRecognizer(vosk_model, 16000)
# Aggiungi il messaggio iniziale del sistema alla cronologia
message_history.append({"role": "system", "content": "Tu sei un assistente virtuale."})
print("Parla con il ChatBot. Pronuncia 'Stop' per uscire.")
while True:
try:
data = stream.read(4000, exception_on_overflow=False)
except IOError as e:
print(f"Errore di Buffer: {e}")
continue
if rec.AcceptWaveform(data):
result = json.loads(rec.Result())
text = result.get("text", "").strip()
if text.lower() == "stop":
print("ChatBot: Arrivederci!")
break
if text:
print(f"Tu: {text}")
response_text = get_response_from_gpt4(text)
print(f"ChatBot: {response_text}")
text_to_speech(response_text)
if __name__ == "__main__":
main()
Configurazione Iniziale e Dipendenze
Il codice si apre con l’importazione di librerie fondamentali:
pyaudio
: gestione dell’interfaccia audio.vosk
: per il riconoscimento vocale offline.gtts
(Google Text-to-Speech): per convertire le risposte testuali in audio.simpleaudio
: per riprodurre i file audio.openai
: per interagire con l’API di GPT-4.pydub
: per la manipolazione audio.
Autenticazione e Stato Iniziale
Viene inizializzato il client OpenAI con una chiave API, segno di un’autenticazione sicura e necessaria per accedere alle capacità di GPT-4. Inoltre, lo script mantiene una cronologia dei messaggi, essenziale per contestualizzare le risposte di GPT-4 durante una conversazione.
Funzione di Comunicazione con GPT-4
La funzione get_response_from_gpt4(user_input)
rappresenta il cuore dello script. Riceve l’input vocale dell’utente, lo aggiunge alla cronologia dei messaggi, e richiede a GPT-4 di generare una risposta. Questa risposta viene poi passata per la conversione testo-voce.
Riconoscimento e Sintesi Vocale
Il riconoscimento vocale, gestito da vosk
, traduce l’input vocale dell’utente in testo. Successivamente, gtts
converte le risposte testuali di GPT-4 in output vocale, creando un’esperienza conversazionale fluida e naturale.
Riproduzione Audio
La risposta vocale generata viene riprodotta usando simpleaudio
, permettendo all’utente di ricevere feedback immediato e vocale.
Flusso di Lavoro della Conversazione
Il flusso di lavoro generale dell’applicazione inizia con l’ascolto dell’input vocale dell’utente, seguito dal riconoscimento vocale e dalla generazione della risposta di GPT-4. Infine, la risposta viene comunicata all’utente in forma vocale.
Conclusione
Questo script Python è un esempio impressionante di come le tecnologie AI possano essere combinate per creare applicazioni interattive e coinvolgenti. L’uso di GPT-4, insieme al riconoscimento vocale e alla sintesi vocale, apre nuove strade per l’interazione uomo-macchina, rendendo la tecnologia più accessibile e personale.