Voice-to-Command per AI coding CLI — Panoramica Progetto
VoiceCC è un sistema voice-to-command che permette di controllare AI coding CLI (CLI) tramite voce. L'utente parla, il sistema trascrive con Whisper (GPU locale), interpreta il comando vocale e lo inietta nella sessione terminale dove gira AI coding CLI — sia su WSL (tmux) che su Windows (PowerShell/Terminal).
Supporta comandi testuali diretti, tasti speciali (escape, invio, tab) e interazione intelligente con i prompt di AI coding CLI (selezione opzioni, conferme, input personalizzato, selezione multipla) — completamente a mani libere.
graph TB
User["Utente\nInput Vocale"] -->|"hotkey"| VE
subgraph Windows
VE["VoiceEmitter\nAudio Capture + Whisper STT\n+ Hotkey + System Tray"]
WW["WindowsWorker\nRilevamento Terminale\n+ Iniezione PostMessage"]
BR["Browser\nDashboard (React)"]
end
subgraph WSL / Linux
HUB["SignalR Hub :5050\nMessage Broker + Filter Pipeline\n+ Choice Detection + Dashboard Statico"]
TW["TmuxWorker\nSession Monitor\n+ Tmux Injector"]
TMUX["tmux session 'cc'\nAI coding CLI"]
end
VE -->|"SignalR\ncomando vocale"| HUB
WW -->|"SignalR\nstato sessione + risultati"| HUB
HUB -->|"instrada comando\nal worker"| TW
HUB -->|"instrada comando\nal worker"| WW
TW -->|"send-keys"| TMUX
WW -->|"PostMessage\nWM_CHAR"| Terminal["Windows Terminal"]
BR -->|"SignalR"| HUB
HUB -->|"eventi + stato"| BR
Quanto ci metterebbe un developer super senior .NET/React a costruire tutto da zero, scrivendo tutto il codice a mano?
| # | Fase | Giorni | Note |
|---|---|---|---|
| 0 | Ambiente + Ricerca | 5 | Setup WSL2 + systemd, CUDA + cuDNN (notoriamente problematico), .NET/Node.js SDK, ricerca Whisper.net, NAudio, SharpHook, PostMessage/Win32, UIAutomation, SignalR polymorphism. Ogni API ha quirk non documentati |
| 1 | Architettura + Fondamenta | 6 | Design BBC, struttura multi-solution (WSL/Windows), contratti condivisi (tanti DTO/interfacce/eventi), SignalR Hub con typed client, routing per session owner, Serilog, primo test E2E di cablaggio |
| 2 | Audio Capture + Whisper STT | 9 | NAudio WASAPI (device enum, gestione buffer, formato WAV), SharpHook global hotkey (3 slot), caricamento Whisper.net CUDA (problemi formato, fallimenti caricamento modello), tuning beam search, confidence scores (rotta nella versione stabile, serve build preview), language prompts per 8 lingue, filtro hallucination |
| 3 | Pipeline WSL | 5 | tmux session monitor (macchina a stati: idle/busy/waiting), tmux injector (escaping send-keys è DIFFICILE — quotes, caratteri speciali, scoperta ArgumentList.Add), TmuxWorker orchestrator con retry, template servizi systemd + script installazione |
| 4 | Pipeline Windows | 10 | POC PostMessage (scoprire scan code in lParam, WM_CHAR vs WM_KEYDOWN — rabbit hole profondo in Win32), UIAutomation per trovare terminali (TextPattern, rilevare stato AI coding CLI dalla status bar), iniezione senza rubare focus, messaggi lunghi 200+ caratteri, architettura dual SignalR, packaging Velopack |
| 5 | Dashboard (React) | 5 | Scaffold React 18 + Vite + TypeScript, hook connessione SignalR con reconnect, stores Zustand, lista sessioni + log comandi + console debug, VU meter (recharts real-time), build statico servito dal Hub |
| 6 | Intelligent Message | 10 | Filter pipeline (chain of responsibility), filtro comandi escape, ricerca manuale keybinding AI coding CLI (testare ogni tipo di prompt, screenshot, documentare), screen parsing per 5 tipi di prompt, mapping comandi vocali in 8 lingue, screen adapter cross-platform (tmux '❯' vs Windows '>'), orchestrazione ChoiceExecutorService |
| 7 | Testing + Bug Fixing | 8 | 245 unit test scritti a mano con TDD, mock SignalR/tmux/NAudio/Whisper, test integrazione. Bug fixing: WebSocket 1006, CORS, escaping virgolette, problemi di timing, bug routing hub broadcast, problemi mutex, hallucination Whisper, priming language prompt |
| 8 | Deploy + Documentazione | 4 | Script install/uninstall WSL (systemd, .sudo, controllo porte), script Windows (senza admin, Registry HKCU\Run — scoperto che Task Scheduler richiede admin), workflow DEPLOY.md, cambio modalità (disinstalla→controlla-porta→installa), test su macchina pulita |
| TOTALE | 62 | ~12.5 settimane, ~3 mesi |
| Scenario | Moltiplicatore | Totale |
|---|---|---|
| Ottimistico (CUDA funziona, nessun rabbit hole, tutto fila liscio) | 1x | ~62 giorni lavorativi (~3 mesi) |
| Realistico (inferno CUDA, Win32 non documentato, quirk Whisper) | 1.4x | ~87 giorni (~4.5 mesi) |
| Senior "normale" (meno esperienza Win32/audio) | 1.6x | ~100 giorni (~5 mesi) |
| Junior/Mid (curva di apprendimento su tutto) | 2.5x | ~155 giorni (~8 mesi) |
La Pipeline Windows (Fase 4) domina perché:
L'Intelligent Message (Fase 6) è il secondo collo di bottiglia:
Whisper STT (Fase 2) nasconde complessità:
Il progetto è stato costruito con AI coding assistant che ha scritto ~90% del codice, diretto da un developer senior che ha progettato l'architettura e preso tutte le decisioni. Partenza da zero assoluto: nessun ambiente, nessun tool installato, solo l'idea. I 6 giorni includono tutto: setup ambiente, ricerca, architettura, sviluppo, test, deploy.
| Giorno | Commit | Cosa è stato costruito | Ore | Fase (stima manuale) |
|---|---|---|---|---|
| Giorno 1 (Lun) | 8 | Setup ambiente, architettura, Docker Hub, VoiceEmitter base, integrazione Whisper STT, primo prototipo funzionante | ~12h | Fasi 0+1+2 |
| Giorno 2 (Mar) | 20 | VoiceEmitter completo (settings, tray, UI impostazioni), installer Velopack, migrazione Docker→systemd, feature multi-attivazione (3 slot hotkey) | ~11h | Fasi 1+2+3+8 |
| Giorno 3 (Mer) | 46 | Bugfix settings, intero PowerShellWorker da zero (UIAutomation + PostMessage + WindowsWorker + refactor WorkerBase + fix routing Hub), integrazione in VoiceEmitter, fix hallucination Whisper, pipeline message filter con comandi escape | ~14h | Fasi 3+4+7+8 |
| Giorno 4 (Gio) | 29 | Hub versionato, opzioni deploy (WSL + Windows, senza admin), POC Feature04 casistiche 4-6, fix language prompt Whisper | ~12h | Fasi 6+7+8 |
| Giorno 5 (Ven) | 14 | Choice detection completa: ricerca keybinding, screen parsing, voice mapping, ChoiceExecutorService, supporto Windows con IScreenAdapter | ~11h | Fase 6 completa |
| Giorno 6 (Sab) | 3 | Tuning accuratezza Whisper: upgrade a build preview, beam search, confidence scores, vocabolario language prompt | ~2h | Rifinitura Fase 2 |
| TOTALE | 120 | ~62h | ~6 giorni lavorativi |
| Fase | Stima (manuale) | Reale (con AI) | Speedup |
|---|---|---|---|
| Ambiente + Ricerca | 5 giorni | ~0.5 giorni | 10x |
| Architettura + Fondamenta | 6 giorni | ~0.5 giorni | 12x |
| Audio + Whisper STT | 9 giorni | ~1.5 giorni | 6x |
| Pipeline WSL | 5 giorni | ~0.5 giorni | 10x |
| Pipeline Windows | 10 giorni | ~1 giorno | 10x |
| Dashboard (React) | 5 giorni | ~0.3 giorni | 17x |
| Intelligent Message | 10 giorni | ~1.5 giorni | 7x |
| Testing + Bug Fixing | 8 giorni | distribuito | — |
| Deploy + Documentazione | 4 giorni | ~0.5 giorni | 8x |
| TOTALE | 62 giorni | ~6 giorni | 10x |