feat(voice): modalità dialogo — voce continua hands-free (v0.2.0)

- Nuovo VoiceRecorder (QAudioInput, PCM 16 bit mono): analisi del livello
  in tempo reale e stop automatico dopo il silenzio (pausa e soglia
  configurabili dalle impostazioni); produce WAV per /api/transcribe;
  emette failed("no-speech") se non rileva voce (cattura scartata)
- ChatPage: modalità dialogo (menu "Voice mode"): ascolto -> trascrizione
  -> invio -> lettura della risposta -> riascolto in ciclo; tocco sul
  testo di stato per uscire; limite di 3 errori consecutivi poi esce
- Dettatura manuale: invio automatico dopo la trascrizione (opzione,
  default attivo, disattivabile)
- Settings: sezione "Voice dialog" (auto-invio, pausa auto-stop,
  sensibilità microfono)
- Il percorso di dettatura manuale (Recorder OGG) resta invariato
This commit is contained in:
2026-09-12 09:14:25 +02:00
parent 479edb0f99
commit 9deeedf5b3
12 changed files with 620 additions and 18 deletions
+2
View File
@@ -21,6 +21,7 @@ SOURCES += \
$$SRC/chatmodel.cpp \
$$SRC/sessionsmodel.cpp \
$$SRC/recorder.cpp \
$$SRC/voicerecorder.cpp \
$$SRC/player.cpp \
core_test.cpp
@@ -32,4 +33,5 @@ HEADERS += \
$$SRC/chatmodel.h \
$$SRC/sessionsmodel.h \
$$SRC/recorder.h \
$$SRC/voicerecorder.h \
$$SRC/player.h