Skip to content

Releases: bartbunting/emacsvox

Emacsvox 2026.9.5

Choose a tag to compare

@bartbunting bartbunting released this 20 Sep 04:01

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.5 --- Current User-Visible Changes

** Omnivox 1.12.0 required

This release requires Omnivox 1.12.0 or newer. The guided installers pin
1.12.0 for the core and matching optional engines; the Debian package recommends
Omnivox 1.12.0 or newer. Upgrade an existing Omnivox installation separately: updating
Emacsvox does not replace your selected server or install optional engines.

** Engine-specific voice controls

The common voice editor now offers /Engine-specific settings/ for a selected choice.
DECtalk and Eloquence report the controls supported by the installed runtime,
including their ranges, defaults and help. Adjustments can follow the common
settings, use an explicit value or request the engine voice default. Automatic
samples speak each change; Preview and Compare remain available before saving.

These controls belong to the palette's selected choice, including its individual
fallbacks. Ordinary speech and previews use the same settings. Unsupported or
unqualified runtimes report the limitation and preserve saved adjustments.

** More responsive voice changes

Applying a preferred engine or voice palette avoids repeated preparation of
unchanged voice choices. Both speech streams still acknowledge application.
Omnivox 1.12.0 also improves DECtalk character navigation and custom-parameter
speech. Maintainers can repeat the voice and editor performance benchmarks to
compare future changes.

** Unified voice palettes and upgrade notes

A named voice now keeps its adjustments, ordered physical choices and
individual fallback tuning together in its palette. Inheritance takes the
nearest complete entry, with the read-only acss-default palette as the root.
Copy Palette makes an independent copy; Reset restores an inherited voice,
while Delete removes a custom voice with no inherited replacement. Source
and Where Used help identify affected voices and known references.

Use the common voice editor to change named voices. The former shared
per-voice routing, migration and preset screens have been removed. Activation
selects a palette for this session; Use at Startup saves its selection in a
Presentation Profile.

Older personal palettes need attention before upgrading. Only palette schema
3 is supported, and opening an older palette does not convert it. Keep a
backup and arrange a reviewed conversion of existing palettes and their
physical choices before using this version. See /Choose And Manage Voice
Palettes/ in the manual for the current model.

** Delayed phonetic character descriptions

Character navigation now speaks a letter normally, then its phonetic name
after a pause. The names match C-e c.
Customize emacsvox-delayed-phonetic-delay to change the default
one-second pause. Toggle emacsvox-delayed-phonetic-mode to turn this feature
off or on; it starts enabled. Further input or speech cancels the pending
description. Typing and deletion do not trigger descriptions.

** Additional RHVoice voices

Get more voices now offers Alan, BDL, CLB and Ksp for RHVoice with a compatible
updated Omnivox build and separately installed RHVoice runtime. Downloads include
the required English data, start disabled and use the existing Enable and Apply
workflow. Existing external voices, including SLT, are preserved. Downloaded
RHVoice packages can be uninstalled with C-c u after disabling and applying.

** Managed voice uninstallation

The Omnivox voice browser offers C-c u to review removal of downloaded Piper,
Flite and MBROLA packages. Disable and Apply first. Reviews include all shared
speakers, known palette references and files retained for other speech sessions.
Built-in voices, imported files, engine runtimes and saved choices are preserved.
C-c U resumes incomplete cleanup.

** Faster navigation in Browse voices

Single-voice languages appear directly. Regional voices form a tree, such as
English, United Kingdom, then West Midlands. Quitting a dedicated voice list
now unwinds its window so repeated q returns out of the browser without a loop.

Omnivox voice lists offer 1 All voices, 2 Downloaded, 3 Enabled, and 4 Needs
Apply. Q lists their counts, including voices in collapsed languages.
Slash finds a voice by name and opens its language group, switching to All
voices when the quick filter hides the result. Each filter remembers its
selected row and column. Unchecked worker status remains separate from
confirmed selection changes needing Apply.

** Expanded Piper voice catalogue

Piper downloads are grouped by language, voice and quality. Slash searches
across the collection; q returns to the preceding group. Model details can
show the speakers sharing one download, with separate enablement after
installation. Single-quality voices appear directly in their language group.
The catalogue now supports e to enable or disable an installed speaker and
a to review Apply, with actions near the top of model details.
Downloads are checked and validated before they are added to the voice library.

** Bundled eSpeak variants

