I'm sorry y'all, think my work on the synthesizer will end here for now. It's already 1 in the afternoon, wow. Started around 9, but I think I've done all I could to make the add-on more thread-safe and use proper pointers. I'm leaving y'all with a 0.08 treat: Abbreviations check box. This is in the latest v0.08 copy of the add-on. Next to number processing, it should disable the setting and not use them when unchecked. (eurpod.com/BestSpeak.nvda-addo…)
This entry was edited (1 year ago)
in reply to Borris

yeah, not here oddly. What's interesting to me is how it appears as though the soundcard sampling set and latency can impact when and where people are hearing the weird artifact noise, the more this deepens the more misterious the issue actually gets :D
I also wish we had multiple versions of the DLL to play around with, maybe there's a more stable later revision out there in some obscure package.
This entry was edited (1 year ago)

Ok Y'all. I uploaded a new copy of the BeSTSpeak Add-on: This time we:
- Re-init the engine from scratch before every chunk.
- Shut down and unload the DLL after each chunk.
- Use a background thread but with a lock around TtsWav.
- On cancel, we try to shut up. If it doesn't stop mid-chunk, we still eventually finish and then re-init.
- Indexes only if not canceled, doneSpeaking always fired.
- We store the handle as self.handle, a POINTER(c_long), rather than a simple c_long. This matches the engine’s expected long* type, reducing the risk of memory access violations.
- V0.7 hotfix: add "number processing" checkbox to voice settings.
Please download and test from: eurpod.com/BestSpeak.nvda-addo…
This entry was edited (1 year ago)

Pitermach reshared this.

A Secret Stocking-Stuffer Summit: Google TalkBack, Samsung TalkBack, and Jieshuo’s Christmas Confession accessibleandroid.com/a-secret…

Important reminder, if you own a domain name and don't use it for sending email.

There is nothing to stop scammers from sending email claiming to be coming from your domain. And the older it gets, the more valuable it is for spoofing. It could eventually damage your domain's reputation and maybe get it blacklisted, unless you take the steps to notify email servers that any email received claiming to come from your domain should be trashed.

Just add these two TXT records to the DNS for your domain:
TXT v=spf1 -all
TXT v=DMARC1; p=reject;

The first says there is not a single SMTP server on earth authorized to send email on behalf of your domain. The second says that any email that says otherwise should be trashed.

If you do use your domain for sending email, be sure to add 3 records:
SPF record to indicate which SMTP server(s) are allowed to send your email.
DKIM records to add a digital signature to emails, allowing the receiving server to verify the sender and ensure message integrity.
DMARC record that tells the receiving email server how to handle email that fails either check.

You cannot stop scammers from sending email claiming to be from your domain, any more than you can prevent people from using your home address as a return address on a mailed letter. But, you can protect both your domain and intended scam victims by adding appropriate DNS records.

UPDATE: The spf and the dmarc records need to be appropriately named. The spf record should be named "@", and the dmarc record name should be "_dmarc".

Here's what I have for one domain.

One difference that I have is that I'm requesting that email providers email me a weekly aggregated report when they encounter a spoof. gmail and Microsoft send them, but most providers won't, but since most email goes to Gmail, it's enlightening when they come.

#cybersecurity #email #DomainSpoofing #EmailSecurity #phishing

This entry was edited (1 year ago)
in reply to Darakian

@darakian I don't think it was good to do that thing in the first place. I think the ripple effects of that damage is still to come as news sites and databases will be slow to update.

Also, it was not a "mistake" they "discovered". It was done on purpose and we/I had to waste time and energy correcting it, for the sanity and safety of millions of curl users.

Rude and stupid it was.

@literalgrill paging @Seirdy

You were right bro
RE: sakurajima.moe/@literalgrill/1…

Jieshuo+ vs. Jieshuo Lite: Differences and Which One Should You Choose accessibleandroid.com/jieshuo-…

Automakers have been selling data about the driving behavior of millions of people to the insurance industry.

