User avatar
Nick Giannak III @nick@hkc.social
3mo
Before I say anything, most of the credit for this here goes to @fastfinge and friends and their Eloquence64 project, which until today I considered the most complete, stable Eloquence. However, I had a bug that only I seemed to exhibit regarding unicode handling, and Sam and co weren't comfortable with my fix. understandable.

So here is Eloquence64 19.0-RS-RC1

github.com/Nick6489/Eloquence64RS/releases/download/v19.0-RS-RC1/Eloquence-v19.0-RS-RC1.nvda-addon
3
3
0
0
User avatar
Nick Giannak III @nick@hkc.social
3mo
While working on the fix and realizing I might be on my own, I found myself wondering what Eloquence might be like if we combined Sam's logic with the Rust host of davidacm/NVDA-IBMTTS-Driver, just without the IBM specific plumming? What we get is lower RAM usage and, maybe it's just my ears, lower keypress delay. We still, for now, have the need to copy an executable onto secure screens, there are no interface changes in this version. But we cut RAM usage in half.
1
2
0
0
User avatar
Nick Giannak III @nick@hkc.social
3mo
This is vibe coded, although I should hope it was done responsibly. If there are any issues, report them please. I am using this in production going forward and enjoying it. Again, thanks to all who have come before me, and I hope this is useful to someone besides me.
2
1
0
0
User avatar
Nick Giannak III @nick@hkc.social
3mo
Eloquence64RS 19.0-RS-RC2 is released, fixing a text processing bug by cherry picking a fix from the upstream @fastfinge branch - Thanks Andrew! involving the German sharp S (ẞ). We also made it so checking for updates now points to this repo.

Important. For now, any time you upgrade Eloquence64RS, copy the helper process to your administrator settings, especially if changing from Mainline Eloquence64.

github.com/Nick6489/Eloquence64RS/releases/download/v19.0-RS-RC2/Eloquence-v19.0-RS-RC2.nvda-addon
1
1
0
0
User avatar
Nick Giannak III @nick@hkc.social
2mo
Eloquence64RS 19.0-RS-RC3 has been pushed, adding a refactored text processor based on an innovative PR from the Fastfinge Eloquence64 upstream, Adds regression coverage for text encoding, pause policy, language scoping,
native-host protocol behavior, Say All progress, and secure-screen helper
detection, and warns you when your secure screen copy executable differs from the one we ship.

github.com/Nick6489/Eloquence64RS/releases/download/v19.0-RS-RC3/Eloquence-v19.0-RS-RC3.nvda-addon
3
2
0
0
User avatar
Nick Giannak III @nick@hkc.social
2mo
Eloquence64 19.0-RS has been released. This is considered production quality and establishes a stable branch. No new features, although it is going to ask you to copy your native host to secure screens again as we did rebuild it just to make sure the addon package matches the code:

github.com/Nick6489/Eloquence64RS/releases/download/v19.0-RS/Eloquence-v19.0-RS.nvda-addon
1
2
0
0
User avatar
Nick Giannak III @nick@hkc.social
2mo
Eloquence64RS 19.1-RS Beta 1 has been released. This beta introduces the optional Enhanced 22 kHz audio mode. The new mode is an original Rust DSP implementation with speech-presence shaping, stateful polyphase interpolation, and suppression of mirrored high-frequency energy. I need feedback, this sounds different from the hozosch implementation, and I personally don't use this mode. github.com/Nick6489/Eloquence64RS/releases/download/v19.1-RS-beta1.1/Eloquence-v19.1-RS-beta1.1.nvda-addon
5
3
0
0
User avatar
Nick Giannak III @nick@hkc.social
2mo
Eloquence64RS 19.1-RS Beta 2 has just been released. This beta refines the optional Enhanced 22 kHz audio mode in response to user
feedback. It adds a broad, subtle 0.4 dB vocal-body lift centred at 1.4 kHz,
restoring a little fullness while preserving the Rust implementation's
articulation and high-frequency image suppression. Thanks
@amir, @darrell73, @bscross32, and everyone else for your feedback. github.com/Nick6489/Eloquence64RS/releases/download/v19.1-RS-beta2/Eloquence-v19.1-RS-beta2.nvda-addon
5
5
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
I've released the stable Eloquence64RS 19.1! Given the 22 KHZ mode being well tested and stable according to its users, I've also had GPT sanitize the dictionary handling. Any previously downloaded dictionary is labeled as custom. However, instead of the mish mash we had before, you can now switch between default pronunciations, Community dictionary, and Alternative IBM TTS, without any issues.

