Proudly debugging the system since 1981

Tag: debugging (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.

Audio To Text in closed testing su Google Play

Con la versione 0.6.3 di Audio To Text (ex phone-whisper) è partita la fase di closed testing su Google Play. È il passaggio successivo dopo il rebrand e la rimozione delle funzionalità cloud raccontati nel post precedente.

Cos’è il closed testing

Google Play richiede una fase di test con un gruppo ristretto di utenti prima di poter aprire l’app al pubblico. È un passaggio utile anche a prescindere dall’obbligo: permette di verificare il funzionamento su dispositivi e versioni di Android diverse dalla mia, cosa che da solo non riesco a coprire.

L’app è visibile alla pagina Google Play di Audio To Text, ma per installarla in questa fase è necessario essere inseriti nella lista dei tester.

Come partecipare

Chi vuole provarla lo può fare iscrivendosi al gruppo dei tester su google group: https://groups.google.com/g/testers-community/ . Il gruppo è ad accesso libero e non manda nessuna mail. Non serve nessuna competenza particolare, solo un dispositivo Android e la disponibilità a segnalare eventuali problemi — crash, modelli che non si scaricano correttamente, traduzioni imprecise o altro.

Cosa trovare nell’app

La versione in test corrisponde a quella descritta nel post precedente: trascrizione locale con modelli sherpa-onnx, nessuna dipendenza cloud, interfaccia in italiano o inglese in base alla lingua del dispositivo.

Changelog

v0.6.3 (2026-08-27)

Da phone-whisper a Audio To Text: rebrand, local-only e UI più chiara

C’è stato un cambiamento importante: nasce Audio To Text

Ad aprile avevo raccontato la nascita di phone-whisper, l’app Android per trascrivere audio offline sul dispositivo usando sherpa-onnx (potete rileggere il post originale). Da allora il progetto è cresciuto, e con la versione 0.6.1 arriva un cambiamento che va oltre il semplice numero di release: l’app cambia nome e diventa Audio To Text.

Cosa cambia davvero

Il progetto nasceva già con un forte focus sulla privacy, ma manteneva un’integrazione opzionale con OpenAI per la trascrizione cloud e il post-processing del testo. Con la 0.6.0 questa parte è stata rimossa completamente: niente più chiamate cloud, niente API key da gestire, nessun dato che lascia il telefono. L’app oggi funziona esclusivamente con i modelli sherpa-onnx scaricati e installati in locale, il che significa anche una base di codice più semplice da mantenere — sono stati eliminati interi componenti come TranscriberClient, PostProcessor e WavWriter, insieme ai relativi test.

Questa scelta ha richiesto anche una riscrittura della privacy policy, per rimuovere ogni riferimento alla gestione delle chiavi API e alle modalità cloud che non esistono più.

Il rebrand: da phone-whisper a Audio To Text

Il nome phone-whisper aveva senso quando il progetto era ancora legato all’idea di Whisper e a un’integrazione cloud. Ora che l’app è diventata a tutti gli effetti uno strumento locale, ho deciso di rinominarla Audio To Text, un nome più diretto e descrittivo di quello che fa realmente. Il cambiamento non è solo estetico: il package dei sorgenti è stato spostato da com.kafkasl.phonewhisper a net.b0sh.audiotext, con la cronologia Git preservata grazie a un git mv mirato invece di una semplice riscrittura dei file.

Miglioramenti all’esperienza utente

Con la 0.6.0 e la 0.6.1 ho lavorato molto anche su come l’app comunica il proprio stato all’utente:

  • Durante l’installazione di un modello, ora viene mostrato il progresso di estrazione con numero di file completati e file corrente in lavorazione, così sai esattamente a che punto è il processo.
  • È stata aggiunta una sezione informativa sullo stato del modello nella schermata principale, per capire a colpo d’occhio se un modello è installato, pronto o ancora da scaricare.
  • Con la 0.6.1 arriva il supporto multilingua dell’interfaccia: l’app segue automaticamente la lingua del dispositivo tra inglese e italiano. Nome dell’app e nomi dei modelli restano invariati, per evitare ambiguità.

Perché questo cambiamento

L’obiettivo originale di phone-whisper era offrire una trascrizione privata e locale, ma la presenza di un’opzione cloud era in qualche modo in contrasto con quella filosofia. Rimuoverla non è stata solo una semplificazione tecnica: è stata anche una scelta di coerenza. Audio To Text è oggi un’app che fa una cosa sola, la fa completamente offline, e non ha bisogno di chiedere permessi di rete o gestire credenziali di terzi.

Changelog completo

v0.6.1 (2026-08-25)

  • Interfaccia multilingua: supporto inglese e italiano, in base alla lingua del dispositivo. Nome app e nomi modelli non tradotti.
  • Aggiornamento versione: 0.6.0 → 0.6.1 (versionCode 8).

v0.6.0 (2026-08-25)

  • Rimossa l’integrazione OpenAI: eliminate trascrizione cloud e post-processing. L’app supporta ora solo la trascrizione locale con modelli sherpa-onnx scaricati.
  • Rebrand: l’app è stata rinominata Audio To Text, package spostato in net.b0sh.audiotext.
  • Aggiornamento versione: 0.5.0 → 0.6.0 (versionCode 7).

Link utili

Audio To Text resta un progetto piccolo, ma ora è coerente al 100% con la sua promessa iniziale: nessun dato lascia il tuo telefono, mai.

Da Plex a Jellyfin

Plex tra un po’ ( 29 Aprile 2025 ) cambia alcuni prezzi.

Info qua

Quello che interessa a me e’ che fino ad oggi era possibile fare streaming dei propri media, siano essi foto, musica o video, anche fuori dalla rete locale, sulle app o via web senza pagare un abbonamento. Bastava aprire un paio di porte sul proprio router e il cloud di Plex faceva la magia. L’unico costo era per la sola app per smartphone e si trattava di un costo singolo per avere lo streaming dei media fuori dalla rete locale.

Ora invece per poter fare streaming fuori dalla propria rete bisogna pagare un abbonamento. E per ascoltare o vedere le MIE cose mi sembra un po’ un’assurdità.

L’alternativa che ho trovato, e parzialmente sperimentato e’Jellyfin. Che e’ completamente open source e non dovrebbe iniziare a monetizzare sui suoi utenti solo perché qualche stratega aziendale dice che e’ il modo giusto di fare.

Che poi va anche bene far pagare un servizio, ma nel caso di Plex si tratta di poco più un dynamic dns venduto a 2 dollari al mese.

Ritornando a JellyFin si installa facilmente su Raspberry PI ma per avere i propri media accessibili ovunque la faccenda e’ un po’ più complicata non avendo un cloud a supporto.

Prima cosa bisogna individuare un servizio di DNS dinamico, dando per scontato che la maggior parte degli utilizzatori domestici non ha un IP statico e che quindi ad ogni riavvio del router questo cambia.

FREEDNS.afraid.org ha una interfaccia orribile anni 90, ma funziona con un semplice script curl pianificabile nella crontab del Raspberry.

E questo punto esponendo le porte di Jellyfin sul router (8096 e 8920) siamo quasi a posto.

Rimane qualche raccomandazione, essendo esposti su internet settiamo una password bella complicata e NON utilizziamo la connessione in http per farla passare o qualcuno potrebbe intercettarla.

E qua iniziano i problemi un po’ piu’ complicati. Jellyfin espone un servizio https sulla 8920 ma non ha un certificato e non e’ integrato con LetsEncrypt per l’aggiornamento automatico.

La soluzione che ho adottato io e’ di generare un certificato selfsigned di durata molto lunga, di creare un sottodominio sul mio VPS, agganciare questo al rinnovo automatico di LetsEncrypt e di fare reverse proxy verso Jellyfin. In questo modo i client si trovano un certificato firmato e valido, mentre tra i due server (VPS e Jellyfin) la comunicazione e’ comunque protetta da crittografia e in internet non passano password in chiaro.

Per far digerire ad Apache2 un certificato selfsigned solo per il virtualhost dedicato a Jellyfin ho inserito le direttive:

SSLProxyVerify none
SSLProxyCheckPeerName off
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off

Il tutto fa un giro un po strano, mi consuma la banda del VPS (che pero’ tanto non pago a consumo), ha una difficoltà tecnica che non e’ proprio per tutti pero’ funziona.

Please Don’t Learn to Code Unless… – DZone Agile

“Focusing On Coding Inflates the Importance of Finding the “Right” Method to Solve a Problem Rather Than the Importance of Understanding the Problem. Before we start working on a solution to a coding problem we have to decide what the problem is–if we even have one to begin with. If we let ourselves become fixated on how to solve a problem via code–regardless of if it is a programming problem or not–and lose sight of why, we gain nothing.”

Che è più o meno:

Concentrarsi  sulla programmazione porta a concentrarsi sulla ricerca del modo “giusto” di risolvere un problema invece che concentrarsi l’importanza di capire il problema stesso.

Prima di iniziare a programmare dobbiamo capire il problema e se veramente esiste. Se ci fissiamo su come risolvere un problema con la programmazione, senza considerare se questo è un problema di programmazione o meno, e dimentichiamo il perché lo stiamo risolvendo, non guadagniamo nulla.

https://dzone.com/articles/please-dont-learn-to-code-unless

Nuovo superbollo

Era un post su faccialibro, ma forse vale la pena condividerlo al di fuori del social network. E’ la lamentazione di pochi, che verrà letta da ancora meno. Ma forse, prima o poi, si uscirà dal luogo comune che associa auto potenti a ricchezza e quindi a maggiore contribuzione. Credo che una indicizzazione di eventuali tasse sul valore reale, o sul consumo di carburante, sia decisamente più equa rispetto ai soli chilowatt.

Gli appassionati di auto non sono super-ricchi. Non abbiamo particolari colpe. Non siamo un costo sociale, come chi causa incidenti a catena perchè guida impasticcato. Non causiamo violenza, come i tifosi di altri sport. Inquiniamo meno di tanti altri perchè usiamo l’auto come strumento di divertimento e non per fare i pendolari. Abbiamo sempre pagato tutte le tasse, e come ricompensa ne riceviamo sempre di nuove, perchè sanno che pagheremo anche quelle.
Fino a quando? Fino all’estinzione della specie? Abbiate il coraggio di dirlo apertamente.

Gruppo su facebook

Per arricchire la statistica

Ho fatto il test del nytimes, dopo aver letto il post su Il Post.

Pare che la mia abilità di filtrare distrazioni sia buona. Nonostate il mio odio verso le distrazioni e il mio sentirmi particolarmente vulnerabile ad esse. Probabilmente c’è di peggio.

Quanto al multitasking soffro un pò di context switching ma tuttosommato i risultati non sono male. Anche se questo secondo test mi ha richiesto decisamente maggiore concentrazione. Forse perche io associo pari a vocale mentre nel test un solo pulsante descriveva sia vocale che dispari mentre l’altro stava per consonante e pari.

In definitiva comunque pare che io non sia un multitasker. Anche se IMHO le performance personali possono essere molto influenzate dalla condizione mentale del momento. Ovvero la mattina potrei essere ancora meno multitasker (o con più capacità di concentrazione…) di quanto sono alle 20:51 di sera.
E questo sembra voler dire che non ho riprogrammato il mio cervello per gestire più stimoli contemporaneamente (e di gerstirli tutti male IMHO), come qualcuno sospetta che stia avvenendo in una parte della popolazione sovraesposta alla rete e alla multimedialità. Nonostante la mia indiscutibile sovraesposizione alla rete.

Comunque se è vero che si allena il multitasking è vero anche che si allena la capacità di concentrazione, e che non sono due cose in contrapposizione. Esistono situazioni in cui è richiesta capacità di focalizzazione  e situazioni dove è premiante il multitasking, mentre in questi test il multitasking è trattato come il “prodotto di scarto” della condizione di non avere capacità di concentrazione. Che con tutto il rispetto per i ricercatori di Stanford, mi pare una semplificazione non trascurabile.

Petrolio a Milano

La notizia è drammatica, una considerevole quantita di gasolio è stata riversata nel Lambro. Ma quello che mi ha stupito è il solito pressapochismo giornalistico italiano. Quanto petrolio/gasolio (ancora non si è capito) è finito in questo sfortunato fiume:

  • 15 mila litri ( 15 metri cubi ) segnalti qua
  • 600 mila litri ( 600 metri cubi )  segnalati qua , qua , qua
  • 1 milione di litri ( 1000 metri cubi ) segnalati qua
  • 2,5 milioni di litri ( 2500 metri cubi ) segnalati qua
  • 15 milioni di litri  ( 15 mila metri cubi ) segnalati qua
  • 10 milioni di litri ( 10 mila metri cubi ) segnalati qua , qua

Senza nessuna pretesa di completezza … ma quando dalla cifra più bassa quella più alta passano 3 ( dicasi TRE ) ordini di grandezza mi sà che c’è qualcosa che non và.  Nella professionalità di chi dà le notizie.

P.S. : La cifra ultima citata dalla maggior parte degli articolisti è quella dei 10 mila metri cubi, o poco più di 60 mila barili. Un quarto della famigerata Exxon Valdez. “Diluita” in un fiumiciattolo, invece che nel mare.

UPDATE 15 Aprile 2010 :

I litri sono diventati 2600 qui,  portando la differenza tra la quantita minima e la quantita massima a ben 4 ordini di grandezza, comunque interessanti le ipotesi sul perchè ci fosse (in una quantita grande a piacere) dei derivati del petrolio in quella raffineria. Qualcuno vuole ancora difendere il giornalismo ?

« Articoli meno recenti

© 2026 b0sh.net

Tema di Anders Noren — Su ↑