In the case of General Motors, affected drivers weren’t informed, and the tracking led insurance companies to charge some of them more for premiums.

I’m the reporter who broke the story.

I recently discovered that I’m among the drivers who was spied on.
nytimes.com/2024/04/23/technol…

reshared this

This song is obsessing me. It leaves me breathless every time. “Infinitely Light Years” by Steven Page. His voice, the lyrics, the themes, the orchestration and layering, all so rich. It evokes way more for me than most songs can, and music is emotive to me. youtube.com/watch?v=g4HMlwO_Cj…

#UploadFilter #ResponsibleEncryption - politicians today use euphemisms when they want to break encryption. 🤯

We must keep fighting for our right to privacy! 💪

Learn here why #backdoors to #encryption must never be allowed: tutanota.com/blog/posts/why-a-…

FYI: CVE-2024-11053 is *not* a critical security flaw, even if now several security related sites repeat that statement.

This is as good as any reminder that you should read the #curl advisories for #curl issues rather than trusting the scaremongers.

curl.se/docs/CVE-2024-11053.ht…

(edit: I wrote an extra '1' in there at first)

#curl
This entry was edited (1 year ago)

daniel:// stenberg:// reshared this.

in reply to daniel:// stenberg://

We added your clarification in vulnerability-lookup.

vulnerability.circl.lu/cve/CVE…

Now I'm wondering if we should not add the ability to propose the author and maintainer to counter any element from a vulnerability description.

@cedric what do you think of it? Not sure how this could be efficiently implemented.

in reply to daniel:// stenberg://

I get why it’s important to have an independent severity rating for security flaws. Vendors are incentivized to downplay the severity. Does anybody think Adobe would have appropriately rated even *half* of the bugs in Flash?

But for the independent ratings to be useful, they need to have high quality with extreme consistency. We certainly don’t seem to be getting that.

Apparently #CISA has rated #curl #vulnerability #CVE_2024_11053 as #CVSS v3 Base Score 9.1 "critical". This is wrong, and will lead to automation triggering unnecessary warnings and blocking use of perfectly fine systems until an update is installed (which can take months). nvd.nist.gov/vuln/detail/CVE-2…

Edit: In case you wonder my credentials for judging this: I found this vulnerability.

Edit2: This appears to be originating from CISA: cve.org/Media/News/item/blog/2…

Edit3: The score has now been fixed. Commit: github.com/cisagov/vulnrichmen…

This entry was edited (1 year ago)

Opt-Out von der "dunkelgrünen Schrumpel-Bananen Software" schon vorgenommen?

Elektronische Patientenakte: Sorge vor Verlust von Zeit und Vertrauen
heise.de/meinung/E-Patientenak…

in reply to Cyb3rrunn3r ⭐️

@Cyb3rrunn3r "Dem Kram" ja, dem Arzt (hoffentlich) noch nicht. Und das ist es, was die Autorin da befürchtet: Verlust des Vertrauensverhältnisses zwischen Arzt und Patient. Patienten haben keine Kontrolle darüber, welche Daten in der Akte landen und was damit passiert – und Ärzte wundern sich, wenn jemand etwas nicht in die Akte eingetragen wissen will…

Für diese Datengier ("aber die (datengetriebene) Wirtschaft!11!") setzt man das also auf's Spiel.

Unknown parent

mastodon - Link to source

IzzyOnDroid ✅

@MrMST wider Erwarten, teilweise ja. Ich bekam erst kürzlich Bescheid, dass dieses tolle Teil ab Januar für mich eingerichtet würde – ohne irgendwelche Aufklärung. Habe also meine Versicherung aufgeklärt. Das (per Fax) zugestellte Opt-Out hatten sie bereits in weniger als 24h eingetragen, auf die schriftliche Bestätigung warte aber nun ich seit 8 Tagen…

Opt-Out ist auf allen Kanälen möglich: Anruf (da hast Du aber nichts in der Hand), Fax, Mail, Web-Formular… Vorsorglich machen.

