Skip to content

Add native Speech Dispatcher support - #14

Open
stormdragon2976 wants to merge 3 commits into
Mudb0y:mainfrom
stormdragon2976:speech-dispatcher-module
Open

Add native Speech Dispatcher support#14
stormdragon2976 wants to merge 3 commits into
Mudb0y:mainfrom
stormdragon2976:speech-dispatcher-module

Conversation

@stormdragon2976

@stormdragon2976 stormdragon2976 commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • add a native Speech Dispatcher output module that keeps one OpenEVV engine alive and streams 16-bit, mono 11025 Hz PCM through the server audio backend
  • expose every compiled language and its eight voice presets, with rate, pitch, pitch range, volume, spelling, character, key, SSML mark, stop, and pause handling
  • normalize left and right curly apostrophes before conversion to the engine's Latin-1 input so contractions do not become spoken question marks
  • grow the low-memory language-data registry dynamically so all eight current languages can coexist in one module process
  • add install/build documentation, CI coverage, and a direct module-protocol regression suite

Punctuation and symbol expansion deliberately remain in Speech Dispatcher's language-aware server preprocessing. The regression suite checks that normalized plain module text is byte-for-byte equivalent to direct OpenEVV synthesis so Unicode punctuation and module control sequences cannot become incorrectly spoken text.

Verification

  • make -j4 RULES=bytecode speechd-test-all
  • make -j4 RULES=c speechd-test-all
  • test/hash.sh build/evv
  • strict Clang syntax/warning check for speechd/openevv.c
  • Python byte-compilation for test/speechd.py
  • live spd-say -o openevv "this is a test" playback confirmed without spoken control codes

Audible punctuation-mode differences and broader screen-reader interruption/latency behavior remain manual acceptance checks because the direct protocol test bypasses the Speech Dispatcher server's symbol preprocessor and audio backend.

Suppress non-prosodic symbols retained by server-side symbol preprocessing when Speech Dispatcher selects punctuation mode none. Preserve sentence pauses, intra-word apostrophes, and direct character review, and add regression coverage for duplicated punctuation names.
@stormdragon2976

Copy link
Copy Markdown
Author

Sorry for the multiple updates—we found a couple of edge cases during real-world screen-reader testing. This amendment fixes duplicated punctuation names caused by Speech Dispatcher retaining symbols for prosody, while preserving direct character review and apostrophes inside words. The updated module has now been tested successfully with both Fenrir and Cthulhu.

@Mudb0y

Mudb0y commented Sep 6, 2026

Copy link
Copy Markdown
Owner

This is awesome, I only just saw this PR. I currently use Eloquence on Linux but I've been meaning to switch to OpenEVV my self and make an SPD module so I appreciate you handling this. I'll take a look at this in a minute, there's been a number of changes done that need to be resolved since this PR was made before I merge it, but I'll take care of that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants