Proudly debugging the system since 1981

Categoria: software (Pagina 1 di 4)

Audio To Text arriva alla 1.0.0: ecco che cosa è cambiato

Dal post di fine agosto è successo parecchio. L’ultima volta vi raccontavo della versione 0.6.3 e dell’avvio del closed testing su Google Play; oggi Audio To Text (ex phone-whisper) è arrivato alla 1.0.0, una release stabile pronta per la fase di test. In questi mesi il lavoro è stato enorme, soprattutto su interfaccia e affidabilità. Vi riassumo i punti principali.

Un’interfaccia tutta nuova

La novità più visibile è la riscrittura completa dell’interfaccia con Jetpack Compose e Material 3. Fino a qualche mese fa la UI era costruita con le classiche View di Android, ora è tutta basata su Compose: tema chiaro/scuro che riusa la palette esistente, animazioni e componenti moderni.

A cambiare è anche la navigazione: al posto dei vecchi bottoni è arrivata una barra di navigazione fissa in basso con tre sezioni — Home, Catalogo e Maggiori informazioni — ognuna con la sua icona (Material Symbols Outlined). La voce attiva è in azzurro, le altre in grigio, e la barra resta sempre visibile. L’onboarding resta una schermata separata, senza barra, con il solo pulsante “Chiudi”.

Un dettaglio che in orizzontale faceva la differenza: nella schermata principale titolo e testo informativo restano fissi, mentre stato e modelli installati scorrono verticalmente. Ora anche con il telefono ruotato tutto funziona come deve.

Download che non si interrompono

Prima, se chiudevi il catalogo mentre uno scaricamento era in corso, il download si fermava. Ora i modelli si scaricano tramite un foreground service: la scaricamento continua in background anche dopo aver premuto Indietro, con una notifica che mostra il progresso. A fine installazione la lista dei modelli installati e il catalogo si aggiornano da soli. È stato anche corretto un bug che, premendo il tasto Indietro durante un download, poteva congelare l’app (ANR).

Catalogo modelli più ricco e gestibile

Il catalogo è cresciuto e ora è più pratico:

  • Nuovi modelli, tra cui Kroko Italiano, dedicato alla trascrizione dell’italiano, scaricato come file singoli direttamente da Hugging Face.
  • Rimozione dei modelli: i modelli installati si possono eliminare (con conferma) per liberare spazio; il modello attivo, se rimosso, viene riselezionato automaticamente con il primo installato rimasto.
  • Nomi più chiari: ogni modello indica la lingua di destinazione (es. “Whisper Base – English”, “Parakeet 0.6B – Multilanguage”).
  • Supporto per modelli compressi e non, e per fonti di download diverse.

Onboarding e piccoli grandi fix

Alla prima apertura ora compare una guida introduttiva con tre schermate scaricabili che spiegano come scaricare il modello, attendere l’installazione e trascrivere un messaggio; si può rivedere in qualsiasi momento dalla sezione “Maggiori informazioni”, dove i link GitHub e Issues sono tornati attivi e aprono correttamente il browser.

Sono stati sistemati anche il crash di Kroko al caricamento (era un modello streaming, ora caricato con il riconoscitore giusto) e il progresso di download per i modelli compressi, che prima saltava da 0% a 100% senza valori intermedi. Le icone del download e del cestino usano ora gli icon set Material Symbols, decisamente più pulite.

Piattaforma

Sotto il cofano: target SDK 36 (Android 16), supporto a tutti gli ABI (arm64, arm, x86, x86_64) per una compatibilità più ampia, e interfaccia multilingua italiano/inglese.

Changelog in breve (0.6.3 → 1.0.0)

  • v1.0.0 — Prima release stabile per il closed testing: consolida tutta la serie 0.9.x.
  • v0.9.x — Migrazione Jetpack Compose Material 3, barra di navigazione in basso, download in background (foreground service), fix ANR/auto-riselezione/link/scroll orizzontale, icone Material Symbols, fix Kroko, progresso download compressi, chiarezza catalogo, nuovi modelli (Kroko Italiano), onboarding e indicatori.
  • v0.8.x — Rimozione modelli installati, supporto a tutti gli ABI, promozioni al closed testing.
  • v0.7.0 — Promozione al closed testing.
  • v0.6.4–0.6.6 — Target SDK 36, schermata “Maggiori informazioni”, fix UI e contrasto.

