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
blog
https://stuff.interfree.ca/
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@clv1 @cachondo @Tamasg @jscholes @ZBennoui While the code is all cross-platform, and there's no reason it shouldn't work on Linux and mac, we're best to stick with Windows and NVDA exclusively until we get something we all love.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@jscholes @cachondo @Tamasg @ZBennoui Yup, agreed. And also, people have different preferences. So we can and do get contradictory feedback. Sometimes even from the same person LOL. On top of it all, most people don't have the vocabulary to talk about this stuff. Heck, I don't even have it; I'm not sure the words exist in English. Brighter? Rounder? What do I mean! Do I mean the same thing that you mean? Impossible to tell.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@Tamasg @cachondo @jscholes @ZBennoui Yup. This all comes back to that problem of so many systems all needing tuning. I do think it would really help us to just focus on a single one. IE get this voice sounding correct with pure "aaaaaaaa" and "eeeeee" tones. No words, no pitch or intonation, nothing. Then hook that up to the rest of the systems. Then see where we land and tackle the next thing. Because thinking about the phonemizer and the IPA rules and the intonation system all at once is burning us out and distracting us from finishing the thing we have the most control over: IE the klatt synthesizer and the wave generator. Those are ours, entirely and completely. The other things are not, so those problems are harder.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@cachondo @Tamasg @jscholes @ZBennoui We also lack tools as blind people. For example, I wish I could visually examine the shape and spectrogram of sounds. A useful step here would be to get eloquence to generate a pure, single-note open "aaa" or "eee" tone, and understand the shape of the resulting sound wave. But there are just no accessible tools to do that. So instead we have to go by listening and guess work.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@jscholes @cachondo @Tamasg @ZBennoui The other thing that makes this super, super hard is that there are like nine different systems, and all of them need tuning. And it's impossible to ask people who haven't spent pretty much four days straight thinking exclusively about this for feedback on a particular system, because they all work together to make up the voice, and you can't know where any given issue comes from. There's the rules for going from text to IPA phonemes. Then the rules for determining the way IPA phonemes are actually voiced and fit together. And then there's the intonation table. And then there's the two systems that actually make the sound. Right now I'm mostly looking at the system that actually makes the sound, IE when you do "aaaaaaaaaaaaa" or "eeeeeeeeeeeeeeeee", because that's still not right. But because it's an entire voice, it's even hard for me to separate my own perceptions and fix anything.

The important thing to remember is that eloquence began development in 1982, by a team of about a dozen researchers. It wasn't in the state we know it until around 2002. We have existing research to build on, but no funding and fewer people, and no PHD level speech researchers. So actually doing this, even with the help of AI, is a 20-30 year project before we get close to eloquence levels. Because we have something that "works" and improves step by step, it's easy to lose sight of the size of the problem we're taking on, because it feels like we should be able to get there in a month or two. But that's not realistic.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@ginsenshi @Tamasg @ZBennoui Hmmm a bit, yeah.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@MariahL @cachondo @Tamasg @jscholes @ZBennoui I hear where you're coming from. It needs to be...rounder or wider or more relaxed or something. But I'm at the point where every change I make causes it to sound worse or introduces strange new issues.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@Tamasg @cachondo @jscholes @ZBennoui Aww. This is a super hard problem. Especially because nobody can articulate what they want, we all just know when it's wrong.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@Tamasg @cachondo @ZBennoui Yup. And I find I have to swap back to eloquence frequently, or else I lose my way completely, and everything starts to sound fine to me.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@jscholes @cachondo @Tamasg @ZBennoui So some of the issues you're identifying have to do with the espeak phonemizer, and the way phonemes are tuned. We have a lot of work to do there, too. But I feel like if we can get the sound of the voice correct, that will be a lot easier. For example, compare speech player and eloquence saying "eeeeeeeeee". Side by side, it's clear something is still not right with speech player. It needs to be...rounder and brighter? And...those are not useful terms because I'm still struggling to define exactly what I mean by them haha.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@ZBennoui @Tamasg Can you articulate what you dislike about it? I'm still not a fan the way I am of eloquence, but it's getting harder and harder for me to define why, so we can actually fix it.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@FastSM Loving the client. Works perfectly with iceshrimp as my server.
👍1
0
0
2
1
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
On one hand, I absolutely love and adore pull requests. On the other hand, they make me realize just how bad I am at pretending to be a developer. Anyway, if you use 2026, here's another release of unspoken-ng that fixes Firefox errors while also making everything better because I am apparently incapable of correctly thinking through the effect of threads. You should upgrade ASAP if you use this addon: github.com/fastfinge/unspoken-ng/releases/tag/v1.0.4
1
8
4
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 I wish it would. Unfortunately, that code is what we use to keep Eloquence alive in the 64-bit NVDA version. So it's awful, for dozens of reasons. This...is a bit clearer? Maybe? Anyway, it's the canonical example of how NVDA officially wants to interact with a text to speech system, written by the NVDA developers themselves. Any text to speech system useful for screen reader users needs to expose everything required for someone to write code like this. Not saying you could or should; there are dozens of blind folks who can do the job of integrating any text to speech system with all of the various API's on all the screen readers and platforms. But we have to have useful hooks to do it. github.com/nvaccess/nvda/blob/master/source/synthDrivers/espeak.py
0
0
1
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 When it comes to requirements, in general, if it can work with both the SAPI5 and NVDA addons API, it will suit the requirements of speech dispatcher on Linux and the mac API's. The important thing is that most screen readers want to register indexes and callbacks. So, for example, if I press a key to stop the screen reader speaking, it needs to know exactly where the text to speech system stopped so that it can put the cursor in the right place. It also wants to know what the tts system is reading so it can decide when to advance the cursor, get new text from the application to send for speaking, etc. I really really really wish I had a better example of how that works in NVDA than this: github.com/fastfinge/eloquence_64/blob/master/eloquence.py
1
0
1
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 Absolutely yes to all of the above. I can think of another 10 people on Mastodon at minimum who are also ready and willing to help where ever they can. Just none of us with the skillset to do the actual work.
1
1
2
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 Sadly, this is so far outside of my expertise and abilities it's not even funny. I have an excellent handle on what's needed, and the vague shape of the path forward, but actually doing any of it is way outside of my skillset. If it was anywhere near something I could do, I would have started already. :-)
1
0
1
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 Also, if you enjoy comparing modern AI efforts with older rule-based text to speech systems, and listening to the AI fail hard, this text is wonderful for that. As far as I'm aware not a single text to speech system, right up to the modern day, can read this one hundred percent correctly. github.com/mym-br/gnuspeech_sa/blob/master/the_chaos.txt

But eloquence gets the closest, gnuspeech second, espeak third, dectalk fourth, and every AI system I've tried a distant last.
2
2
3
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 If you're going to reimplement something, you might be better to go with gnuspeech, as it's known to be in the GPL. At the least, it gives you a vocal model to improve on, that was coded with open research in mind, rather than proprietary code probably written for job security.
0
0
1
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
9mo
@hosford42 I also have no idea about any associated IP or patents, though. Wouldn't whoever does it need to be able to prove they never saw the original code, just its outputs? Otherwise you're still infringing, aren't you? In this regard, it's probably actually a bad thing that the dectalk sourcecode is so widely available.

And most of the commits seem to be about just getting it to compile on modern systems with modern toolchains. I dread to think how unsafe closed-source C code written in 1998 is.
1
0
1
0