Hi and welcome to my software page!
Here, you will find some useful tools I have written. Some of these can also be found on Github, but here I will provide downloadable binaries.
Available titles right now:: 2
ClipSapi: Fake SAPI voice that routes directly to clipboard for max compatibility with screen readers
Tired of NVDASapi?
Clipboard Voice is a minimal SAPI 5 TTS engine that writes the spoken text to the Windows clipboard instead of producing audio. It is implemented as a native ATL COM in‑proc DLL that implements ISpTTSEngine
.
Install via Scripts
The scripts install both x64 and x86 voices for maximum compatibility.
The repository already includes the dlls, just run the install script and boom! Just pay attention to the regsvr32 messages, let me know if something fails.
Batch (auto-detect)
Run Command Prompt as Administrator:
scripts\install.bat
The batch script auto-detects the same default locations. You can also specify both paths explicitly:
scripts\install.bat "C:\path\to\ClipboardVoice\x64\Release\ClipboardVoice.dll" "C:\path\to\ClipboardVoice\x86\Release\ClipboardVoice.dll"
Uninstall (Batch, Admin):
scripts\uninstall.bat
Test
./test/say.ps1 "This will land on the clipboard."
It selects the “Clipboard Voice” token and speaks; the text should be on the clipboard afterward.
How It Works
ISpTTSEngine::Speak
concatenates input text fragments and writes the result to the clipboard as UTF‑16.- The engine writes ~50 ms of PCM silence to satisfy clients that expect audio.
- The voice token declares language 409 and basic attributes.
Contribute
Prerequisites
- Visual Studio 2019/2022 with C++ and ATL support
- Windows 10/11 SDK (headers/libs:
sapi.h
,sapiddk.h
) (might come included with VS studio already) - Administrator rights to install/register
Build
- Open
ClipboardVoice/ClipboardVoice.sln
in Visual Studio. - Build these configurations:
Release | x64
Release | Win32
Output Paths
- x64:
ClipboardVoice/x64/Release/ClipboardVoice.dll
- x86 (Win32):
ClipboardVoice/Release/ClipboardVoice.dll
Caveats
- Requires Administrator rights to install (writes HKLM and registers COM).
- Clipboard content is replaced by the spoken text.
- Keep both x86 and x64 installed so 32‑bit and 64‑bit apps can use the voice.
- Windows defender might complain and delete the dll. Add it to allowed threats or whatever. Funny how the stuff that you are compiling yourself are throwing windows defender into a fit.
Contributing
Repo Layout
ClipboardVoice/
Visual Studio solution and projectscripts/
batch install/uninstall scriptstest/
PowerShell test script
Tips
- Display name/vendor: update in:
ClipboardVoice/ClipboardVoice/ClipboardVoiceEngine.cpp
- Silence duration: adjust
WriteTinySilence(...)
inClipboardVoiceEngine.cpp
.
Troubleshooting
- Voice not listed:
- Verify install succeeded; check registry:
HKLM\SOFTWARE\Microsoft\Speech\Voices\Tokens\ClipboardVoice
HKLM\SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens\ClipboardVoice
- Check COM class:
HKCR\CLSID\{F4ABF2E3-9F21-4B8C-B410-4A0A9E5C5BD3}
points to the installed DLL.
- Verify install succeeded; check registry:
- Clipboard not changing:
- Another process may hold the clipboard; try again with a shorter string.
- Try the test script; ensure AV/EDR did not block registration.
- regsvr32: entry point not found / no DllRegisterServer:
- Ensure you rebuilt after pulling latest changes. The DLL now
explicitly exports
DllRegisterServer
/DllUnregisterServer
via a module definition file (ClipboardVoice/ClipboardVoice/ClipboardVoice.def
). - Use the correct regsvr32 for the DLL bitness:
- 32-bit DLL →
C:\Windows\SysWOW64\regsvr32.exe
- 64-bit DLL →
C:\Windows\System32\regsvr32.exe
- 32-bit DLL →
- Ensure you rebuilt after pulling latest changes. The DLL now
explicitly exports
- regsvr32 error 0x80029C4A (TYPE_E_CANTLOADLIBRARY):
- Rebuild after latest changes. The DLL now skips ATL type library registration, which avoids this error when no embedded TLB exists.
- If you need a TLB, embed it by adding a
TYPELIB
resource inClipboardVoice.rc
and switch the ATL calls back to default. Tired of NVDASapi?
Clipboard Voice is a minimal SAPI 5 TTS engine that writes the spoken text to the Windows clipboard instead of producing audio. It is implemented as a native ATL COM in‑proc DLL that implements ISpTTSEngine
.
Install via Scripts
The scripts install both x64 and x86 voices for maximum compatibility.
The repository already includes the dlls, just run the install script and boom! Just pay attention to the regsvr32 messages, let me know if something fails.
Batch (auto-detect)
Run Command Prompt as Administrator:
scripts\install.bat
The batch script auto-detects the same default locations. You can also specify both paths explicitly:
scripts\install.bat "C:\path\to\ClipboardVoice\x64\Release\ClipboardVoice.dll" "C:\path\to\ClipboardVoice\x86\Release\ClipboardVoice.dll"
Uninstall (Batch, Admin):
scripts\uninstall.bat
Test
./test/say.ps1 "This will land on the clipboard."
It selects the “Clipboard Voice” token and speaks; the text should be on the clipboard afterward.
How It Works
ISpTTSEngine::Speak
concatenates input text fragments and writes the result to the clipboard as UTF‑16.- The engine writes ~50 ms of PCM silence to satisfy clients that expect audio.
- The voice token declares language 409 and basic attributes.
Contribute
Prerequisites
- Visual Studio 2019/2022 with C++ and ATL support
- Windows 10/11 SDK (headers/libs:
sapi.h
,sapiddk.h
) (might come included with VS studio already) - Administrator rights to install/register
Build
- Open
ClipboardVoice/ClipboardVoice.sln
in Visual Studio. - Build these configurations:
Release | x64
Release | Win32
Output Paths
- x64:
ClipboardVoice/x64/Release/ClipboardVoice.dll
- x86 (Win32):
ClipboardVoice/Release/ClipboardVoice.dll
Caveats
- Requires Administrator rights to install (writes HKLM and registers COM).
- Clipboard content is replaced by the spoken text.
- Keep both x86 and x64 installed so 32‑bit and 64‑bit apps can use the voice.
- Windows defender might complain and delete the dll. Add it to allowed threats or whatever. Funny how the stuff that you are compiling yourself are throwing windows defender into a fit.
Contributing
Repo Layout
ClipboardVoice/
Visual Studio solution and projectscripts/
batch install/uninstall scriptstest/
PowerShell test script
Tips
- Display name/vendor: update in:
ClipboardVoice/ClipboardVoice/ClipboardVoiceEngine.cpp
- Silence duration: adjust
WriteTinySilence(...)
inClipboardVoiceEngine.cpp
.
Troubleshooting
- Voice not listed:
- Verify install succeeded; check registry:
HKLM\SOFTWARE\Microsoft\Speech\Voices\Tokens\ClipboardVoice
HKLM\SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens\ClipboardVoice
- Check COM class:
HKCR\CLSID\{F4ABF2E3-9F21-4B8C-B410-4A0A9E5C5BD3}
points to the installed DLL.
- Verify install succeeded; check registry:
- Clipboard not changing:
- Another process may hold the clipboard; try again with a shorter string.
- Try the test script; ensure AV/EDR did not block registration.
- regsvr32: entry point not found / no DllRegisterServer:
- Ensure you rebuilt after pulling latest changes. The DLL now
explicitly exports
DllRegisterServer
/DllUnregisterServer
via a module definition file (ClipboardVoice/ClipboardVoice/ClipboardVoice.def
). - Use the correct regsvr32 for the DLL bitness:
- 32-bit DLL →
C:\Windows\SysWOW64\regsvr32.exe
- 64-bit DLL →
C:\Windows\System32\regsvr32.exe
- 32-bit DLL →
- Ensure you rebuilt after pulling latest changes. The DLL now
explicitly exports
- regsvr32 error 0x80029C4A (TYPE_E_CANTLOADLIBRARY):
- Rebuild after latest changes. The DLL now skips ATL type library registration, which avoids this error when no embedded TLB exists.
- If you need a TLB, embed it by adding a
TYPELIB
resource inClipboardVoice.rc
and switch the ATL calls back to default.
Launchtype: Free yourself from desktop hell and open commands or copy text snippets by keyboard abreviations
I wrote this app to quickly launch commands (applications) with or without command line arguments on Windows.
I don’t like having a cluttered desktop on Windows, and sometimes I have a lot of different websites to run with complicated URLs and I have to find the text file where I have them stored, copy the address to the browser, etc. this is now over.
This is a launcher that can be used with the press of ctrl+alt+space (maybe I will make it configurable later).
To learn more about this program you can find more information in the readme file in the zip.
Warning: Windows Defender will most likely detect this program as a threat, because of its running commands and clipboard history features. You can find the source code on the LaunchType GitHub.