Skip to content

This project is a real-time voice communication system that integrates WebRTC, WebSockets, and OpenAI’s speech APIs to enable seamless speech-to-text and text-to-speech interaction. The goal is to build a lightweight, scalable, and low-latency architecture for voice-based AI interactions.

Notifications You must be signed in to change notification settings

ArnauPlanasBernet/ai-realtime-voice-chatbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ASSISTENT DE VEU EN TEMPS REAL AMB IA GENERATIVA PER A XATBOTS WEB

Projecte de Final de Grau – Enginyeria Informàtica
Autor: Arnau Planas Bernet
Tutor acadèmic: Pere Barberan Agut
Curs: 2024–2025


Descripció

Aquest projecte consisteix en el desenvolupament complet d’un sistema d’assistència per veu en temps real, integrable com a snippet web en qualsevol entorn corporatiu. L’objectiu és simular una conversa natural entre l’usuari i un assistent virtual basat en el model GPT-4o d’OpenAI, utilitzant àudio com a canal principal d’interacció.

La solució inclou:

  • Captura i transmissió de veu en temps real via WebRTC i WebSockets
  • Integració amb la Realtime API d’OpenAI per transcripció, resposta i síntesi de veu
  • Execució de Function Calling amb accés a una knowledge base modular
  • Interfície d’usuari en React + TypeScript
  • Backend en Python (FastAPI), desplegat a AWS EC2
  • Comunicació totalment xifrada via HTTPS

Estructura del projecte

project/
├── client/              # Frontend (React + TypeScript)
│   ├── public/          # Lògica de processament d'audio
│   └── src/             # Components i lògica del client web
├── server/              # Backend Python (FastAPI)
│   ├── main.py          # Entrypoint del servidor WebSocket
│   ├── openai_session.py# Creació de sessions amb OpenAI
│   ├── handlers.py      # Gestió de missatges amb OpenAI
│   ├── config.py        # Gestió de la configuració de la sessió amb OpenAI
│   ├── audio_utils.py   # Conversió d’àudio PCM a WAV
│   └── requirements.txt # Dependències del backend
├── documents/           # Mòdul de knowledge base (fitxers .txt temàtics)
└── README.md            # Aquest fitxer


Avís important

Aquest projecte no inclou cap token d’autenticació per a l’API d’OpenAI. Per poder establir connexió amb el servei de veu en temps real, és imprescindible disposar d’una clau d’API vàlida proporcionada per OpenAI i definir-la manualment al fitxer .env del backend: OPENAI_API_KEY=sk-... Sense aquest valor, el servidor no podrà generar sessions amb la Realtime API i la funcionalitat principal no estarà disponible.

Aquesta clau s'ha d'afegir en un nou fitxer anomenat .env a l'arrel del projecte


Requisits

Backend (Python)

  • Python 3.10+
  • venv

Frontend

  • Node.js + npm
  • React + TypeScript

Com executar-lo

1. Backend (FastAPI)

cd server
python3 -m venv venv
source venv/bin/activate   # o .\venv\Scripts\activate a Windows
pip install -r requirements.txt
cd ..
uvicorn server.main:app --host 0.0.0.0 --port 8000 --reload

Assegura’t d’haver creat un fitxer .env amb la teva clau d’API d’OpenAI:

OPENAI_API_KEY=sk-...

2. Frontend (React)

cd client
npm install
npm run dev

Desplegament

El sistema ha estat desplegat amb:

  • Backend a AWS EC2 (instància t2.micro)
  • Client web a Netlify
  • Snippet web a Netlify
  • Domini dinàmic gestionat amb DuckDNS
  • Xifrat HTTPS via Let's Encrypt (Nginx)

Fitxers destacats

  • main.py: entrada principal del servidor, gestiona connexions i àudio
  • useCall.ts: hook de React que gestiona connexió i cues d’àudio
  • CallWidget.tsx: component de trucada per a la interfície d’usuari
  • openai_session.py: configuració i creació de la sessió amb OpenAI
  • documents/: mòdul que carrega respostes contextuals segons la temàtica

Validació

S’han realitzat proves en entorns locals i desplegats, garantint:

  • Comunicació contínua via WebSocket
  • Latència baixa en la resposta per veu
  • Compatibilitat amb navegadors moderns
  • Reproducció fluïda d’àudio amb cues i gestió de buffer

Llicència

Aquest projecte ha estat desenvolupat com a part del Treball de Final de Grau. Qualsevol ús comercial o reutilització ha de comptar amb el permís explícit de l’autor.


Agraïments

  • A la meva família i amistats pel suport constant
  • A Hubtype per confiar en mi per aquest projecte pilot
  • Al Tecnocampus i al meu tutor per l’acompanyament tècnic i acadèmic

About

This project is a real-time voice communication system that integrates WebRTC, WebSockets, and OpenAI’s speech APIs to enable seamless speech-to-text and text-to-speech interaction. The goal is to build a lightweight, scalable, and low-latency architecture for voice-based AI interactions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •