(Also, I know it's besides the point but this might be the most painful way to connect to Wifi physically possible. "Make normal everyday tasks slow, tedious and painful" is a bit of an odd choice for a product demo.)
Say, speaking of Sam, what were the memory requirements for SAM (Software Automatic Mouth) on C64. I guess they were not more than 64K? Although, the bulk here is probably for the speech recognition, not the TTS. (And this one does sound a little nicer :)
Browser demo of a reversed SAM:
According to [1], the weight of a modern runnable version is around 39k.
The ratio of how good it sounds compared to how much computing power it uses is ridiculous. The C64 has ballpark 3 orders of magnitude less CPU throughput as an RP2350, and the codebase uses an impressive array of tricks to do actual formant synthesis (barely) and a pretty refined form of Elovitz text to phoneme conversion. One of my favorite tricks is its up and down bouncy pitch, which is not random, but based on the opposite contour as the first formant. It's simplistic but enough to make it not sound like a robotic monotone.
I've been playing around with this some myself and SAM is an inspiration, along with other landmark systems like MITalk (predecessor to DECtalk), SP0256, and other. I believe it's possible to use modern techniques to get pretty good sounding speech in, say, 64k and 10% of the throughput of a RP2350. It's really cool to see projects like OP, especially under permissive license.
[1] https://blog.trulm.com/posts/speech-as-independent-parts/
I think my small Talon models are next, around 3% lsc clean at ~28M (greedy CTC decoding, no external encoder, no LM, not trained in a domain specific way). I reached around 6.5% at 10M.
I've been working on some new baselines I want to release soon as public artifacts. This article is inspiring me to try pushing the param size down a bit. I suspect we can do large vocabulary end to end in the <5M range.
Fishing for anecdotes here, does anyone have any good tts/stt experiences?
Running speech recognition and TTS locally is quite feasible, as projects like this one show.
ouch - this is ironic in an extreme, given Apple's OS layers and anti-GPL efforts
next, personal computers that come with a secret OS that can read all RAM by remote command?
Edit: never mind, I see you already suggested the Shokz OpenComm2 in another comment. Thanks!
But there are countless projects I work on this way. Eg, I got an email from person X, it says it encountered a bug when doing x and y. Codex reads the email (using nvidia/gliner-PII to hide PII data) and investigates the reason for the bug and proposes a solution. I ask it to implement the fix on my dev server and increase test coverage. I enjoy my walk and after say 7 minutes get a an overview of the fix and can decide to deploy to production.
https://etsc.eu/tiny-proportion-of-drivers-understand-danger...
Seems like an overreaction.
All the studies show it's not an over-reaction, you're 400% more likely to have an accident. It is extremely dangerous and it's not an over-reaction, the more people do this, the more people die. It's simple maths. If you're doing extended programming sessions, you're not paying attention to the road like you should be.
And no, talking to a passenger is not as dangerous as it's a different cognitive load.
It'll take you 20 seconds to google this, please do and stop putting everyone else in jeopardy.
I would die In minutes
[1] hex https://github.com/kitlangton/Hex
I used to use Handy but as of a few months ago it had stuttering and other issues so I switched to Hex. Even for relatively long minute long dictation, transcription is near instant and accuracy is more than sufficient, especially when talking to AI since it that can “read between the lines “.
Using voice with code agents is a huge unlock and I’m surprised to see some people I recommend it to, still resist it.
As for TTS I found it fun to make a voice plugin for Claude Code that uses PocketTTS, so it can give brief updates whenever it finishes a turn:
https://pchalasani.github.io/claude-code-tools/plugins-detai...
(this inspired some more demo-y stuff I have where claude can manipulate the mouse and audit things it's built visually in conjunction with that). I'm sure this has already been wrapped up into some MCP framework, but it was fun to build it super early on and it just sort of works for me.
I don't use this in my day job, but it does feel very futuristic when I pull up my home lab.
I built this myself with whisper -> “secretary” prompt -> Claude Code, but having the first two steps be interactive is really what I would want.
I acknowledge this may just mean I haven't tried enough modern voice recognition systems. But I've used Whisper and I don't think it works nearly as well for real-time speech.
(I still don't tend to use voice mode in Claude Code because I find typing more comfortable.)
I started ottex half a year ago after I tested gemini 2.5 flash native audio support. I was blown away by the quality of transcripts and decided to built an app to use it myself.
Currently the default model in the app is Gemini 3 flash, but you can connect to 9 providers and God knows how many models to play with.
I would suggest you to try this models for ai prompting:
- Gemini 3 / 3.5 flash - Soniox rtt v5 - Mistral transcribe v2 - assembly 3.5 pro
I intend to use it to work on low stakes vibe coding projects while I'm doing other stuff. Todays LLMs are a lot better at interpreting rambling dictation with mid-message corrections.
There are a few paid programs out there that do the same, but they made my vibe slop sense tingle and are not aimed at development.
However, being able to interact with these natural language systems in uncontrolled settings is still a fools errand. For STT, there is also regional dialect, slang, and individual differences.
Witnessing blind users hit unrecognizable reading-speeds on old Gordon 8 TTS systems was surprising. I learned people adapt to imperfect systems pretty quickly. =3
I’ve worked in this space. TTS in a small footprint isn’t the hard part —- it’s doing it accurately that’s hard.
Although for the use cases OP is targeting, lower accuracy may be good enough!
This actually holds for everything in AI.
https://github.com/moonshine-ai/moonshine#when-should-you-ch...
Flite for comparison: https://github.com/festvox/flite
uv init
uv add moonshine-voice
uv run moonshine-voice mic --language en
super nice to be able to run it to test it like thisgood job on a clear readme.md tbh
Couldn’t find a link, is that hard to do?
One gotcha if anyone wants this in a Chrome extension: MV3 requires 'wasm-unsafe-eval' in the CSP for any wasm at all, which surprised me the first time a build that worked fine as a web page died silently as an extension.
TTS (neural diphone synth @ 16 kHz) ~1.8 MiB voice pack
This is in the realm of Microsoft Sam.
The project credits does mention espeak (which is formant based) as well as various other TTS projects, although it sounds like they are only using the pronunciation part of espeak, not the voice synthesis.
Having it run on a pico would be pretty impressive =3
Yes, although relative to the DECTalk DTC01, a Pi Pico is a beast !
Pico : dual core ARM @ 133 MHz, 2MB flash, 264K RAM
DECTalk: 68000 @ 10 MHz + TMS 32010 @ 20 MHz (5 MIPS), 256K ROM, 64K RAM
If I get time, I would like to try compiling it to WASM. This would allow me to swap my robot poet’s native browser voice synthesis for it. Not sure if it is worth it, but it will be fun to play around with.
Edit: typo
air a
bat b
cap c
drum d
each e
fine f
gust g
harp h
sit i
jury j
crunch k
look l
made m
near n
odd o
pit p
quench q
red r
sun s
trap t
urge u
vest v
whale w
plex x
yank y
zip zPlayed by the great Richard Kind, who my wife swears she saw on the Highline in NYC.