eSpeak engine details offer the variants reported by the running speech worker,
sorted alphabetically. Choose a base voice with b, then press P or RET to hear
the selected combination. Variants need no enabling, settings save, download
or speech restart.

Press u for /Use in palette/ to add the combination as a named voice's preferred
choice, retaining its fallbacks and tuning. The voice editor previews and saves
the change; editing a built-in palette creates a personal copy. Older workers
report missing on-demand variant support explicitly.

** Speech engine details

Aural Home's /Speech engines/ shows discovered availability and voice counts.
RET opens current main and notification discovery, timestamps and runtime
diagnostics. Old inventory is labelled as previous evidence. Opening or
refreshing these details does not run the release installer.

On WSL, /Manage installed release/ opens a separate view identifying the release
and location affected by installation, removal and /Check release engine/.
That release may differ from the active development build or remote server.
Managed checks run asynchronously and retain their diagnostics without opening
an output buffer or speaking the full result. Release management keeps current
speech running and does not select a different server.

/Browse voices/ opens an engine-specific voice browser without disturbing
the general Voice Workbench. P speaks an exact sample; t opens the existing
voice editor, where an experiment can be saved to an explicit palette
destination. q returns to engine details. Inventory updates preserve focus and
selection, and browsing never starts a sample automatically.

The bundled local launcher's engine details now provide file settings for
Piper, Flite, Eloquence and DECtalk. Flite files have individual /Load file/
switches; disabled files remain on disk and are omitted after speech restarts.
Existing environment overrides retain precedence. A bounded, silent configured
check retains the target and diagnostics without replacing live speech;
incomplete Flite discovery is reported even when built-in SLT still works.
Restarting local speech is an explicit action. Downloaded voice enablement uses
Apply to check and replace both speech streams, restoring the previous
configuration if a replacement fails. Downloads start disabled, and changing
Enabled does not change the active voices until Apply. Managed voice-library
operations currently use the bundled WSL-to-Windows launcher; remote and
direct native launches retain their own configuration paths.

** Independent output volumes

Aural Home's /Audio output/ combines notification device selection with five
Omnivox volume controls in Customize:
notification speech, tones and earcons, plus main-stream tones and earcons.
Set each from 0 to 100 percent; 100 preserves its normal level and 0 silences
that component. Changes affect subsequent audio, and saved settings survive
restarts. Independent notification levels require a separate notification
process; notifications using main output share that process's levels.

** Agent Shell response navigation

Upward movement now reaches indented response text that could previously be
skipped with only a blank-line earcon. First response rows are spoken in both
directions, including wrapped text, without leaking hidden prompt markers.

** Simpler feedback controls

Aural Home's /Understand and change feedback/ group now has three entries:
/Feedback for this item/, /Recent feedback/, and /Return to source item/.
Feedback Details combines explanation, playback, and access to changes.
Existing direct shortcuts and searchable action names remain available.
Semantic vocabulary is available through Help, search, and matching criteria.

Feedback Details offers a compact voice choice for the selected field and
access to exact sound overrides, including restoration. Individual voice spans
expand separately, simple field headings are shorter, and unsaved field changes
are marked in the report. Original and simulated playback remain clearly
labelled; previews and retained drafts do not change the captured presentation.

** Names for occasional emoji enabled by default

Occasional emoji are named before engine selection by default.
For example, =Forecast 🔮= becomes =Forecast crystal ball=
for speech, which can avoid an unnecessary engine fallback. The source text
stays unchanged. Naming defaults to at most 64 eligible occurrences per item
and supports buffer-local settings and custom names. Set
=emacsvox-emoji-naming-enabled= to nil to disable it globally or in a buffer.
The higher limit handles decorated mail subjects, including a thinking face
followed by three pizza symbols, without skipp...

Read more

Emacsvox Windows preview 2026-09-20

Pre-release

Choose a tag to compare

Emacsvox Windows preview — 2026-09-20

Try the new per-user installer for native Windows x64. This is a preview of
development after Emacsvox 2026.9.5; it is not a new stable Emacsvox release.
It includes Emacs 31.1, Omnivox 1.12.0, and Emacsvox.
No administrator privileges, Git, compiler or WSL are needed.

Install and start

  1. Download the Windows installer and run it.
  2. Follow the setup wizard. The finish page offers a speech test and Start Emacsvox.
  3. Later, use Start > Emacsvox Windows, or the desktop shortcut if you selected it.

