VoxType è un’applicazione di trascrizione vocale push-to-talk per Linux, scritta in Rust. Il funzionamento è semplice: si tiene premuto un tasto (per default ScrollLock), si parla, e al rilascio il testo trascritto viene inserito direttamente nella posizione del cursore. Tutto avviene in locale grazie a whisper.cpp, senza inviare dati a server esterni.

Il progetto supporta nativamente i compositor Wayland (Hyprland, Sway, River) ma funziona anche su X11. Tra le caratteristiche principali ci sono il supporto per oltre 1600 lingue, l’accelerazione GPU tramite Vulkan e la possibilità di post-processare il testo con un LLM locale tramite Ollama o llama.cpp.

Progetto su GitHub

Il codice sorgente di VoxType è disponibile su GitHub .

Requisiti

Per utilizzare VoxType è necessario un sistema Linux con glibc 2.38 o superiore, che corrisponde indicativamente a Ubuntu 24.04+, Fedora 39+ o Arch Linux. Il sistema audio può essere PipeWire oppure PulseAudio.

Per l’output del testo su Wayland è necessario almeno uno tra questi strumenti: wtype (consigliato, miglior supporto Unicode), dotool, ydotool oppure wl-clipboard. Su X11 viene utilizzato xdotool.

Installazione

Installare le dipendenze

Su Fedora:

bash
sudo dnf install wtype wl-clipboard

Su Ubuntu/Debian:

bash
sudo apt install wtype wl-clipboard

Su Arch Linux:

bash
sudo pacman -S wtype wl-clipboard

Compilare VoxType

VoxType è scritto in Rust, quindi è necessario avere la toolchain Rust installata. Se non è già presente nel sistema, si può installare con rustup :

bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Dopo aver installato Rust, clonare il repository e compilare:

bash
git clone https://github.com/peteonrails/voxtype.git
cd voxtype
cargo build --release

Il binario verrà generato in target/release/voxtype.

Scaricare un modello

VoxType include un comando di setup che scarica automaticamente il modello Whisper necessario per la trascrizione:

bash
./target/release/voxtype setup --download

Per default viene scaricato il modello base.en, un buon compromesso tra velocità e accuratezza per l’inglese. Per l’italiano o altre lingue è necessario un modello multilingue.

Configurare il keybinding nel compositor

Per utilizzare VoxType su Wayland è consigliato configurare il tasto di attivazione direttamente nel compositor. Alcuni esempi:

Per Hyprland (~/.config/hypr/hyprland.conf):

bind = , SCROLL_LOCK, exec, voxtype toggle

Per Sway (~/.config/sway/config):

bindsym Scroll_Lock exec voxtype toggle

Avviare VoxType

bash
./target/release/voxtype

Per installarlo a livello di sistema si può copiare il binario:

bash
sudo cp target/release/voxtype /usr/local/bin/

A questo punto è sufficiente tenere premuto il tasto configurato, parlare, e rilasciare per vedere il testo trascritto comparire nella posizione del cursore.

Configurazione

Il file di configurazione si trova in ~/.config/voxtype/config.toml. Alcune opzioni utili:

toml
# Modello da utilizzare (tiny, base, small, medium, large-v3, large-v3-turbo)
model = "base"

# Lingua per la trascrizione (it = italiano)
language = "it"

# Metodo di output: type, clipboard, paste
output_mode = "type"

# Tasto di attivazione
hotkey = "SCROLLLOCK"

Per la trascrizione in italiano è consigliato usare almeno il modello small per ottenere risultati accurati. I modelli con suffisso .en (come base.en o small.en) sono ottimizzati esclusivamente per l’inglese e non supportano altre lingue.

Modelli e VRAM

La dimensione del modello incide sulla memoria necessaria. Il modello tiny richiede circa 75 MB di VRAM, base circa 150 MB, small circa 500 MB e medium circa 1.5 GB. Il modello large-v3-turbo offre il miglior rapporto qualità/velocità per chi ha una GPU dedicata.

Accelerazione GPU

VoxType supporta l’accelerazione GPU tramite Vulkan, compatibile con schede AMD, NVIDIA e Intel. Per abilitarla:

bash
sudo voxtype setup gpu --enable

Questo comando installa i pacchetti Vulkan necessari per il proprio sistema. L’accelerazione GPU riduce significativamente i tempi di trascrizione, soprattutto con modelli più grandi come medium o large-v3.

Meeting mode

VoxType include una modalità meeting per la trascrizione continua con attribuzione degli speaker ed esportazione del testo. Questa modalità è utile per trascrivere riunioni o lezioni senza dover tenere premuto un tasto.

Integrazione con Ollama

Una delle caratteristiche più interessanti di VoxType è la possibilità di post-processare il testo trascritto con un LLM locale. Ad esempio, si può correggere la grammatica, riformulare il testo o tradurlo automaticamente utilizzando Ollama o llama.cpp come backend.