Stesi Voice Assistant
Assistente vocale italiano per Odoo (OpenAI Whisper + TTS)
Funzionalità
- Push-to-Talk e Auto VAD — due modalità di registrazione; il rilevamento del silenzio ferma la registrazione automaticamente.
- Tre modalità brain — Intent Matching (regole a parole chiave, latenza zero), LLM Agent (tool-calling GPT-4o / GPT-4.1), Hybrid (intent prima, LLM come fallback).
- Registro strumenti estensibile — i moduli companion aggiungono strumenti dati Odoo senza modificare il core.
- Storico conversazioni — log persistente per utente con metriche di latenza STT / brain / TTS.
- Sicurezza a livello di riga — ogni utente vede solo le proprie conversazioni.
- Interfaccia completamente in italiano — tutte le etichette, i menu e i messaggi di runtime sono tradotti.
- Tutta la configurazione in Impostazioni — chiave API, modello/voce/velocità/formato TTS, vocabolario Whisper, parametri VAD, modalità brain, modello LLM.
Requisiti
| Dipendenza | Version |
|---|---|
| Odoo | 19.0 |
| Python | 3.10+ |
| requests | incluso con Odoo |
| Chiave API OpenAI | — |
Installazione
- Copia la cartella
stesi_voice_assistantnella directorycustom-addons. - Riavvia il server Odoo.
- Attiva la modalità sviluppatore e installa il modulo dal menu App.
Configurazione
Vai in Voice Assistant → Configurazione → Impostazioni e imposta:
| Impostazione | Descrizione |
|---|---|
| Chiave API OpenAI | La tua chiave sk-... da platform.openai.com |
| Modalità Brain | Intent Matching, LLM Agent, or Hybrid |
| Modello LLM | GPT-4o, GPT-4.1, Mini, Nano — bilanciamento qualità/costo |
| System Prompt LLM (extra) | Contesto aziendale opzionale aggiunto al system prompt |
| Modello TTS | TTS-1, TTS-1-HD, GPT-4o Mini TTS, GPT-4o Audio Preview |
| Voce TTS | Alloy, Echo, Fable, Nova, Onyx, Shimmer |
| Velocità TTS | 0.25 (lento) a 4.0 (veloce), default 1.0 |
| Formato Risposta TTS | MP3 (massima compatibilità), Opus, AAC, FLAC, WAV, PCM |
| Vocabolario Whisper | Termini di dominio per migliorare la precisione della trascrizione |
| Modalità Microfono | Push to Talk or Auto VAD |
| Durata Silenzio VAD (ms) | Millisecondi di silenzio prima dell'arresto automatico (solo Auto VAD) |
| Soglia Silenzio VAD | Soglia ampiezza RMS 0–100 (solo Auto VAD) |
Utilizzo
- Apri Voice Assistant → Apri Assistente.
- Push to Talk: tieni premuto il pulsante microfono → parla → rilascia.
Auto VAD: clicca il pulsante microfono → parla → si ferma automaticamente sul silenzio. - La risposta appare sullo schermo e viene riprodotta come audio.
- Lo storico completo della sessione viene visualizzato sotto il microfono.
- I log delle conversazioni persistenti sono disponibili in Voice Assistant → Reporting → Storico Conversazioni.
Architettura — Pipeline a 5 livelli
| Livello | Component | Ruolo |
|---|---|---|
| 0 — UI | Componente OWL nel browser | Registra audio blob, riproduce la risposta |
| 1 — STT | Controller → OpenAI Whisper | Trascrive il parlato in testo |
| 2 — Router | Controller → voice.brain.process() | Instrada alla modalità brain configurata |
| 3 — Brain | voice.brain (AbstractModel) | Intent matching / LLM tool-calling / Hybrid |
| 4 — TTS | Controller → OpenAI TTS | Converte il testo di risposta in audio |
Moduli Companion
| Modulo | Descrizione |
|---|---|
stesi_voice_assistant_sale | Strumenti LLM: get_sale_orders, get_sale_order_detail |
ai_app_voice | Bridge verso gli agenti AI Enterprise di Odoo — pulsante vocale nel form agente, microfono nel chatter, TTS per agente |
API Sviluppatore
voice.brain.process(user_text, conversation, agent_id=None) — il punto di ingresso del brain.
Il parametro opzionale agent_id viene propagato a tutti i metodi _process_*
e utilizzato da ai_app_voice per instradare le conversazioni verso uno specifico agente AI Odoo.
Tutti i metodi _process_* accettano **kwargs così i moduli companion possono
aggiungere nuovi parametri senza rompere le implementazioni esistenti.
Changelog
| Version | Data | Note |
|---|---|---|
| 19.0.1.0.0 | 2026-05-02 | voice.brain.process() ora accetta il parametro opzionale agent_id propagato a tutti i metodi _process_* tramite **kwargs. Componente OWL VoiceAssistant esportato, legge agentId / agentName da action.params. Il controller /voice_assistant/respond accetta il campo agent_id opzionale. Primo porting a Odoo 19.0. |
| 18.0.1.0.0 | 2026-05-01 | Prima release: Push-to-talk, Auto VAD, modalità brain Intent / LLM / Hybrid, registro strumenti, storico conversazioni, traduzioni italiane. |
Sviluppato da STeSI Consulting — Francesco Moccia <moccia.f@stesi.consulting>