Releases: AACTools/VoiceGarden-SAPI
Releases · AACTools/VoiceGarden-SAPI
Release list
v0.6.0
v0.5.8
What's New in v0.5.8
RustTtsWrapper 0.3.16
- Online model voice support — OpenAI, Google, and other cloud engines now support voice listing (
GetVoices), previewing, and promotion to SAPI - All 22 engines confirmed working with dynamic credential discovery
Dynamic Engine Discovery
- No more hardcoded engine lists —
EngineDefinition.DiscoverAll()callsTtsClient.ListEngines()to discover all available engines with their credential requirements at runtime - Adding a new engine in rust-tts-wrapper automatically makes it appear in VoiceGarden UI
- Credentials built dynamically from each engine's
credential_keys— no engine-specific switch statements
Credential Management Rework
- Single source of truth — API keys entered only in Configure Credentials (removed from Configure Voices)
- Verify button — each provider has a Verify button that tests credentials and shows ✓/✗ with voice count
- Configure Voices reads from registry — no duplicate key entry; dropdown shows only enabled providers
Screen Reader Accessibility
- Live regions — status updates, download progress, and verification results announced automatically via
LiveSetting=Polite - View change announcements — switching between Configure Voices, Configure Credentials, etc. is announced
- Onboarding page announcements — "Page 2 of 3: Getting Started" announced on navigation
- Password field descriptions — HelpText on all API key fields ("Enter your Azure API key")
- Control naming — all buttons, checkboxes, textboxes have descriptive accessible names
- ListBox items — model/voice items describe name, language, and status
Manage Models Crash Fix
- Async catalog loading — 1300+ model catalog now loads off the UI thread with
Parallel.ForEach, preventing UI freeze and crash
Single Instance Guard
- Mutex prevents duplicate instances — launching a second VoiceGarden.UI brings the existing window to the foreground
Avalonia 12.1.0
- Upgraded from 11.2.7 to 12.1.0 — compiled bindings, performance, accessibility improvements
- Removed deprecated
Avalonia.Diagnosticspackage
CI Fixes
- Stable download URL —
https://github.com/AACTools/VoiceGarden-SAPI/releases/latest/download/VoiceGarden-release-layout.zip
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI
- Voice promotion fixed —
PromoteElevatednow usesreg.exe importwith UAC elevation - Voice enumerator deadlock fixed — double mutex lock caused crash on first enumeration
- No more voice flood — only promoted voices appear in SAPI
SSML & Speech Markdown via Web Speech API
- PUA sentinel — embed SSML or Speech Markdown via Unicode Private Use Area characters
- SSML normalization — adapter injects required
<speak>attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format
Chrome & Edge Support
- Speech_OneCore registration — voices appear in Chrome and Edge when promoted
RustTtsWrapper 0.3.14
- SSML pass-through, Speech Markdown converter, voice selection, GetVoices crash all fixed
MMS Model Data Fix
- 1143 MMS models now searchable with proper language names
Localization (36 Languages)
- Full UI translation, automatic OS language detection, RTL support
Onboarding & Installer
- 3-page wizard, version-gated, installer error fixes
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.5.4
What's New in v0.5.4
MMS Model Sample Rate Fix
- MMS models play at correct speed — sample rate defaulted to 22050 Hz instead of 16000 Hz, causing wrong pitch/rate. Now defaults per model type: MMS=16000, Kokoro=24000, Vits/Piper=22050
Stable Download URL
- Permalink —
https://github.com/AACTools/VoiceGarden-SAPI/releases/latest/download/VoiceGarden-release-layout.zipalways points to the latest release
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI. This fixes Grid3 and other
System.Speechapps that can't activate in-memory tokens - Voice promotion fixed —
PromoteElevatedwas silently failing because EngineConfig.exe was removed. Now usesreg.exe importwith UAC elevation, creating tokens in both legacy SAPI and Speech_OneCore paths - Voice enumerator deadlock fixed — double mutex lock in
VoiceTokenEnumerator::EnumTokenscaused "resource deadlock would occur" crash on first enumeration or after 10s cache expiry - No more voice flood — previously 500+ Azure voices flooded SAPI voice lists; now only promoted voices appear
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names. Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome, Getting Started, Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.5.3
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI. This fixes Grid3 and other
System.Speechapps that can't activate in-memory tokens - Voice promotion fixed —
PromoteElevatedwas silently failing because EngineConfig.exe was removed. Now usesreg.exe importwith UAC elevation, creating tokens in both legacy SAPI and Speech_OneCore paths - Voice enumerator deadlock fixed — double mutex lock in
VoiceTokenEnumerator::EnumTokenscaused "resource deadlock would occur" crash on first enumeration or after 10s cache expiry - No more voice flood — previously 500+ Azure voices flooded SAPI voice lists; now only promoted voices appear
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names. Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome, Getting Started, Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.5.2
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI. This fixes Grid3 and other
System.Speechapps that can't activate in-memory tokens - Voice promotion fixed —
PromoteElevatedwas silently failing because EngineConfig.exe was removed. Now usesreg.exe importwith UAC elevation, creating tokens in both legacy SAPI and Speech_OneCore paths - Voice enumerator deadlock fixed — double mutex lock in
VoiceTokenEnumerator::EnumTokenscaused "resource deadlock would occur" crash on first enumeration or after 10s cache expiry - No more voice flood — previously 500+ Azure voices flooded SAPI voice lists; now only promoted voices appear
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names. Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome, Getting Started, Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.9
What's New in v0.4.9
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing, so web apps can send simple<speak><prosody rate="slow">...</prosody></speak> - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes (was returning 400 Bad Request)
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
- Phantom back button fixed — About View was nested inside Engine Config template
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install, models, language tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
Stability & Performance Fixes
- Thread safety, memory management, performance, and MSI reliability improvements
Platform Support
- Full x86 (32-bit) and x64 architectures in single MSI installer
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.6
What's New in v0.4.6
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices are registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted - Unpromoting and uninstall cleanup removes from both paths
What's New in v0.4.5
Localization (36 Languages)
- Full UI translation — all user-facing strings extracted into
Strings.resx - 36 language packs — Arabic, Bengali, Chinese (Simplified), Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Marathi, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahedi, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale (
CurrentUICulture) - RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
{lang:Localize}markup extension for XAML +Loc.GetString()for ViewModels
Voice Engine Fixes
- RustTtsWrapper 0.3.12 — fixes
tts_set_voice()selecting wrong Azure voice,tts_speak_ssml()for Azure, andGetVoices()crash for cloud engines - Azure voice activation fix — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - PUA sentinel for inline SSML — web apps using Web Speech API can embed SSML via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- Cloud engines off by default — paid cloud engines (Azure, OpenAI, Google, etc.) disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Now all MMS models have proper language names, codes, and countries - Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials entered in either screen are shared via the same registry keys
- Azure legacy compatibility — reads from both new (
{Engine}VoiceKey) and legacy (AzureVoiceKey) registry paths
Installer Fixes
- Error 1721/1722 fix —
Return="ignore"onregsvr32custom actions prevents install/uninstall failure when DLL dependencies are missing - Upgrade ghost fix —
IgnoreRemoveFailure="yes"+Schedule="afterInstallFinalize"allows clean installs even when previous broken versions left stuck MSI registrations
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install adapter, download models, language compatibility tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content - Analytics consent preserved — PostHog analytics ID persists across reinstalls
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes
- Thread Safety — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance — reduced TTS pipeline logging overhead with conditional level checks
- MSI Reliability — proper COM registration with rollback and error handling
- Async Patterns — replaced async void methods with proper async Task patterns
User Experience
- Onboarding Wizard — 3-page welcome flow with analytics opt-in
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — 32-bit architecture with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 in single MSI
Build System & CI/CD
- Enhanced CI Pipeline — all jobs green
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.5
What's New in v0.4.5
Localization (36 Languages)
- Full UI translation — all user-facing strings extracted into
Strings.resx - 36 language packs — Arabic, Bengali, Chinese (Simplified), Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Marathi, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahedi, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale (
CurrentUICulture) - RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
{lang:Localize}markup extension for XAML +Loc.GetString()for ViewModels
Voice Engine Fixes
- RustTtsWrapper 0.3.12 — fixes
tts_set_voice()selecting wrong Azure voice,tts_speak_ssml()for Azure, andGetVoices()crash for cloud engines - Azure voice activation fix — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - PUA sentinel for inline SSML — web apps using Web Speech API can embed SSML via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- Cloud engines off by default — paid cloud engines (Azure, OpenAI, Google, etc.) disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Now all MMS models have proper language names, codes, and countries - Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials entered in either screen are shared via the same registry keys
- Azure legacy compatibility — reads from both new (
{Engine}VoiceKey) and legacy (AzureVoiceKey) registry paths
Installer Fixes
- Error 1721/1722 fix —
Return="ignore"onregsvr32custom actions prevents install/uninstall failure when DLL dependencies are missing - Upgrade ghost fix —
IgnoreRemoveFailure="yes"+Schedule="afterInstallFinalize"allows clean installs even when previous broken versions left stuck MSI registrations
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install adapter, download models, language compatibility tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content - Analytics consent preserved — PostHog analytics ID persists across reinstalls
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes
- Thread Safety — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance — reduced TTS pipeline logging overhead with conditional level checks
- MSI Reliability — proper COM registration with rollback and error handling
- Async Patterns — replaced async void methods with proper async Task patterns
User Experience
- Onboarding Wizard — 3-page welcome flow with analytics opt-in
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — 32-bit architecture with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 in single MSI
Build System & CI/CD
- Enhanced CI Pipeline — all jobs green
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.3
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper (RustTtsWrapper.Bindings 0.3.8)
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes (Comprehensive Codebase Review)
- Thread Safety Improvements — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance Optimization — reduced TTS pipeline logging overhead with conditional level checks
- MSI Installation Reliability — deferred COM registration for proper rollback and error handling
- Async Pattern Fixes — replaced async void methods with proper async Task patterns
User Experience Improvements
- Onboarding Wizard — new 3-page welcome/onboarding flow (welcome, how-to, privacy)
- Shows on fresh install and version bumps
- Clear explanations of VoiceGarden's purpose and privacy practices
- Analytics opt-in with proper consent
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — complete 32-bit architecture support with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 versions in single MSI
- Improved Platform Detection — better handling of WOW6432Node registry hive
Build System & CI/CD
- Simplified Dependencies — removed 7-Zip dependency, using built-in SharpCompress
- Enhanced CI Pipeline — all 12 jobs green, including C++ DLL, UI, CLI tools, and MSI
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org instead of source builds
Voice Engine Enhancements
- Model Download Improvements — streaming downloads with progress indication
- SherpaOnnx Integration — better model type detection and Kokoro model support
- Azure Voice Preview — fixed format conversion (MP3 to WAV) for audio playback
- Voice Promotion — improved registry token management and cleanup
Technical Debt Cleanup
- Code Quality — addressed memory leaks, thread safety issues, and COM interface violations
- Error Handling — improved exception handling in async operations and COM calls
- Resource Management — proper IDisposable implementation in ViewModels
- Logging Optimization — conditional compilation to reduce performance overhead
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+ required (removed XP compatibility code paths)
Migration Notes
- Existing Installations — seamless upgrade path with proper COM registration/unregistration
- Configuration Migration — existing registry settings preserved during upgrade
- Model Downloads — SherpaOnnx models automatically downloaded on first use
v0.4.2
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper (RustTtsWrapper.Bindings 0.3.8)
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes (Comprehensive Codebase Review)
- Thread Safety Improvements — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance Optimization — reduced TTS pipeline logging overhead with conditional level checks
- MSI Installation Reliability — deferred COM registration for proper rollback and error handling
- Async Pattern Fixes — replaced async void methods with proper async Task patterns
User Experience Improvements
- Onboarding Wizard — new 3-page welcome/onboarding flow (welcome, how-to, privacy)
- Shows on fresh install and version bumps
- Clear explanations of VoiceGarden's purpose and privacy practices
- Analytics opt-in with proper consent
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — complete 32-bit architecture support with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 versions in single MSI
- Improved Platform Detection — better handling of WOW6432Node registry hive
Build System & CI/CD
- Simplified Dependencies — removed 7-Zip dependency, using built-in SharpCompress
- Enhanced CI Pipeline — all 12 jobs green, including C++ DLL, UI, CLI tools, and MSI
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org instead of source builds
Voice Engine Enhancements
- Model Download Improvements — streaming downloads with progress indication
- SherpaOnnx Integration — better model type detection and Kokoro model support
- Azure Voice Preview — fixed format conversion (MP3 to WAV) for audio playback
- Voice Promotion — improved registry token management and cleanup
Technical Debt Cleanup
- Code Quality — addressed memory leaks, thread safety issues, and COM interface violations
- Error Handling — improved exception handling in async operations and COM calls
- Resource Management — proper IDisposable implementation in ViewModels
- Logging Optimization — conditional compilation to reduce performance overhead
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+ required (removed XP compatibility code paths)
Migration Notes
- Existing Installations — seamless upgrade path with proper COM registration/unregistration
- Configuration Migration — existing registry settings preserved during upgrade
- Model Downloads — SherpaOnnx models automatically downloaded on first use