Vetro
Traduce quello che hai sullo schermo e quello che dici, fra italiano, inglese, russo e ucraino, tutto offline.
Cosa fa
Vetro legge quello che c’è sullo schermo — WhatsApp, Telegram, i commenti di YouTube, TikTok, X — e ci dipinge sopra la traduzione al suo posto: stesso fumetto, stesso colore, stessa dimensione, orari intatti. Ascolta anche il microfono e scrive quello che dici in un registro tradotto, così puoi parlare in italiano e copiare il testo in russo.
Gira tutto in locale: nessun account, nessuna chiave API, nessun traffico di rete dopo il primo download dei modelli.
Perché sembra giusto
Quasi tutti i traduttori di schermo coprono la finestra con un blocco di testo e rovinano l’impaginazione. Vetro è costruito per non farlo. Raggruppa le righe in messaggi prima di tradurle, così una frase che va a capo resta una frase. Toglie orari, spunte, link e menzioni prima della traduzione e li rimette identici dopo. Campiona i colori di ogni fumetto e adatta il carattere allo spazio che sostituisce, senza mai uscire dal fumetto.
Perché tiene il passo
Rifare lettura e traduzione a ogni fotogramma sarebbe lentissimo. Prima Vetro si fa tre domande che costano poco: è cambiato qualcosa? È solo uno scorrimento? Questa riga l’ho già letta? Uno schermo fermo costa circa un millisecondo, uno scorrimento sposta subito la traduzione già fatta, e le traduzioni restano in una cache SQLite anche dopo il riavvio.
Scelte tecniche
Python con interfaccia PySide6. Il testo si trova e si legge con i modelli PP-OCRv5 in formato ONNX, uno per l’alfabeto latino e uno per il cirillico. La traduzione usa NLLB-200, che passa direttamente da una lingua all’altra senza fare tappa nell’inglese; la voce usa faster-whisper. Se serve una traduzione più naturale, può passare da un modello linguistico locale con LM Studio.
Stato
Finito, per Windows e Linux; potrei aggiornarlo più avanti. Su Linux la parte schermo funziona con X11, non con Wayland. Il codice è sotto licenza MIT, i modelli hanno le loro: NLLB-200 è solo per uso non commerciale.