OpenAI's Sora Is Generating Videos of Real People, Including This Unintentionally Demonic Version of Pokimane futurism.com/openai-sora-pokim…

Day 15 - #adventOfIOSAccessibility. Touch target sizes are recommended to be at least 44 x 44 points for better usability. Buttons in the navigation bar (especially when not using nav bar button items), dismiss buttons, and custom toolbars, are common examples that often fall below this size.

#365DaysIOSAccessibility

This entry was edited (1 year ago)

I just learned one thing about #Peertube that can make it quite attractive to content creators. Peertube channels have #podcast feeds, and most podcast apps can play video podcasts these days. You can submit the feed to Spotify or Apple Podcasts, making it available to millions of users. AFAIK, you can't do that with videos uploaded to #YouTube channels.
I haven't tried if it really works. But if it does, it's a big deal.
This is how @mestskacyklistika looks in the #Podverse app.

Calling all Python expert friends and Masto peoples who also know something about NVDA add-ons.
Right now, the BeSTSpeak TTS thread can still on occasion crash with certain speech interrupts, particularly if larger chunks of text are fed at once to the TTS. I honestly don't have the knowledge to diagnose all possible combinations of thread management, and all of this is reminding me too much of my C++ college days of race condition handling and such.
GPT Pro mode gave me like 7 ways to diagnose it, I just don't have the energy, nor the expertise myself in Python, so if someone picks it up, be my guest. Possible solutions detailed in eurpod.com/crashes.txt and the add-on at eurpod.com/BestSpeak.nvda-addo…
in reply to JamminJerry

yeah, some of that may get ironed out in the next few days :) I probably won't have the energy to pick it up again this hardcore tomorrow, like 8 or 9 hours of just coding with GPT straight and barely looking up to go to the bathroom twice. Aha. This is the mess any kind of coding projects get me into. Seeing others from the community step in though gave me a bit of hope that I'm not alone on it and let's face it, there exist far better Python experts than myself out there who could own me and my GPT crafted knowledge any day haha.
This entry was edited (1 year ago)

TIL, Pemerintah Indonesia selepas era orde baru tetap melarang penyebaran paham komunisme karena demokrasi negeri ini berkembang bersama dengan sistem oligarki dan kapitalisme. Karena itulah, ada upaya oleh orang-orang berpaham kapitalisme agar ajaran paham komunisme tidak dapat berkembang di negeri ini.

hukumonline.com/berita/a/kenap…

Catatan: Saya tidak condong atau bahkan mendukung penuh dari salah satu kedua ajaran itu yaa

Shoutout to @masonasons for helping to add headSize and excitation options to the BeSTSpeech add-on :) Now you can make that Keynote Gold sound whispery or like a chipmunk, if you wanted to. Also had help with improving the capitalization pitch shift function so it should not get stuck and keep spelling out everything in certain situations. Love to see bugs getting squashed. (eurpod.com/BestSpeak.nvda-addo… for those who do not have the link)

David Goldfield reshared this.

in reply to Tamas G

I was an idiot and deleted my post instead of editing it, so apologies if you get this twice. I'm curious how on earth yoiu accomplished this? I see B32_TTS.DLL but have no idea how to begin figuring out what that actually is. Is it some kind of neural voice or did you figure out how to actually emulate the original keynote voice? I thought it was neural until it crashed in a very un-neural-like way.
in reply to Simon Jaeger

@simon @jscholes so from what I understand: This was found in an old educational product from the mid-90s - the DLL had popped up there thanks to the Internet Archive. Both the 90s software and BeSTSpeech are long dead now, but I find it interesting that the DLL description says: "BeSTspeech TTS for Windows (Designed by Jason Zheng)" and it's copyright 1994. We're using a DLL that's 30 years old, wow, way to celebrate its 30th birthday.