The installer is unsigned; Windows may display an unfamiliar-publisher warning.
Check that the file came from this release. The matching .sha256 file records
its checksum. The default installation folder is %LOCALAPPDATA%\Emacsvox\Desktop Dev.
The wizard still shows version 2026.9.5; the download's development build
identifier distinguishes this preview: 2026.9.5-dev-0ed90373b47e5555.

Close this installation's Emacs and speech workers before repair or uninstall.
Remove it through Windows Settings > Apps > Emacsvox Windows. Personal data is
kept by default; optional cleanup choices are initially unchecked.

Please test

  • Install, hear the finish-page speech test, and launch from the Start menu.
  • Navigate the welcome screen and change a voice. Try hiding and reopening Welcome.
  • Check that your screen reader reads the wizard, options, completion and uninstall pages.
  • Report unclear instructions, missing speech or installation errors in
    the issue tracker, quoting the build above.

The complete CI run passed, including native installation,
shortcut launch, busy-process refusal, repair, failed-upgrade rollback and
uninstall preservation. CI does not check audible speech or screen-reader use.
Broader clean-machine acceptance, a successful second-build upgrade and full
optional-cleanup lifecycle testing remain before stable installer release.

Sources and build information

Sources are optional; you need only the installer to run Emacsvox.
Our matching source ZIP contains the exact
Emacsvox code, build scripts and runtime assets. SOURCE-DOWNLOADS.md
links to matching Emacs, library and Omnivox sources on their upstream hosts,
with checksums. Those large third-party archives are not mirrored here.
Keep these sources and locations available when redistributing the installer.

Source commit: 241350af233de48f075ea49fd921b6a747d55e5d. The original installer, source ZIP and
compiler provenance are unchanged from CI. Attached manifests and checksums
record the build and test evidence. These release downloads are public and
are not subject to CI artifact retention.

Emacsvox 2026.9.4

Choose a tag to compare

@bartbunting bartbunting released this 06 Sep 06:13

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.4 --- Current User-Visible Changes

Released notes are preserved in [[file:NEWS-2026.9.3][NEWS for Emacsvox 2026.9.3]].

** Source archives include their installation tools

Source archives now include the maintained tools under utils/. This repairs
installation and remote-launch failures caused by missing helpers in the
2026.9.3 source archive. Debian packages already included their runtime helpers.
Release preparation now installs and starts the extracted source archive in
an isolated test environment before marking the artifact ready.
The archive also omits a dangling Linux configuration link that prevented
extraction with Windows tar.
The source build's toolchain include now handles extraction paths containing
spaces.

** Debian packages are built after release publication

Release CI now builds the Debian package from the checked release source,
tests it in Ubuntu 26.04, and attaches the deb and checksum to the published
release. This retains the packaged Emacs 30.2 dependency and optional local
Omnivox recommendation.

Emacsvox 2026.9.3

Choose a tag to compare

@bartbunting bartbunting released this 06 Sep 05:28

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.3 --- Current User-Visible Changes

Released notes are preserved in [[file:NEWS-2026.9.2][NEWS for Emacsvox 2026.9.2]].

** Cycle buffers consistently in both directions

C-e n now cycles through every buffer with the same major mode instead of
toggling between two buffers. C-e p traverses the cycle in reverse, so
changing direction returns to the buffer just left. After either prefix,
bare n and p continue cycling. A key outside the temporary buffer-selection
controls ends cycling and performs its normal action.

** Agent Shell speaks yanked prompt text

Interactive text yanks in Agent Shell's input area now speak the inserted
text, including prefix-argument yanks. Image attachment and programmatic
yanks retain their existing behavior.

** Install Emacsvox with a Debian package

Emacsvox can be packaged as an architecture-independent deb, installing the
audio desktop under /usr/share/emacsvox with an emacsvox command. It requires
a packaged Emacs 30.2 or newer and recommends Omnivox; remote or WSL users can
omit the local Linux speech server. Installation preserves personal Emacs
configuration and never builds GNU Emacs or starts speech. The package includes
Lisp sources, generated autoloads, sounds and offline manuals.

** Use Emacs 30.2 or newer on every platform

