User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
Admin
completely blind computer geek, lover of science fiction and fantasy (especially LitRPG). I work in accessibility, but my opinions are my own, not that of my employer. Fandoms: Harry Potter, Discworld, My Little Pony: Friendship is Magic, Buffy, Dead Like Me, Glee, and I'll read fanfic of pretty much anything that crosses over with one of those.
keyoxide: aspe:keyoxide.org:PFAQDLXSBNO7MZRNPUMWWKQ7TQ
Location
Ottawa
Birthday
1987-12-20
Pronouns
he/him (EN)
xmpp fastfinge@im.interfree.ca
keyoxide aspe:keyoxide.org:PFAQDLXSBNO7MZRNPUMWWKQ7TQ
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@luiscarlosgonzalez @mush42 @Tamasg @ZBennoui Right but Sherpa onnx might replace that. Or the various Microsoft AI providers. We don’t need to care about cross platform for NVDA. And so few people in this community have the expertise to write our own inference framework, I feel strongly that we really need to use something off the shelf. Otherwise, history will repeat itself, and the person working on the framework will get a job or otherwise be forced to drop the project. I can only think of four blind people who even know rust. And I’m not one of them.And the others all have full time jobs.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@luiscarlosgonzalez @mush42 @Tamasg @ZBennoui But if we make a general framework, aren’t we just inventing sapi again? That’s why I wanted to start by trying to make individual addons. But now that I tried and learned a lot doing so, it’s clear the disadvantages make it unsustainable. Including all of torch in an NVDA addon is a bad idea, it turns out.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@J3317 Nope. It works in every client but tweesecake because tweesecake is a buggy mess.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Today I learned why Sonata created a framework to run AI voices outside of . First, NVDA doesn't come with all of the standard libraries. Second, there's no good way of updating dependencies in a bundled addon. Third, NVDA really, really hates it if you include several hundred dependencies in your addon. Anyway, here's kitten TTS, the other synthesizer I wanted to try with NVDA. Unfortunately, the model doesn't support streaming output, so even though it's actually faster than Supertonic, it feels slower when used with NVDA. Also, it takes several minutes to install, makes NVDA startup 30 seconds slower, and freezes the change synthesizer dialogue for about 45 seconds when you open it. It does miss words less frequently, though, and pronounces text better. The ultimate result of my two-day investigation is that even the highly optimized open-source AI imbedded models are not yet ready for screen reader use. Some tree-shaking could fix some of these issues, but it still won't allow for streaming, so it's not worth it. I'd really like to know what Microsoft and Narrator are doing to get the natural voices so snappy. github.com/fastfinge/kittentts-nvda/
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@McOi Are you running the latest NVDA alpha? 64 bit NVDA is required.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
It’s in alpha.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@amir I think these are problems with supertonic itself. So I don’t know if I can fix them. I experience the same issues on the official Android app.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@amir It's out. Unfortunately, while they sound really good, they sometimes skip words. Not okay for a screen reader haha.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Okay! If you're running 64-bit , and you want to play with a new engine that sort of works most of the time, here's the first release. The engine only supports English. github.com/fastfinge/supertonic-nvda/releases/tag/v1
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@tspivey Oh! Why? Doesn't it...oh, never mind. That works perfectly, now. I really, really wish I actually had any talent at this. Writing NVDA addons always makes me feel like a cargo cult programmer.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@tspivey That's much better. synthesizing now has its own thread. And audio ducking works. Unfortunately, say all still doesn't. I just don't understand how or why indexes work. Neither does Gemini. So I'm stuck.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@tspivey Apparently yes. I thought it didn’t.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@amir The developer of the tts has samples: github.com/DevGitPit/supertonic
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Did some work on a new high quality engine for 2026. Unfortunately, I can’t get indexing to work. Even with AI. Help? Someone? It builds with scons. GitHub - fastfinge/supertonic-nvda: supertonic for nvda github.com/fastfinge/supertonic-nvda
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Good grief I wish someone would create a way to do a mass migration from to . Lemmy is by far the most annoying software I have the displeasure of maintaining. In today's adventures, the Lemmy developers finally created a index in 0.19.15 that I'd created myself ages ago for performance reasons. But the database migration fails if the index already exists. Even if it's the exact index it wants to create, created exactly the way the migration is doing it. And no, you can't skip a database migration, and no, it's not smart enough to check and skip the migration by itself. So you have to log into the database and drop index idx_post_aggregates_creator, and let Lemmy recreate it. Yes, this takes a while, for absolutely no reason. And if you wanted to do it without downtime in an offline copy of the database, I guess you'd have to do a bunch of fiddling to trick Lemmy into thinking the migration happened when you went to upgrade production. There had to be a better way to do that! But it's not documented and I have no idea what it would be.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@luiscarlosgonzalez @Tamasg @mush42 @ZBennoui If you want to do that with gemini-cli, make sure to give it access to a directory with the NVDA Addon developer guide, the API documentation for the synth you’re coding, and tell it where the NVDA repository is. The prompt should include each file name, and what it is. Then Gemini can read the documentation without searching the web, and that will save you a lot of time and tokens. If you have any header files or other bindings, also give it those.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@luiscarlosgonzalez @Tamasg @mush42 @ZBennoui It’s already using rpc so a quick and dirty update would be easy. I just don’t use it myself, and as an amateur developer, I’m only comfortable maintaining code I personally use daily. Plus NVDA 2026 includes onx internally so we need to figure out how to access that.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
@patricus You're welcome!
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Protip: if you don't turn on your wireless keyboard, it won't work. This PSA brought to you by 20 minutes of debugging.
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
4mo
Fengshen Tale CONFERRED GODS: I felt bad about kind of trashing the last Chinese mobile game I played. So I looked around for something better. But did I find it? stuff.interfree.ca/2025/12/22/confered-gods.html