Come provarla

La 1.0.0 è pronta per il closed testing su Google Play. Per partecipare basta iscriversi al gruppo dei tester (accesso libero, nessuna mail): https://groups.google.com/g/testers-community/ . Serve solo un dispositivo Android e, se trovi qualcosa che non va — crash, modelli che non si scaricano, traduzioni imprecise — segnalalo pure via Issues o nel gruppo.

La trascrizione resta completamente locale e on-device, con modelli sherpa-onnx: nessuna dipendenza dal cloud. Grazie a chi sta testando e continua a segnalare problemi: è ciò che rende l’app migliore.

Il problema non è la velocità, ma il caos

Il tema non mi è nuovo, aumento di complessità, stack che diventano troppo profondi, impossibilità di conoscere tutto, almeno ad un livello di efficienza lavorativa in tempi accettabili e conseguente frustrazione, frammentazione dei framework, dei linguaggi e delle metodologie.

Sono incappato in una riflessione e conseguente proposta/lancio di un software per risolvere il problema dello sviluppo software (sembra un gioco di parole).

Le riflessioni sono interessanti.

“Every team’s setup is a unique snowflake. Even within the same programming language ecosystem, different teams will set up their dev process completely differently. Completely different build, test, packaging logic. Completely different runtime versions. Completely different eng culture. So on and so forth. This craziness is now the norm.”

“You can’t have strong innovation without freedom. You can’t have high-quality engineering and security without standardization.”

https://earthly.dev/blog/lunar-launch

Che poi la soluzione passi attraverso una verifica automatica ho qualche dubbio.

Second Me

Ho deciso di provare questo progetto di intelligenza artificiale, Second Me, perché va oltre la “semplice” RAG ma effettua un training effettivo sui contenuti forniti e volevo verificarne l’efficacia. Il RAG e’ interessante ma spesso poco efficace quando si tratta di fare compiti per i quali il modello originale non era particolarmente bravo o competente.