Emacsvox now accepts Emacs 30.2 and newer on all platforms, including native
Windows and Ubuntu 26.04's distribution package. The launcher, configuration and guided
installers reuse it without building Emacs 31. DOM reading preserves Emacs
31 text behavior, and password feedback handles both versions' masking state.
When Emacs is missing, installers suggest a suitable apt package or a prebuilt
Windows release. The pinned Emacs 31.1 source build requires --build-emacs
on POSIX or -BuildEmacs on Windows; it no longer starts automatically.
Lua mode must be installed separately on Emacs 30 when wanted; Corfu terminal
popups on Emacs 30 need corfu-terminal.

** Native Windows x64 is supported without WSL

bin/emacsvox-install.ps1 reuses native Emacs 30.2 or newer or, with -BuildEmacs, builds GNU Emacs
31.1 with a private MSYS2 UCRT64 toolchain. It installs pinned Windows
Omnivox, prepares Emacsvox, and checks a fresh native GUI with both speech
lanes. -Check reports the plan without changing files.

bin/emacsvox.ps1 starts the isolated native desktop; -Diagnose checks its setup
and -Check verifies startup and speech. This is now a supported x64 desktop route with Emacs 30.2 or newer.
Native ARM64 and automatic optional-engine installation remain outside this route.
The installer does not require WSL or change personal initialization, system
PATH, Windows services, or JAWS configuration.

** Preview: install Emacsvox on a remote Linux host without local speech engines

bin/emacsvox-install --role remote-emacs reuses Emacs 30.2 or newer, or with
--build-emacs builds the pinned terminal-only Emacs on Debian/Ubuntu, and compiles Emacsvox without
installing Omnivox or requiring Windows interoperability. --check reports
prerequisites without changing files.

bin/emacsvox --remote supplies workstation connection settings before
startup. --remote --diagnose needs no live connection;
--remote --check verifies both remote speech lanes. Workstation speech still
requires a development Omnivox with --serve, a private token, and an SSH
reverse forward. The existing local WSL installer remains available.

** Back out of an engine's voice list one step at a time

After RET opens an engine's voices, q returns to that engine's row and
column. Another q leaves the Workbench. Returning works for empty or
refreshed voice lists and preserves unsaved routing changes; leaving the
Workbench still warns about those changes.

** Engine availability is distinct from routing policy

Browse and try voices reports engine availability before routing preferences.
The former /enabled/ label now says /Routing policy: allowed/; missing runtimes
remain /unavailable/ with their discovery reason visible in the row.

** Engine module operations show their progress

Downloadable modules say /not installed/ until installation starts. The
module manager shows and speaks /installing/, /uninstalling/, or /testing/
while an operation runs, including after refresh or reopening. Completion
and failure refresh the state, and reopening preserves the active operation
and its protection against starting another one.
The /Release state/ column describes the managed release; Browse and try
voices reflects the active server, which may use a different installation.

** Preview: remote Emacs can use workstation speech

The remote preview can connect remote Emacs to Omnivox on the workstation
through an authenticated SSH reverse forward. Engines and audio remain on
the workstation; foreground and notification connections recover separately
without replaying unfinished speech. Use omnivox-remote-connect,
omnivox-remote-status, and omnivox-remote-disconnect with the endpoint and
private token options described in Speech Backends. Windows services require
Windows OpenSSH for the forward when WSL uses NAT. Omnivox 1.7.1 release
binaries predate this feature.

** Aural Home retains context and unfinished work

C-e H remembers the source item as well as its buffer. Moving the source
cursor does not retarget explanation or remapping; C-c C-o in Home returns
to the captured item. Reopen C-e H from an ordinary buffer to adopt a new
target. Help and Home retain their return context and selected row.

Buffer rule editors preserve separate drafts for each source buffer, and
reopening an editor or the same tuned voice preserves unfinished changes.
Generated current-item remaps recheck their source before applying. Current
explanation and remapping no longer use unrelated earlier feedback; retained
historical presentations remain available through Recent Feedback.

** Consistent Aural navigation and actions

Settings lists speak the name and state together when moving vertically.
Child managers retain their row and column on reopening; Help returns to
its exact origin. C-c C-a offers named actions and S stops previews.
The rule editor now uses n/p for movement, N for Add and P for Preview.
RET opens details or a child list; profiles are applied with a.
Palette P auditions its voices, while RET browses them. Stopping or
interrupting an exact-voice sequence prevents late callbacks restarting it.

** Task groups and searchable destinations in Aural Home

