[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacspeak] Emacsvox and Omnivox: an early experiment now available to try



 

Hello all,

 

There has been some interest in Emacsvox and Omnivox, so I thought it might be useful to describe where the projects currently stand and make them available to anyone who would like to experiment with them.

 

Emacsvox is an experimental Emacs 31 audio desktop derived from Emacspeak:

 

https://github.com/bartbunting/emacsvox

 

Robert Melton began Emacsvox as a modernization of Emacspeak for current Emacs and Emacs Lisp. My repository started from Robert’s work but has since diverged substantially.  I do not want to imply that Robert has endorsed all the directions I have taken.

 

Emacsvox is not a drop-in replacement for an existing Emacspeak configuration. It requires Emacs 31 or newer, uses its own emacsvox-* namespace, and has made some incompatible changes while replacing obsolete APIs and modernizing the Lisp.

 

Much of my work has concentrated on current Emacs packages and workflows, including Org, Notmuch, Magit, EAT, Agent Shell, Vertico, Corfu and others.

 

The largest architectural experiment is Aural Presentation. Its purpose is to separate the meaning of an event or object from the way it is presented. A package can identify something as a heading, unread message, tool result, folded section or warning without permanently deciding which voice, sound, tone, pause or spatial position must represent it. Users can then adjust that presentation globally or for a particular package, mode, session or buffer.

 

Omnivox is the accompanying cross-platform speech server:

 

https://github.com/bartbunting/omnivox

 

Omnivox also began with Robert’s work. I initially developed it further because I wanted responsive speech while running Emacs inside WSL2, with Windows performing synthesis and audio playback.

 

On Windows, Omnivox supports the native WinRT voices and eSpeak. It can also use a locally installed Freedom Scientific Eloquence runtime and an optional Software DECtalk helper. On macOS it supports AVSpeechSynthesizer and eSpeak, while GNU/Linux uses eSpeak, with Piper available as an experimental option.

 

Omnivox retains the traditional Emacspeak line protocol and includes an adapter for upstream Emacspeak. The additional Emacsvox protocol is negotiated separately. It adds facilities such as logical voice discovery, structured speech and sound timelines, selective cancellation, playback markers and callbacks.

 

These facilities make some useful behaviours possible, but they also introduce considerably more complexity than the deliberately small original Emacspeak protocol. I regard this as an experiment in a different direction, not an assertion that the original design was wrong.

 

Both projects are still at an early stage. There will certainly be bugs, rough edges and assumptions inherited from my own setup. Nevertheless, they are not merely demonstrations: I use Emacsvox and Omnivox every day as my normal Emacs and speech environment.

 

I should also be transparent about how the work has been produced. I have used Agent Shell and Codex extensively during the development of both projects. This has greatly accelerated the work and may also have introduced some of the rough edges associated with what is now called “vibe coding.”

 

I do not regard generated code as evidence of correctness. Both projects are backed by extensive automated test suites and build, documentation and release checks. Even so, tests only verify the assumptions encoded in them. They cannot replace human review or real use across a wider range of machines and configurations. That is another reason I describe these projects as experiments and welcome independent testing and criticism.

 

My principal configuration is Emacs running inside WSL2 with Omnivox running natively on Windows, so that remains the best-exercised route.

 

I have now revised and published the Emacsvox manual to the point where other people should be able to attempt an installation:

 

https://bartbunting.github.io/emacsvox/

 

The manual describes the platform routes, prerequisites, installation, first-speech checks and recovery steps. It includes a straightforward WSL2 route using a pre-built Omnivox archive and a bounded native-Windows trial. Native Windows Emacsvox remains explicitly marked as a preview because the complete combination still needs fresh-machine testing.

 

I have also published Omnivox 1.4.1 binary archives for Windows x64 and ARM64, macOS Intel and Apple silicon, and GNU/Linux x86-64:

 

https://github.com/bartbunting/omnivox/releases/tag/v1.4.1

 

The archives include the required adjacent runtime data, licence information and published SHA-256 checksums. The Windows and macOS archives are not code-signed, which is documented so that nobody is encouraged to weaken local security policy merely to try them.

 

I am putting this forward because there has been interest, not because I want to compete with Emacspeak, fragment its community or step on anyone’s toes. I hope it will be received in that spirit.

 

Testing reports, bug reports and technical discussion would be very welcome, especially from configurations different from mine. Contributions are also welcome from anyone who would like to become involved. That might mean code, documentation, testing another platform, adding a speech engine, improving an integration, investigating a bug or simply reporting where the instructions were unclear. There is no expectation that a contribution needs to be large.

 

I would also be interested in comparing approaches with other current Emacspeak-related work. There may be useful ideas and fixes that can be shared even where the projects make different architectural choices.

 

Finally, none of this would exist without T. V. Raman’s extraordinary work in creating and sustaining Emacspeak and establishing the audio-desktop ideas on which it depends. Robert Melton’s Emacs modernization and original cross-platform work gave me the practical foundation from which to begin. My sincere thanks to both of them.

 

Kind regards,

 

Bart

 



|Full archive May 1995 - present by Year|Search the archive|


If you have questions about this archive or had problems using it, please contact us.

Contact Info Page