github.com/Nick6489/Eloquence64RS/releases/download/v19.1-RS/Eloquence-v19.1-RS.nvda-addon
2
7
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
I've released Eloquence64RS 19.1.1. This hotfix squashes a dictionaries bug - Pronunciation dictionary selection now follows NVDA configuration profile
changes immediately. Switching profiles no longer leaves the dictionary from
the previously active profile loaded in the Eloquence Host Process.

Check update from Settings > Eloquence or download here:

github.com/Nick6489/Eloquence64RS/releases/download/v19.1.1-RS/Eloquence-v19.1.1-RS.nvda-addon
1
3
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
I've released Eloquence64RS 19.1.2. This release works around profile issues @lerven reported. Thanks man! It came to light while I was banging away that the profile issues were in core, but this addon should work properly even so, no monkey patching. Profile switching should carry over all settings and be stable. Check for updates within Settings > Eloquence, or grab it here: github.com/Nick6489/Eloquence64RS/releases/download/v19.1.2-RS/Eloquence-19.1.2-RS.nvda-addon
2
5
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
I've released Eloquence64RS 19.1.3. This release fixes a tiny edge case so a cancelled Speech Sequence cannot
start a new Speech Generation after Stop. Oddly, you might get a little responsiveness increase with this addon as we're not carrying around stale data anymore, but very much YMMV. Check for updates within Settings > Eloquence, or grab it here:

github.com/Nick6489/Eloquence64RS/releases/download/v19.1.3-RS/Eloquence-19.1.3-RS.nvda-addon
6
7
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
Urgent: Eloquence64RS 19.1.4 is released in stable channels including the updater. Please grab this one now as it is a hotfix for clean shutdown of the
32-bit Eloquence host when NVDA exits or switches synthesizers. It fixes this upstream bug (Thanks,
@fastfinge!)

github.com/fastfinge/eloquence_64/issues/141

Download now:
github.com/Nick6489/Eloquence64RS/releases/download/v19.1.4-RS/Eloquence-19.1.4-RS.nvda-addon
5
5
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
Testers also get this fix, 19.5 Beta 2.5 is out:

github.com/Nick6489/Eloquence64RS/releases/download/v19.5-RS-beta2.5/Eloquence-19.5-RS-beta2.5.nvda-addon
1
2
0
0
User avatar
Nick Giannak III @nick@hkc.social
1mo
Well, Eloquence 64RS 19.5 Beta 3 has been released, with a drasticly different 16 KHZ presence contour. @Leowyatt88 is the star of the show here, we just prooved out that you can draw up an EQ curve in Reaper, then reimplement that in Rust. This is a starting point, he is willing to do some more if we can come to a consensus on changes that should be made.

github.com/Nick6489/Eloquence64RS/releases/download/v19.5-RS-beta3/Eloquence-v19.5-RS-beta3.nvda-addon
4
3
0
0
User avatar
Nick Giannak III @nick@hkc.social
3d
Working on Eloquence 64RS nuts and bolts. Serious credit where it's due to @fastfinge for improving the keypress delay to the point where it bettered the RS addon, while still keeping sync with Unspoken - something my addon never did. I'm adopting that from upstream. Going to heavily test it before it goes beta, also figuring out what the fuck I'm doing about 16 KHZ presence curves. LOL.
5
0
0
0
User avatar
Nick Giannak III @nick@hkc.social
3d
I decided to jump early. Eloquence64RS 19.5 Beta 5 is out. In 11 KHZ mode, we've cherry picked @fastfinge's buffer improvements. We've also replaced the Presence contour checkbox with a Sound contour dropdown,
so you can choose the sound you prefer without losing your previous selection. Those who liked the 16 KHZ Presence contour from Beta 2 get it back, the current one is renamed Smooth. 11 KHZ Presence Contour remains unchanged.

github.com/Nick6489/Eloquence64RS/releases/download/v19.5-RS-beta5/Eloquence-v19.5-RS-beta5.nvda-addon
4
6
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@nick FYI openevv has a bunch of fixes that are on main, but not in a release yet. Latest main has working dictionary support, plus eciStop is fixed. Just in case you decide to add it. I do, though, think you should be thinking about how to get your resampling working with openevv. Because they get closer and closer every day. I'm in the process of switching my CI/CD process to build with the latest working code from openevv, so test builds will have the latest fixes from them shortly. Openevv is noticeably faster than the 32-bit host, and uses less memory, in every case. The primary remaining issue is some weird and annoying pauses in say all. But once that gets fixed, and all of the new features are in an official openevv release, I intend to switch openevv to be the default.
4
0
1
0

