I've been working in #Pitxu these days.

- I left behind the Infinite-loop approach to a Callback-based one triggered by VAD, reducing about a 40% of the load and imilar battery life improvement.

- Added a Long Term Memory system, so that I can reduce the amount of context in use per session relaying on an external support, making it faster and cheaper.

- I've switched #Vosk for #Whisper in the Speech-To-Text step, that brings an incredible improvement on the transcription, which at its turn improves the overall user experience.

- I switched from Gemini 2.5 Flash to Gemini 3.1 Flash-Lite, which improves quality but also penalizes reaction speed.

- I delegated some background work into a new Support process that takes it out from the main (user experience) thread.

- I corrected numerous visualization bugs that improves the user-Pitxu interaction.

All in all, I just had a long conversation with Pitxu, and has been by far the best demo I ever had in year and a half.

This is a self-tap-on-the-shoulder post, thank you for your attention 🙂

Avui és l'últim dia que passo a Talamanca. Volo avui a la meva (freda) casa adoptiva.

He estat a casa dels papes dues setmanes ben bones. A dies sol, altres amb tota la familia al complert i altres només amb la petita. Hem celebrat 4 aniversaris, hem fet una bona calçotada familiar de les que es recorden, i els iaios han pogut gaudir de la neta, fent tot just 3 anys, tota xerraire i eixerida.

També contava amb la moto i va fallar l'alternador, volia ensenyar el #Pitxu a la familia i la Raspberry Pi va morir, i la petita anava esperant el seu aniversari i quan per fi arriba es fot de cap per les escales i acabem amb un braç trencat. I amb tot el que ha passat, no he vist a quasi ningú dels meus amics.

Han estat dues setmanes intenses. He guanyat pes, he recuperat el son, he netejat el cos amb menjar i vi de la terra, i torno a casa trist de deixar de viure com m'agrada.

Fins la propera, Catalunya.

Una setmana barallant-me amb el #Pitxu per millorar l'entrada d'àudio, per al final descobrir que el Mac amb el que programo no li agrada grabar en 16 knHz.

Estic intentant filtrar el so per tal de millorar l'àudio d'entrada, per a que la transcripció s'entengui millor i el chatbot et respongui el que toca.

... i els filtres no em funcionaven. Res. I em vaig liar a dibuixar gràfiques de so, espectrogrames, i tot de conversions matemàtiques, I fins que no vaig caure en guardar el so i escoltar-me, no em vaig adonar que el so d'entrada era horrible.

"Això sembla un error en la freqüència"... Així que vaig tornar a deixar la freqüència a 48 kHz que al Mac li agrada grabar i vinga, tot encaixa.

Així que ja torno altra cop a l'inici, a filtrar el so, i veure si puc fer que l'àudio d'entrada quedi net de soroll de fons.

... en Python, que ja té tela.

Diguem que estic a punt de marcar un bon milestone amb el projecte #Pitxu.

A falta del botó extern d'encesa, que encara no sé on posar, la cosa hauria d'acabar així.

Hi han "side quests" pendents, com mirar de fer funcionar el tàctil de la pantalla i tenir accions directes (com que calli quan entra en una explicació llarga fora de tema, o conectar a una wifi que no tingui predefinida)

El tema ventilació m'ha portat de cap, però sembla estable a 50°C.

Deixo aquí una demo ràpida. Perdoneu la diferència de volum entre els dos interlocutors, a casa estan tots dormint.

Marededéusinyó, 4 dies per fer que els ventiladors de la caixa del #Pitxu funcionin a diferents velocitats segons la temperatura, i en silenci.

He après molt aquesta dies. A nivell més de vida, aquest típic soroll d'aparell elèctric (el típic que ens fa canviar-lo per vell) és degut a que emet una freqüència audible, moltes vegades per error, com era el meu cas

Primer he conectat els ventiladors. Funcionen al 100%.
Després el pin de control. Tirar de llibreria GPIO per encendre'ls i apagar-los a certa temperatura.
Després aprendre d'Hysteresis, que és això de que ventili fins mes abaix del llindar per què no s'estigui encenent i apagant cada 5 segons.
Després convertir-lo a PWM, que permet variar la velocitat per que faci menys soroll.
Descobrir com funciona, i que a freqüències baixes el "zumbit" toca els ous. Massa.
Aprendre que s'ha d'usar una freqüència no-audible (~25kHz), i que la llibreria que uso explota a més de 10kHz, i el soroll no mola.
Resulta que totes les llibreries Python fan PWM per software, cal fer-ho per hardware.
La mare que va parir el Kernel de Linux, els overlays, i sa puta mare.