Home begins with five expandable task groups. RET or TAB expands a
group, and / searches every named action, including collapsed groups.
Existing direct shortcuts remain available. Home announces the captured
source and unfinished draft count; Resume unfinished changes opens the
original editor. Voice browsing, speech rate, engine preference, and
notification controls are available beside the advanced managers.

** Browse, identify, and compare physical voices

RET on a Workbench engine opens its filtered voices; RET on a voice shows
details. P plays a named sample. A follows displayed order and skips
unavailable voices. B starts with the selected voice and offers a filtered
second voice, with an explicit Search all engines choice. Sample labels are
configurable through emacsvox-aural-preview-label-verbosity. Views retain
their own selected rows and columns, and fresh inventory updates open lists.
Exact-preview failures stop the sequence and report the requested voice's
failure instead of silently accepting another engine or voice.

** Temporary physical voice tuning and reviewed Keep result

Press t on a physical voice to experiment with its exact route, engine
parameters, and audio effects. Navigation and Help use the working voice.
Compare opening and working versions, copy a style, switch voices, or hear
three parameter values without saving. w chooses what to keep and opens a
review; C-c C-c in that review saves and applies the selected destinations.
Style and route stores remain separate, and incomplete saves or failed
application retain their completed steps for retry. Requested settings and
reported playback support are shown separately; exact effective values are
not claimed when the adapter does not report them.

** Guided changes to selected feedback

Home c opens Change this feedback for Current item; Recent Feedback C
uses the selected frozen record and asks for a part when needed. Change a
voice, add or replace a cue or tone, add a spoken label, or suppress one
component. P previews before choosing persistence, O replays the original,
m chooses matching criteria, and l chooses lifetime. Review the summary
before a or C-c C-c applies or saves. e opens the Advanced rule editor;
q retains the unfinished draft. Matching breadth and lifetime are described
separately, and failures preserve recoverable work.

** Task recipes and offline help

Aural interfaces offer C-c C-i for their offline task manual, with q
returning to the exact origin; Help also offers i and a manual link. Worked
recipes cover physical voices, pitch comparisons, Keep result, heading
voices, cues, blank-line tones, engine preference, and draft recovery.
Home Help starts with tasks. Training mode RET shows details and t
explicitly toggles explanations for the session. Tuner value prompts now
state when blank retains the current value, and option Actions hide operations
that cannot apply to the selected row.

Emacsvox 2026.9.2

Choose a tag to compare

@bartbunting bartbunting released this 03 Sep 12:26

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.2 --- Current User-Visible Changes

This patch release requires Emacs 31 or later and Omnivox 1.7.0 or newer. The
guided WSL2 installer pins the matching verified Omnivox 1.7.1 Windows x64 or
ARM64 archive.

Released notes are preserved in [[file:NEWS-2026.9.1][NEWS for Emacsvox 2026.9.1]].

** First-run engine selection and WSL setup

C-e d e now works before a machine routing profile has been saved. It uses
the live Omnivox policy as a transient session baseline and writes no file;
C-u C-e d e explicitly saves the baseline with the selected engine order.

The WSL2 installation guide now gives a concrete Linux-filesystem checkout
location, an update procedure that leaves the current speaking session running
until its replacement is ready, manual rebuild steps, separate Emacsvox and
Omnivox version checks, and immediate controls for slowing general speech and
echoed characters. The guided installer now fully rebuilds byte-code so an
update cannot retain generated Lisp from the previous source revision.

** Omnivox 1.7.1 integration

The supported speech-server baseline remains Omnivox 1.7.0. The guided WSL2
installer, downloadable engine modules, and clean source-built Windows runtime
now pin the published Omnivox 1.7.1 artifacts and matching source commit. That
release calibrates TGSpeechBox rate control to the Eloquence scale and reports
exact requested text anchors, enabling Emacsvox capitalization and timed
presentation while the TGSpeechBox module remains experimental.

The new M-x emacsvox-omnivox-manage-components command, also available as
I from Aural Home, presents a spoken list of built-in, downloadable, and
user-runtime speech engines. On WSL2 it can checksum-verify, stage, validate,
and install the version-matched Flite, RuTTS, Piper, or experimental
TGSpeechBox companions per user. It never downloads proprietary Eloquence,
DECtalk, or RHVoice runtimes or chooses a Piper voice model.