Second Me pero’, purtroppo, e’ ancora molto immaturo. Al momento c’è un evidente bug che impedisce di allenare un modello diverso da quello da 0.5B di parametri (https://github.com/mindverse/Second-Me/issues/256) cosa che produce un risultato veramente deludente. Ho provato ad aggirare il problema mettendo il modello da 3B nella cartella di quello da 0.5B, sembra finire ma poi non parte.

Riproverò quando il progetto sarà un po più maturo.

Informazioni potenzialmente utili per altri ricavate dalle prime prove:

La configurazione di default prevede l’embedding e il modello di supporto utilizzando le API di open-ai ma si può benissimo usare ollama in locale su una buona GPU. Io ho usato nomic-embed-text:latest per l’embedding e gemma3:latest per il supporto. In teoria poteva girare anche gemma3:12b sulla mia GPU ma usando embedding e supporto insieme si rallentava parecchio e ho preferito un modello più piccolo.

Usando Second Me su docker e Ollama sulla macchina fisica i parametri per le API sono:
API Key: ollama
API Endpoint: http://host.docker.internal:11434/v1
e ovviamente il modello scelto…

La preparazione dei dati, embedding e memorie e quant’altro avviene effettivamente sulla GPU (di fatto lo fa ollama…), mentre il training avviene sulla CPU per cui credo manchi qualche cosa…

Il tempo complessivo con un po’ di memorie (i post degli ultimo due anni sul blog… poca roba) complessità media e modello 0.5B stanno circa sull’ora, ora e mezza con una 3060.

Risultati… veramente brutti :D. Ma riproverò tra un paio di settimane.

Screen recorder gratis e senza limiti

Dovete registrare un incontro virtuale o una lezione? Preparare un video che spieghi come usare un software o presentarne uno nuovo?

Uno screen recorder potrebbe essere lo strumento di cui avete bisogno.

Ci sono molte alternative, una rapida ricerca su un motore di ricerca offre almeno una decina di alternative.

Se non volete fare come me, ovvero scaricarne 5 prima di rendersi conto che se non paghi il programma A ti limita a 30 secondi, il programma B ti mette il logo in sovra impressione, il programma C lagga tremendamente, D non registra l’audio ed E una combinazione di tutti i problemi precedenti … scaricate direttamente OBS Studio.

È open source e completamente gratuito, non ha limiti di tempo, registra sia l’audio del PC che il microfono o solo uno dei due, si può scegliere se registrare uno schermo, una finestra, una Tab del browser e con un PC decente regge i 30 FPS.

Sincronizzare i file con un drive esterno

Non ho mai trovato un programmino semplice e gratuito per mantenere aggiornata la copia di una directory su un disco esterno. Ci sono evoluti programmi commerciali che lo fanno, ma per una banalità del genere non voglio pagare. Ci sono i tools del sistema operativo ma richiedono troppa attenzione (no, se il file è già presente nella cartella di destinazione e ha la stessa data di ultima modifica non devi sovrascriverlo se no ci mettiamo una vita…). Ci sono ottimi tools open source, come rsync, ma che sono molto complessi e, nel caso di quest’ultimo ottimizzati per la sincronia tra due dispositivi intelligenti (2 pc, 2 server…) in modo da ridurre la banda utilizzata.

Per cui, vista la banalità della cosa, ho deciso di dedicare qualche ora a scriverne uno, invece che a provare l’ennesima cosa che non fa quello che voglio.

Requisiti che mi sono dato :

  • Sincronia unidirezionale da una cartella sorgente ad una di destinazione
  • Possibilità di scegliere se rimuovere o meno i file cancellati nella sorgente anche nella destinazione
  • Nessuna richiesta di conferma all’utente
  • Parametrizzazione da linea di comando, cosi si fa un bello script e non ci si pensa più
  • Resistenza all’errore. Se fallisce la copia di un file o l’esplorazione di una cartella si passa alla successiva

La versione molto alpha (ma che già fa tutto quello che voglio) è disponibile a questo indirizzo : https://bitbucket.org/sgalliani/mysync/downloads/20160131%20mySync.zip

Smaterializzazione

Stiamo traslocando altrove. Dire dove non è cosi banale.

Non ci sono limiti di tempo, non ci sono file da fare, non si scrive più a mano, il denaro c’è ma non si vede. Gli edifici in muratura perdono di sostanza. L’impiegato che, annoiato e noioso, risponde sempre alle stesse domande e un pò per vendetta vi rimbalza qua e là diventa l’ultima opzione. Le trappole burocratiche cessano di esistere perchè la guida è in tempo reale.

Un sogno? Forse, ma un passo alla volta ci si sta arrivando. Con buona pace di chi difende metodi paleolitici solo perchè sono più affini delle sue abilità. La resistenza è inutile.

Da VmWare a VirtualBox

Tradizionalmente ho sempre usato vmware, piattaforma storica di virtualizzazione, che offre di tutto e di più. Accelerazione 3D hardware, utilizzo delle estensioni del processore, multicore e multiprocessore, supporto per windows e linux sia come guest che come host … ma … per linux fondamentalmente è una scocciatura perchè non supporta tutti i kernel. Dovendo essere installati dei moduli del kernel questi devono essere compatibili col kernel in uso. Cosa tutt’altro che banale se si usa linux come host. Tant’è che su Kubuntu 10.04 ho dovuto usare una patch non ufficiale fornita dalla community per far andare vmware. E ovviamente dimenticarmi di aggiornare alla 10.10… fortuna che è una LTS.

L’alternativa è virtualBox. Prodotto meno maturo, ma neanche cosi tanto. Il vantaggio è che legge il formato dei dischi di Vmware, quindi in teoria si puo switchare da un prodotto all’altro con la stessa virtual machine.
In teoria, appunto. In pratica no. Perche Vmware usa di default l’ IO APIC mentre virtualbox no. Virtual box si puo configurare per usare questa modalità ma le prestazioni rispetto a vmware sono nell’ordine di 1 a 3. Inoltre la scheda di rete virtuale di virtualbox e vmware ha lo stesso hardware id quindi il sistema operativo guest fa un pò di confusione e continua a cercare di usare i driver di vmware anche se sono stati correttamente installati i driver di virtual box.

Per ottenere un passaggio (quasi) di successo il primo passo è di abilitare l’ IO APIC in virtualbox, far partire la macchina e quindi installare il software addizionale per il sistema operativo guest (windows nel mio caso).
Un bel riavvio e si otterra il classico e comodo mouse integrato tra guest e host, video che si auto ridimensione in base alla finestra e prestazioni in filino migliorate (non molto). Per utilizzare la scheda di rete è necessario aggiornare manualmente il driver passando dalla gestione dell’hardware e selezionare tra quelli compatibili con hardware ovviamente quello di virtualbox.
Un altro riavvio e un controllo sulla buona funzionalità della rete evidenzia comunque che il collegamento virtuale è instaurato a 100Mbit e non a un 1Gbit (probabilmente nella maggior parte dei casi non c’è un impatto significativamente negativo ma in host con un buon hardware alle spalle la comunicazione host-guest potrebbe avvenire a velocità più basse di quanto teoricamente possibile).

A questo punto ci si rende conto come le operazioni di IO su disco siano di una lentezza disarmante e molto ma molto focalizzate sul processore. Come se ogni accelerazione hardware sia completamente inesistente.
Per disabilitare l’ IO APIC bisogna prima dire al sistema operativo guest che le cose cambiano, quindi cambiare la configurazione a mano nell’xml che rappresenta la configurazione di virtualbox, e quindi proteggerlo da scrittura … perche quando si abilita l’IO APIC su VBox pare essere per sempre, nel senso che ogni volta che ricaricate una configurazione con l’opzione disabilitata, questa viene riabilitata in automatico. Per i dettagli : http://ubuntuforums.org/showthread.php?t=1330484

Quindi cosa ne ho guadagnato ?
La libertà di aggiornare alla release successiva, una migliore integrazione della clipboard (su vmware linux fa schifo, funziona una volta su mille), e migliori tempi di congelamento delle VM.

Cosa ho perso ?
Prestazioni, nonostante tutto è ancora parcchio piu lenta … tipo un 50% di tempo in piu a parità di operazione mista IO e CPU Bound (esempio: compilazione) e possibilità di congelare le VM (è vero che è veloce ma se non può scrivere nel file di configurazione che esite una sospensione della macchina, al successivo utilizzo questa verrà ignorata)

Quindi ?
Probabilmente torno a vmware…

A quelli di Firefox

bisognerebbe far presente che, no, 1.1 giga di memoria per un browser con aperto 5 schede in nessun modo porteranno questo stesso a migliorare la sua diffusione.

E questo è solo un esempio di come il gigantismo stia uccidendo quello che è stato uno dei motori dell’innovazione (grazie all’aderenza agli standard e all’aver creato una concorrenza dove non c’era).

Bisognerebbe dirgli che possono e devono fare di meglio. Che la velocità di esecuzione di javascript va già benissimo cosi, inutile fare a gara di millisecondi con Chrome. Che degli skin “Persona” ce ne frega poco nulla. Ma invece bisognerebbe ricordargli va risolto una volta per tutte il memory leak che affligge la volpe rossa da tempo immemorabile, e che con la maggiore complessità degli attuali siti ha raggiunto livello da urlo. E che qualcuno vorrebbe poter tenere aperto gmail senza che venga resa impossibile la visione di un video con VLC.

O forse bisognerebbe solo dirgli “attenzione che passiamo tutti a Chrome/Opera”.

Da vista a kubuntu, senza perdere nulla

Ho deciso di formattare il portatile e di installarci la nuova release in versione azzurrina della celebre distribuzione linux. Il problema è che non voglio perdere nulla. Ne dati (e fin qui ci siamo), ne funzionalità (qua un pò meno).

La procedura che ho pensato è forse poco ortodossa, ma la garanzia è totale. Quello di cui abbiamo bisogno è un secondo pc con ottime capacita di archiviazione, VMWare converter, VMWare workstation, un Cd di Kubuntu x64 e un pò di tempo.

VMWare converter permette di virtualizzare un pc fisico. Il che è una gran cosa perche alla fine hai una assicurazione sia sui dati che sulle funzionalità. Si mette nella stessa rete il portatile e il computer con X tera-byte a disposizione. Si installa sulla vittima VMWare Converter (che tra l’altro è disponibile gratuitamente) e si virtualizza il primo pc sul disco del secondo, via rete. Tempo stimato un paio d’ore per 130 gigabyte da trasferire.

Continua a leggere

« Articoli meno recenti

© 2026 b0sh.net

Tema di Anders Noren — Su ↑