Everybody knows Ubisoft's NFT games and NFT initiative crashed and burned and they had to stop talking about AI, but one other thing I'm noticing is every game with generative AI elements is absolutely slated by consumers - e.g. these are a sample of comments on the Catly trailer from The Game Awards across different channels.

It's exciting to see a new generation just outright reject this stuff.

Want Keynote Gold's Voice inside your NVDA?
OK, leaving this here for now. Huge thanks to all of you who jumped in to debug this TTS. Of course, without @rommix0 releasing this find and the demo app, documenting parameters, none of this would have gone anywhere. Oh, and GPT Pro mode still gets credit for teaching me good lessons about threadding exceptions and deadlocks.
I tried to add parameters to allow for the reading of full numbers as right now anything above 4-digits gets announced as single numbers. No-go there, n3,0 and n6,0 and n2,0 and n5,0 all just didn't change anything. Maybe someone else can find a fix for that. Most other functions work though.
Some people will no doubt ask me to allow this to use another sound output device than default, and that's a big no, it's limited by the DLL itself. So not happening.
eurpod.com/BestSpeak.nvda-addo…

David Goldfield reshared this.

Unknown parent

mastodon - Link to source

Tamas G

have been debugging it for 3 hours now but don't think it'll go anywhere. When 2025.1 comes out and they return integers in the config values for the output device, this could be made a little easier (though I don't know if it will still translate the correct mapping into the MME device ID right), but at least it'll mean not needing to enumerate them based on string name. Right now it's a mess:
def enumerateWaveOutDevices():
devices = {}
count = waveOutGetNumDevs()
for i in range(count):
caps = WAVEOUTCAPS()
res = waveOutGetDevCapsW(i, byref(caps), ctypes.sizeof(caps))
if res == 0:
devName = caps.szPname.strip()
devices[devName.lower()] = i
return devices
and then later:
" devices = enumerateWaveOutDevices()
log.info("Enumerating devices for exact match:")
for dn, did in devices.items():
log.info(f"Device '{dn}' = ID {did}")
if val in devices:
matched_id = devices
[val] log.info(f"Matched exact device '{val}' to ID {matched_id}")
return matched_id
else:
log.info(f"No exact match for '{val}', using WAVE_MAPPER")
return WAVE_MAPPER

"
So yeah. All because NVDA's config can return a string. The fuck.

Unknown parent

mastodon - Link to source

Tamas G

nah. MME is getting deprecated in 2025.1 in favor of Wasapi-only.... To them its use is considered legacy unfortunately. And it doesn't help that we cannot pipe the BestSpeech audio directly through Nvwave, because it's another window and handle entirely, it's not as easy as just passing the parameter for the buffers and the dll returns audio to that player object. Gosh my life would have been a dream with Bestspeech if it were that easy.

For anyone who is up for debugging Python code on a Saturday afternoon, please help me get a working copy of BeStSpeak working on NVDA: eurpod.com/BestSpeak.nvda-addo…
Notes:
- This block the main window thread somehow still, so NVDA thinks it has a dialog open. Consequently you cannot change back to your synth and will need to open NVDA.ini in notepad to change it.
- very basic, which means: No rate, pitch, or other synth settings implemented yet.
This entry was edited (1 year ago)
in reply to Tamas G

Interesting. The speech synth window bug specifically affects use of ctrl+nvda+s. But getting to it through nvda settings ends up working, and even allowing you to change synths. However, even when the synth switches back, ctrl+nvda+s is broken for the remainder of the nvda session. Ctrl+insert+s also somewhat works with inconsistent success, however getting to synth settings through nvda settings is consistently successful. Hopefully htis helps to isolate the issue somewhat.
This entry was edited (1 year ago)

The 2024 Godot showreel is finally out 🎥

Thank you to all the ones who submitted a project and wishing you good luck for the next ones. We plan on include more people in the voting process, so stay tuned to hear more about that next year.

#GodotEngine #godot

youtube.com/watch?v=n1Lon_Q2T1…