Engine checks now select an accessible result buffer, announce the number of
voices found, and report Omnivox's actual diagnostic when a check fails.
Manager-installed modules can be removed with u after explicit confirmation;
core engines, runtime bridges, and the verified download cache are preserved.
Removal now stops and restores the active Omnivox streams around deletion, so
Windows does not retain a lock on the companion executable. A narrowly
recognized helper-only residue from an interrupted removal can be removed on
the next attempt, and Emacs process-status text no longer hides the useful
diagnostic.

** Org link transitions

Opening an Org link into another buffer now plays one opening cue while leaving
the destination integration responsible for speaking its content.

** Agent Shell response speech

At the default response speech level, one completed turn now produces one
bounded automatic presentation instead of queueing every rendered answer
fragment separately. Automatic response speech shares navigation's
replacement domain, so ordinary Up and Down movement promptly interrupts it.
Full speech level retains its detailed per-block ordering, and explicit
C-c r reading still speaks the complete response.

** Notmuch search navigation

Speaking each search-result row no longer copies the complete Omnivox engine
and voice inventory. This substantially reduces allocation while navigating
large Notmuch result buffers and avoids the associated long garbage-collection
pauses. Foreground search completion now keeps its view summary and selected
message fields in separate semantic objects, avoiding an invalid presentation
rule error when the first result is announced.

Quitting a Notmuch view with q now interrupts message or search-result speech
before playing the close cue.

** Vertico history

Recalling minibuffer history while Vertico is active now speaks the recalled
entry once instead of repeating it during Vertico's following display update.

** Terminal completion

EAT no longer mistakes unchanged terminal history above the prompt for
completion candidates when an inline Bash completion redraw arrives in
multiple chunks.

** Voice tuning

Opening Voice Workbench without a saved routing profile now reuses its initial
voice-inventory snapshot instead of copying the complete inventory twice.

The voice tuner now names neutral post-synthesis values such as /unchanged/ and
/disabled/. Gain, pan, and filter endpoints are translated to their exact
Omnivox wire values instead of treating every dimension as the same linear
zero-to-nine scale.

Portable voice styles can now request Omnivox chorus. The default voice
palette also includes a telephone logical voice that combines the existing
high-pass and low-pass filters for a narrow-band sound without changing speech
duration or markers.

Omnivox average-pitch differences are gentler by default. Customize
=omnivox-average-pitch-contrast= to =1.0= for the historical curve, =0= for
neutral average pitch, or a value through =2.0= for stronger contrast.

** Image and PDF OCR

The Emacsvox OCR front end now uses PaddleOCR PP-StructureV3 by default. It
accepts images and PDFs, preserves reading order, emits table-aware Markdown,
and keeps engine diagnostics separate from recognized text. The user manual
includes the tested x86-64 WSL2 installation for =paddleocr[all]=. Language,
device, table, formula, orientation, unwarping, acceleration, and Python
selection are available as typed Emacs customization options.

Emacsvox 2026.9.1

Choose a tag to compare

@bartbunting bartbunting released this 02 Sep 02:43

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.1 --- Current User-Visible Changes

This corrective release requires Emacs 31 or later and Omnivox 1.6.4 or newer.
The guided WSL2 installer pins the matching verified Omnivox 1.6.4 Windows x64
or ARM64 archive.

  • The spoken ``Emacsvox is ready.'' checkpoint now waits for acknowledged
    initial engine inventory, routing policy, and logical voices, so normal first
    speech uses the restored engine preference. A bounded capability-ready
    fallback retains an audible checkpoint if routing does not complete.

  • Windows Omnivox staging now authenticates and prewarms the bounded eSpeak
    voice cache for its verified content-addressed data, avoiding repeated native
    voice discovery during later fresh Emacsvox launches.

  • Opt-in Aural Presentation diagnostics now correlate native submission IDs
    with Omnivox dispatch IDs and record actual dispatch send, first observed
    mixer-source consumption, and terminal playback timing. Omnivox's normal
    session log supplies the matching server admission, queue, synthesis, and
    playback-stage breakdown without a speech protocol change. Use =C-e d D=
    to toggle the sensitive, full-text diagnostic log for the current session.

  • The source-built Windows Omnivox runtime now uses the Omnivox 1.6.4 source
    and matching checksum-locked Piper companion. It includes RuTTS 6.3.3 and
    its built-in male and female Russian voices; RuLex remains excluded. Staging
    now finishes with live Flite and RuTTS voice discovery and WAV-synthesis
    checks against the Windows-local payload, and the WSL launcher forwards an
    explicit =OMNIVOX_RUTTS_HELPER= override.