User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge Frankly, once you do that, resampling can become somebody else's problem.
1
0
1
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@nick Actually, openevv does have support for resampling themselves. Could you do me a huge favour and look into it? I'm not an audio guy; I refused to accept resampling into mwy upstream because not only do I not understand the code, but I hardly understand how resampling even works or what it's doing. So I don't know what the expectations are, or how it should sound, and I doubt I would notice if it's wrong or bad. Whereas you're an audio guy, so you're more able to tell me if the resampling support offered by openevv is good and we should use it, or if it's bad, or what's going on with it.
2
0
0
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge I'll give it a look in the next week, I think. We'll see what it actually does. The implementation that started this entire mess, I genuinely understand why you didn't want to implement that as it called a C resampler. What we'd have to do is figure out whether that's even possible to do in pure python.
0
0
0
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge The reason I bring that up is because that was less a resampler and more an equalization curve.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@nick It's more that...embarrassingly, I'm...not confident enough in the difference between those two things you mentioned to explain them in my own words. I'm really, really not an audio guy. And I wasn't willing to accept things I don't completely understand both how they work, and what they're for.
1
0
0
0
User avatar
Sean Randall @cachondo@defcon.social
2d
@fastfinge @nick does openevv not support the lack of phrase prediction? right from 2010 when I started generating eloquence as audio, I opened each audio file with da0 pp0 (no dictionaries, no phrase prediction), or so I thought.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick It does not.
1
0
0
0
User avatar
Sean Randall @cachondo@defcon.social
2d
@fastfinge @nick sorry, which not: it doesn't predict phrases at all or you can't turn it off?
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick You can't turn it off. Doing so seems to be a no-op.
1
0
0
0
User avatar
Sean Randall @cachondo@defcon.social
2d
@fastfinge @nick that's gonna eventually bug me for longer form reading, I suspect.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick No, I lied. Phrase prediction works fine on OpenEVV. I'm not entirely sure where the longer pauses are coming from.
1
0
0
0
User avatar
Sean Randall @cachondo@defcon.social
2d
@fastfinge @nick they're absolutely coming from somewhere. And I don't want phrase prediction to work at all but my pp's being jumked.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick PP works on subclauses seperated by commas, as well as remarks in parens. You can hear the difference with it on verses it off. It seems like openevv just pauses longer for commas and periods in some cases, unrelated to pp. I think? Maybe? Right now I'm in that state of programming where I am confused and know it.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick Right now I'm having theories about inflection settings being different between openevv and eci.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@cachondo @nick In NVDA, the pause is noticeable in a say all where a single sentence is broken up by a newline. It's also noticeable in the keyboard shortcut given on a button (like apply in the NVDA settings dialogue). But when driving openevv directly with these exact strings, the pauses are gone. So...I'm baffled. Something something indexes?
1
0
0
0
User avatar
Pitermach @pitermach@dragonscave.space
2d
@fastfinge @cachondo @nick Re the shortcut thing, I would then check if it inserts a pause when it receives a spelling command. Quick way to check this is uncheck use Spelling functionality in NVDA voice settings, then read a button again and see what it does.
1
0
1
0
User avatar
Amir @amir@dragonscave.space
2d
@pitermach @fastfinge @cachondo @nick With openevv, oftentimes if I spell something via NVDA+Up pressed twice, a brief pause is inserted after the first character, and the rest of the characters are spelled normally. Enabling or disabling the spelling functionality feature doesn't affect this.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @pitermach @cachondo @nick Yeah, I’m so baffled right now.
0
0
0
0
User avatar
Pitermach @pitermach@dragonscave.space
2d
@amir @fastfinge @cachondo @nick I’m not super familiar with viavoice, have mostly been using eloquence here, but I know there are synthesizers that do insert a pause like that when they enter or exit spelling mode. The RunaTTS era of Vocalizer is a good example of this. I don’t know enough to say where this is coming from, what I can say is using the IBMTTS addon with the eloquence libraries I get no extra pauses like that and I’m assuming Eloquence64 doesn’t have them either. So, either this is something specific to viavoice, when it gets a spell command it adds its own pause, it’s specific to openEVV, or the NVDA addon, perhaps when it sees a spell command in the middle of a string like for a button label it sends it as a separate string to the synthesizer causing the pause.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@pitermach @amir @cachondo @nick But it happens even with spelling functionality off. And correct, only with openevv.
0
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick I'm running Eloquence-v22-7-g8f25c13.nvda-addon which allows us to select sample rates from 11025 HZ up to 48000 HZ for openevv. But it seems to me that they don't work, at this stage at least. I hear no difference between 11000 HZ and 48000 HZ. Also openevv is quite laggy when moving around, say, items in Mastodon and FastSMRW. And its reliance on ViaVoice instead of Eloquence makes things a bit more difficult. At least it recognizes the Community Dictionary, and that's a good thing.
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick Yeah, openevv is adding extra pauses somewhere. I haven’t figured out why yet. And resampling is working for 8 kHz. I’m not sure what’s up with the other options.
1
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick I thought it might be the dictionaries. But removing them makes no change when it comes to the huge delay in FastSMRW or Fedra.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick Try disabling use spelling functionality. That helps a bit.
0
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick Openevv is a ways away from being the default. I just wanted to get us ready when the time comes.
1
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick Yeah. But you know how curiosity kills - LOL!
1
0
1
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@amir What i'm sort of hoping happens is that we get more of a spec than a synth. In other words, acoustic modeling and a genuine alternative to Delta, but other people make versions of it to be as they like. E.G. Some diehard ViaVoice lover continues Openevv as is, whereas someone else continues it as OpenEloquence. If not, I confess I'm hoping for Eloquence parity. @fastfinge
2
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@nick @amir The differences between ViaVoice and eloquence are just bugs though. Openevv with the bugs IBM added fixed is just eloquence, no? And I don’t want parody. I at least want proper Unicode support.
1
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick Ah well. I don't think so. Just see how openevv/ ViaVoice tends to pronounce, say, produce. And how it fails to make the distinction between produce as a verb and produce as a noun.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick I thought that was dictionary weirdness. If not I’d class that as a bug from IBM not an intended change.
2
0
0
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge You would, maybe. Let's hope @Mudb0y does. @stasp @amir
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@nick @Mudb0y @stasp @amir My father worked at IBM for over 30 years. His stories gave me a dim view of IBM code lol. He always complained IBM stood for idiots become managers.
1
1
1
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge Whereas to me, with EVV, the goal should be to Compaq it. It'd be awesome if we could get it such that no code from IBM/ETI survives. @Mudb0y @amir
0
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick ViaVoice has a whole lot of weirdness like that.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick For years when my father worked there developers were measured by lines of code they wrote per day. So quite often programmers would make meaningless or untested changes just to make that number go up. You can see it all over ViaVoice.
1
0
0
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick Oh - wow! That's unbelievable especially when a name like IBM is involved - LOL! I remember their HomePageReader (HPR) and how it tried to facilitate, and later failed, to make web-browsing easier for us.
1
0
0
0
User avatar
🇨🇦Samuel Proulx🇨🇦 @fastfinge@interfree.ca
2d
@amir @nick Yes, IBM did good things often in spite of itself. But also, there was lots of work to be done on homepage reader. I was an internal beta tester for that growing up, in fact. So if you were a programmer there, you could easily add lots of functions and features. Then every release would have new things. But imagine being the programmer assigned to work on the eloquence codebase? It was in good shape when IBM purchased it. But you have to write lots of code anyway, because that’s how your manager decides if you’re being productive. And you have to justify new releases. So what are you going to do? Remember this was the early 2000’s. Concatenation is the big one, of course, and they hacked that in. But otherwise? Just randomly change things.
1
0
1
0
User avatar
Amir @amir@dragonscave.space
2d
@fastfinge @nick That's why productivity can become the bane of itself or the bane of ViaVoice in this case. For ViaVoice, they apparently managed to add a language or 2 and introduce the concept of sample rates which were, and still are, difficult to adjust, and their 22 kHZ option clips and clicks. Other than that, they ended up altering many of Eloquence's good grammatical rules, made some dictionary corrections, and introduced strange mispronunciations.
0
0
1
0
User avatar
Amir @amir@dragonscave.space
2d
@nick @fastfinge I also sincerely hope to see that happen. For the time being, though, living with ViaVoice's oddities is difficult - haha!
0
0
0
0
User avatar
Nick Giannak III @nick@hkc.social
2d
@fastfinge Admittedly, there are behaviorrs I'm a bit attached to, E.G. Eloquence pronounces Produce differently and knows what heteronyms are a little more robustly than Openevv does. Mcmahon is spoken like we actually speak it here. Celtics are spoken like the NBA team.
0
0
0
0