M'he fet un overlay jo mateix, ja tinc els canals que necessito, i ja puc moure els ventiladors a la freqüència que vull.

El #Pitxu ja respira en silenci, i prèn grans bocanades d'aire quan ho necessita.

Entre la millora del micro, el que estic cohent per canviar de #Vosk a #Whisper, i que el hardware aguanti com toca tota la infra, ja començo a tenir ganes de posar-me amb els models altra cop.

@techsimplified it is, completely! I find that having my hands free to do actions (and queries) is indeed a game changer. I'm just bumping my head to make the STT to work smooth.

This project in the pic is a satellite device from my main #Pitxu ongoing built, chaining STT > Chatbot > TTS. As a satellite, it just captures sound, sends it to the "server" and plays the answer. It is a #RaspberryPiZero2 so it can't really hold all the engines needed.

As per tooling, the whole pack uses:
- #Vosk (now tinkering with #Whisper)
- #Gemini (now tinkering with #Ollama offline)
- #Piper

But a big chunk of my brain goes to the UX hardware:
- screen for a more human interaction
- soundcard I/O (gosh RPi is not yet polished here)
- GPIO buttons, UPS, PWM fan cases,...

Provant el #Pitxu amb diferents combinacions de hardware m'ha portat a descobrir que m'agrada el format #RaspberryPiZero2 + UPS + #WhispayHat, que em dóna el més bàsic per tenir un mini-ordenador autònom amb so i pantalla (i un botó). És molt contingut i portable, se li pot fer una caixeta amb una impressora 3D (fàcil ) i pot quedar molt cuco.

Passa que no tira. Els models de STT i TTS s'encallen, i el Chatbot #Gemini ja el fregeix del tot. Ni l"overclock ni la swap han ajudat gaire.

Avui parlant amb el @miguelflorido ha sortit la idea d'aixecar uns endpoints al Pitxu, per que executi la transcripció #speechtotext i la resposta del #chatbot. Així, el que carrega més la màquina ho fa la RPi5 amb el #AIHat+2, i la RPiZ2W fa de simple client grabant àudio, reproduint la veu, i mostrant per pantalla. El reste ho envia per HTTP.

En un parell d'hores he tingut un #Flask en un thread escoltant peticions, i les proves amb el #Postman són molt bones a la Wifi de casa.

Em molaria molt tenir un #miniPitxu a la butxaca.

El #Pitxu està millorant molt. Aquestes últimes setmanes han estat la primera baralla seria amb el hardware.

Tot comença per un bon input. Si el micròfon o el dictat no funciona bé, ja pots tenir un chatbot de puta mare que la experiència d'usuari serà pèssima.

I el sabor de boca de les demos que he fet fins ara són totes d'experiència d'usuari. Lent i poc acurat per entendre't. Si t'adaptes tu, llavors alucines, però no és natural.

Estic estirant l'entrar a sac al tema dels models offline per millorar el tema input abans. I no serà per ganes de fotre-li mà al #RaspberryPiAiHat+2 que tinc ja endollat.

Ostia puta l'ALSA, el PulseAudio, el PortAudio, i la mare que els va parir a tots.

Una puta setmana per entendre i posar pau al sistema de so al #Pitxu.

Al final, enviant a la merda el PulseAudio, deixar el sistema només amb ALSA, i que el Python circuli per PortAudio.

I com a bonus, fixar els índexs de les Targes de So per què el ALSA no em trolegi a cada reinici del sistema.

Ostia ja!

L'altre dia, fent una mica d'espeleologia cibernètica, vaig trobar un paio que havia fet quelcom similar al #Pitxu en un format més petit.

Feia servir un #PiSugar #Whisplay HAT en una #RaspberryPi5 i una imatge que ells mateixos distribueixen: baixar, cremar en una SD i au, i funcionava prou bé.

M'he adonat que fa uns mesos jo també vaig comprar un Whisplay HAT per un altre projecte, i ara en un calaix. Vaig muntar-lo sobre una altra RPi 5 que tinc per aquí, clonar el codi del Pitxu, anular tot el que no tinc (e-ink i Matriu de LEDs) i a probar...

Marededéusinyó, ara tinc 2 Pitxus... Aquest petit necessita que li programi la pantalla, que només parla i escolta, però funciona!!!!