Emacsvox 2026.9.0

Choose a tag to compare

@bartbunting bartbunting released this 01 Sep 01:55

-- mode: org --

Programming is the art of telling another human being what one wants
the computer to do. [[https://www.azquotes.com/quote/964459][(DEK)]]

Emacsvox News -- History Of User-Visible Changes

Maintained by Emacsvox Contributors.

  • Emacsvox 2026.9.0 --- Current User-Visible Changes

This version requires Emacs 31 or later. Omnivox 1.5.1 or newer is the
supported Omnivox baseline.

** Calendar Versioning And Release Safety

Emacsvox stable releases now use =YYYY.MONTH.PATCH= calendar versions. The
year and month identify a feature-release series rather than promising a
monthly cadence; corrective and backport releases retain the series they fix.
The repository-level =VERSION= file is canonical, and non-mutating validation
keeps Lisp package metadata, runtime output, and NEWS consistent with it.

The release workflow now validates a clean committed source tree, runs tests
and documentation gates, and creates a checked artifact before allowing an
explicit tag or GitHub publication step. See
=docs/adr/0002-calendar-versioning.org= for the policy.

Release tags are annotated but intentionally unsigned. Published releases
include the source archive, its SHA-256 checksum, and a provenance record that
names the exact checked source commit and artifact hash. The trust boundary
and the requirements for any future signing policy are recorded in
=docs/adr/0006-annotated-unsigned-release-tags.org=.

** Portable First-use Launcher

bin/emacsvox is now the one supported source-checkout launcher. It works
from any calling directory, honors an explicit EMACS setting or the
EMACS= selection in local.mk, rejects Emacs older than 31, defaults to the
recommended Omnivox speech server, and reports a missing server before opening
interactive Emacs. It always starts an isolated -Q session and loads the
tracked lisp/emacsvox-setup.el source; it never reads a maintainer-specific
or personal Emacs init file.

Run bin/emacsvox --diagnose for a non-audible selection report and
bin/emacsvox --check for the audible Omnivox smoke test. Explicit EMACS,
TTS_PROGRAM, and EMACSVOX_DIR overrides are supported.

The ambiguous root run and runq helpers have been removed. bin/evox is
a deprecated forwarding command for the Emacsvox 60 transition and will be
removed after this release; unlike its former personal workflow, it now has
the same isolated, Omnivox-first behavior as bin/emacsvox.

** Guided WSL2 Installation

bin/emacsvox-wsl-install --check now reports the complete recommended WSL2
installation plan without changing the machine. Running
bin/emacsvox-wsl-install uses an existing Emacs 31 or newer, or builds the
checksum-pinned stable GNU Emacs 31.1 release per user when necessary. It then
downloads and verifies the matching Omnivox 1.5.1 Windows x64 or ARM64 archive,
installs its intact runtime below Windows LocalAppData, compiles Emacsvox,
and performs the launcher and audible speech-server checks.

The installer never invokes sudo or edits a shell startup file. It prints
one package command for the user to review when Ubuntu or Debian build
dependencies are missing, stores routine compiler output in a private cache
log, and records the Omnivox executable as a data-only XDG configuration file.
Later --check runs recognize when the pinned release is already installed
and selected instead of directing the user to reinstall it.
The launcher still accepts OMNIVOX_PROGRAM as an explicit test override,
followed by the per-user release, a source-built development runtime, and
PATH.

After successful Omnivox capability negotiation, Emacsvox now speaks the
stable first-use checkpoint, ``Emacsvox is ready.'' Set
emacsvox-speak-ready-message to nil to disable that announcement.

** Native Windows Speech Under WSL

Emacsvox now owns its standalone native Windows speech stack. The bundled
windows-outloud and windows-dtk servers provide Eloquence and Software
DECtalk through native Windows bridges, while windows-play provides ordered,
interruptible auditory icons. Main and notification speech can use separate
native streams with configurable stereo positions.

The separate Eloquence and DECtalk capture helpers that expose those engines
inside Omnivox are now maintained and built in the Omnivox repository.
Emacsvox continues to own their pinned WSL build environment and stages the
verified helpers as part of make windows-omnivox.

Use make windows-speech to build the complete stack, or the
windows-audio, windows-outloud, and windows-dtk targets separately.
Select a server with M-x tts-select-server, configure native auditory icons
with emacsvox-windows-speech-configure-audio, and inspect dependencies with
emacsvox-windows-speech-diagnose. Proprietary Eloquence files and the
separately licensed DECtalk runtime are not stored in the repository.
Replaceable navigation transactions are discarded when newer input is
waiting, and adjacent formatting runs are now batched into one native
utterance per auditory-icon-delimited segment. This prevents rapid movement
from leaving obsolete synthesis work queued after the user stops.

** Omnivox Logical Voices And Replaceable Presentations

The Omnivox adapter now negotiates its bounded, versioned control channel and
discovers structured engine, capability, and physical-voice inventory without
injecting server events into speech. It registers Emacsvox logical voices and
normalized ACSS styles atomically with both main and notification processes.
Registration waits for each inventory response. An unconfigured logical voice
uses that process's advertised preferred engine, while explicit portable
selectors continue to resolve against its own installed voices.

On Windows, Omnivox now initializes WinRT and eSpeak together when available.
WinRT remains the default preferred engine; OMNIVOX_ENGINE=espeak changes the
preference without hiding WinRT from discovery or fallback.

Customize omnivox-logical-voice-preferences to give a logical voice ordered
exact, engine-default, or property selectors. Exact selectors retain separate
engine and native voice IDs; property selectors resolve against each machine's
actual inventory. Missing engines and voices degrade through configured
alternatives, and unresolved definitions remain visible in
omnivox-logical-voice-registration. Run
omnivox-register-logical-voices after changing preferences at runtime.
Semantic preference keys such as voice-bolden follow their current generated
ACSS voice binding, so users do not need to discover or hard-code generated
voice symbols.

Omnivox voice changes now carry their logical voice ID into the legacy queue.
Servers advertising logical_voice_routing use the registered engine and
physical voice for following queued spans, while missing bindings fall back to
the preferred engine. Older servers ignore the additive directive and retain
their existing pitch behavior.

Current Emacsvox uses presentation_timeline_v3 for complete structured Aural
delivery. Timelines carry an explicit ordered, replaceable, or urgent policy;
large payloads use bounded multipart framing and are validated before
admission. A newer valid replaceable timeline immediately cancels queued,
synthesizing, and buffered output only in its matching replacement domain.
Ordered, urgent, legacy, and differently keyed output remain intact. The
reader's short coalescing delay applies only to matching replaceable work;
ordered and urgent timelines execute immediately. emacsvox_tx remains the
bounded legacy fallback for a server without timeline v3.

Presentation tones now remain usable with a legacy speech server. When the
server lacks the explicit presentation-tone protocol, Emacsvox lowers both
insert and overlay tones to its ordered legacy tone command instead of
rejecting the surrounding presentation. The fallback cannot preserve overlay
timing and rounds a fractional pitch to the nearest hertz.

Queued logical voices now re-resolve after a runtime missing-voice,
unavailable-engine, or synthesis failure and retry the identical chunk on the
configured fallback. Each chunk is limited to four attempts, and stop
generation checks prevent cancelled speech from starting a fallback attempt.
Runtime failures also feed persistent engine health circuits. Cooldown and a
single recovery probe keep ordinary requests on healthy fallbacks until the
preferred engine recovers. Immediate speech and isolated-letter commands use
the current global routing policy and health snapshot, but do not carry a
named logical voice.

Press C-e d e to put one available nonfailed engine first in the global
preferred order for the current Emacs session. Use C-u C-e d e to save that
order atomically, or M-x emacsvox-aural-restore-saved-engine-order to reapply
the saved order. The command preserves every explicit logical-voice route,
the fallback policy, and the relative order of the other engines; explicit
routes still take precedence. It changes subsequent speech without stopping
audio already playing.

** TTS Prefix Map Rename

The generic speech prefix map is now emacsvox-tts-submap. The former
emacsvox-dtk-submap name has been removed without a compatibility alias.
User configuration that binds or inspects that map must use the new name.
The default C-e d key sequence is unchanged.

** Aural Presentation

Emacsvox semantic aural presentation can combine speech, device-independent
voices, auditory cues, pauses, and portable stereo placement before or after
content. A fixed internal compatibility baseline preserves existing voices
and icons. Users compose ordered Presentation Options above it and can add
stronger personal, session, or buffer overrides. Org's optional heading-level
labels, section cues, and visibility announcements are Presentation Options.

The =emacsvox-show-point= line marker is now configurable through
=emacsvox-show-point-presentation=. Use...

Read more