Skip to content

Instantly share code, notes, and snippets.

View willwade's full-sized avatar
🌏
Working on dasher and a lot of Ace hardware projects

will wade willwade

🌏
Working on dasher and a lot of Ace hardware projects
View GitHub Profile
@willwade
willwade / FindSapi4CLSID.py
Created December 1, 2024 08:24
Seek out the clsid for sapi4
import winreg
def find_sapi4_clsid() -> str:
"""
Search the Windows registry for the SAPI 4 CLSID.
Returns:
str: The CLSID for SAPI 4 if found, else raises an exception.
"""
sapi4_key_path = r"SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens"
@willwade
willwade / comsapi4test.py
Created November 30, 2024 19:05
Com surrogate technique
import comtypes.client
# SAPI 4 CLSID for the voice
SAPI4_CLSID = "{EEE78591-FE22-11D0-8BEF-0060081841DE}"
def list_sapi4_voices():
"""List available SAPI 4 voices."""
try:
sapi4 = comtypes.client.CreateObject(SAPI4_CLSID)
voices = sapi4.GetVoices()

Idea is to bridge to 32 bit stuff with 64 bit python

Compile the DLL

1.	Use a 32-bit version of Visual Studio to compile the code as a 32-bit DLL.
2.	Set the project to build a DLL:
•	Open Project Properties > Configuration Properties > General.
•	Set Configuration Type to Dynamic Library (.dll).
3.	Specify the output architecture:
•	Under Configuration Properties > Linker > Advanced, set Target Machine to MachineX86 for 32-bit.
@willwade
willwade / midcontroller-demo.swift
Last active November 25, 2024 16:50
Midi-Switch controller
import UIKit
class ViewController: UIViewController {
var midiController: MIDIController?
override func viewDidLoad() {
super.viewDidLoad()
// Initialize the MIDI controller
midiController = MIDIController()
@willwade
willwade / DotNetSpeech.py
Last active November 6, 2024 12:56
A very rough untested attempt at a .net driver for speech synth
import clr
import threading
import queue
import time
from System.Speech.Synthesis import SpeechSynthesizer, SpeakCompletedEventArgs
clr.AddReference("System.Speech")
class DotNetSpeech:
def __init__(self, proxy):
@willwade
willwade / build.bat
Created November 6, 2024 00:08
test nukita and mediapipe
@echo off
setlocal
rem Capture the Poetry environment path
for /f "delims=" %%i in ('poetry env info --path') do set venv_path=%%i
rem Construct the site-packages path
set site_packages=%venv_path%\Lib\site-packages
rem Convert the path to forward slashes for Nuitka compatibility
import comtypes.client
import winreg
class SAPI4Driver:
def __init__(self, proxy):
# Initialize the SAPI 4 VoiceText COM object
self._tts = comtypes.client.CreateObject("Speech.VoiceText")
self._proxy = proxy
self._speaking = False
self._stopping = False
import objc
from AVFoundation import AVSpeechSynthesizer, AVSpeechUtterance, AVSpeechSynthesisVoice, AVAudioEngine, AVAudioFile, AVAudioSession
from Foundation import NSURL, NSObject
class AVSpeechDriver(NSObject):
def __init__(self):
self._proxy = None
self._tts = None
self._audio_engine = AVAudioEngine.alloc().init()
self._audio_file = None
@willwade
willwade / joy2numpad.ahk
Created August 6, 2024 15:37
joystick 2 number pad. Use with mouse keys if you wo wish
; Initialize variables for joystick
JoyUp:: ; Joystick up
JoyDown:: ; Joystick down
JoyLeft:: ; Joystick left
JoyRight:: ; Joystick right
; Map joystick directions to numpad keys
JoyUp::
Send {Numpad8}
return
@willwade
willwade / Dockerfile
Created July 26, 2024 14:40
Test espeak with docker
# Use the official Python image as a base
FROM python:3.8-slim
# Set environment variables
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
# Install dependencies
RUN apt-get update && apt-get install -y \
espeak-ng \