14.3.2 Optional Omnivox Engines

The ordinary WSL2 archive is the core, not a claim that every supported engine is installed. Companion archives provide larger, experimental, or architecture-specific engines. Some require a separately supplied runtime or chosen voice data before they can speak.

  1. Inspect running engines

    Open C-e H v b to browse engines. The equivalent command is:

    M-x emacsvox-omnivox-manage-components RET
    

    Opening uses the current speech inventory without waiting for file checks or fresh discovery. Optional engines missing from that inventory stay visible as not reported so management controls remain reachable. v browses voices; RET opens details.

    Details begin with a short status and voice actions, with Browse voices selected. Matching main/notification evidence is combined and problems remain near the top. Startup settings and Diagnostics start folded; RET toggles sections. Selection and folding are remembered per engine.

    Available describes discovery from the current worker. An older check does not alone make it unavailable. Previously available belongs to a stopped or replaced worker. Details announce the engine before requesting newer inventory in the background when its check is over five minutes old or belongs to another worker. File checks likewise run in the background where requested. Streams differ identifies different availability, policy, health, or voice identities. A bridge’s presence does not establish its runtime; Not checked does not mean missing. Diagnostics shows each worker’s paths, inventory time, runtime discovery, and health.

    Required runtime appears near the top when native libraries are needed. Successful DECtalk discovery, for example, confirms DLL and dictionary loading. Matching worker evidence is combined, differences shown separately, and failures retain their reasons. Disabled does not mean missing, and retired-worker evidence does not establish current status. Opening/refreshing details uses worker discovery without invoking the separate release installer.

  2. Browse voices and variants

    Browse voices combines reported voices and the installed library, including disabled downloads. This dedicated browser preserves Workbench’s filters and staged edits. Languages have expandable headings with counts; RET toggles. A one-language list starts expanded and selection/folding are remembered. RET or P on a voice auditions an exact sample, x shows details, and t opens an unsaved experiment. Saving asks for a palette destination; browsing or previewing changes no palette. q returns to selected engine details.

    Library data loads asynchronously with quiet refresh. Installed identifies library entries versus supplied voices. Enabled is the desired selection for the next Apply. Active describes eligibility on both streams, main only, notification only, or neither. Unknown means missing/inconsistent evidence; R refreshes. Active does not measure model residency or prove listening. Samples use main speech; inactive downloads need enablement and Apply first.

    Voice variants in eSpeak details lists the running worker’s bundled variants. Choose a base with b, browse with arrows or C-n~/~C-p, and audition with P or RET. Sorting is alphabetical by displayed name, ignoring capitalisation. The older p preview key also remains. Variants require no download, enablement, saving, or speech restart.

    u, Use in palette, asks for palette and named entry, then opens the voice editor with the variant preferred, retaining fallbacks and tuning. Preview with P, then w for Save and apply, or save to the collection without selecting. Editing a built-in creates a personal copy; Use at Startup remains separate. For Max as ordinary reading, choose the English base with b, select Max, press u, and select the palette’s default. Preview/save there. The same default is alongside indent and other entries in normal palette editing.

    V instead proposes the base/variant for every named voice. Create or update a personal palette, compare, then save; shared adjustments and existing fallback tuning survive. Editing Named Voices explains review and recovery. q returns to variants with selection retained; v opens the base browser. Saved references remain valid. Older workers lacking on-demand variants report the need for an update.

  3. Install and activate voice packages

    Installing files, enabling a voice, and activating it are separate steps. Get more voices in Piper, Flite, MBROLA, or RHVoice details opens the reviewed catalogue. Piper groups language, voice name, and quality; Flite offers AWB/RMS. Single-quality voices appear directly under their language, with another group only for multiple qualities. RET opens a group/model and q returns. / searches all models by name or language beyond the current group. Details show size, source, terms, and storage. s shows/hides speakers sharing a model; it downloads once while individual speakers can be enabled separately.

    i installs asynchronously without speaking each progress update. Omnivox checks files and validates the voice before adding it disabled. In the catalogue, e toggles enablement, asking which speaker for a shared model, and a reviews Apply to both streams. Enablement alone does not restart. Model details also show these actions near installed/enabled status.

    Installation/Apply confirmations offer yes and no through completion: y TAB RET confirms, empty RET declines, and C-g cancels. c requests cancellation; wait for cleanup. The shipped catalogue contains reviewed, pinned, natively validated models. Unresolved terms or unsupported configurations are withheld; it is not a live catalogue of every upstream download.

    MBROLA offers US1, US2, and US3, with British English en1 included. Downloads need the updated separately configured development companion on Linux/Windows. Older hosts keep Piper/Flite catalogues and report missing MBROLA support. Each database carries its licence and README. Initial installation retains en1 enabled unless explicitly disabled. Multiple enabled databases can serve different entries/streams; each request opens its selected database rather than keeping all enabled databases resident.

    RHVoice offers Alan (Scottish English), BDL/CLB (American English), and Ksp (Indian English), requiring an updated host and separately installed compatible RHVoice runtime selected in engine settings. Each package contains its English data and upstream notices. Enable and Apply combines managed voices with external ones, including SLT. A conflicting external copy is reported, not replaced. Removal affects the managed package, not external voices or the runtime.

    In Browse voices, + changes desired enablement, and a reviews Apply. The operation checks both replacement workers, restarts main and notification speech, and verifies them before committing. Failure restores both previous configurations. Disabling preserves files and palette references. Enabled changes immediately but Active awaits Apply.

    After installation, l browses, + enables, and a reviews managed engines and both streams. Installation alone neither loads a voice nor changes speech. Downloads belong to you in Omnivox’s per-user storage across executable upgrades. Failed/interrupted operations retain files for inspection; automatic resume and package updates are not provided. Uninstall cleanup has its separate explicit resume action below.

  4. Remove or import managed voices

    Disable every speaker in a downloaded Piper, Flite, MBROLA, or RHVoice package and Apply before C-c u in its voice browser. Review voices, size, and retained palette references before confirming. Files still needed by other sessions remain. Built-in SLT/en1, imported originals, and engine runtimes cannot be removed here. C-c U reviews incomplete cleanup for explicit resumption.

    The voice browser’s d opens downloads and b includes built-in Flite SLT. i imports a completed native-validation operation by ID, initially disabled. Imported files remain at their validated paths and must stay there. This is an advanced import, not the catalogue installation or a file-selection wizard. C-c r shows the last Apply result, R refreshes, and q returns.

    Apply needs separate main/notification streams from the updated local host. Clear explicit Piper/Flite file overrides before applying those engines’ library voices. Uncertain native cleanup or commit blocks another Apply and stays visible in its result.

  5. Configure and check an engine

    Under Startup settings, Edit file settings opens the bundled local launcher’s engine option in Customize. Piper accepts one ONNX model and matching JSON; Eloquence/DECtalk accept runtime DLLs; Flite accepts external .flitevox files with individual Load file switches. Use absolute paths as seen by Emacs; WSL converts them for the selected Windows executable. Keep companion files beside their runtime/model. Remote settings must be changed on the speech host.

    These are explicit overrides, not the complete installed-voice inventory. An empty file selection does not mean that no voices are available: the library or launcher defaults may still supply them. A manual Flite file list overrides its installed library.

    Check configured engine runs independent discovery using the local launcher’s current configuration, limited to 30 seconds. It retains target, voices, and diagnostics but neither speaks a sample nor replaces live workers. A failed Flite file can leave built-in SLT usable; incomplete discovery reports fewer than the selected files plus SLT. Duplicate external voice names are unsupported.

    File settings affect newly started workers. Save in Customize, then explicitly choose Restart local speech to interrupt this session’s two streams when ready. Refresh live voices afterward. Disabling a Flite file preserves data/references; new helpers omit it, while existing helpers keep it until restart. Built-in SLT stays loaded and each worker loads its own enabled external voices. These switches are not a general per-voice policy or memory measurement.

    OMNIVOX_PIPER_MODEL, OMNIVOX_FLITE_VOICES, runtime environment settings, and legacy EMACSVOX_ECI_DLL=/=EMACSVOX_DECTALK_DLL override file options and are identified in details. Clearing an option returns to discovery/defaults. Direct-native executable launches do not consume the bundled launcher’s options.

  6. Manage the installed Omnivox release

    This manager changes versioned release files, not the running workers or a voice library’s active configuration. On WSL, choose Manage installed release and check Installation being managed and Location. That target can differ from a development build or remote speech server. Installed engine files reports presence; Check release engine tests runtime initialisation and voice discovery for that release.

    Release installation and removal keep current speech running and do not select another speech server. They do not automatically restart workers. A helper in use causes removal to fail visibly; close sessions using that release before retrying. This differs from the library’s explicit Apply and the file editor’s Restart local speech. Legacy direct-operation restart preferences do not change the boundary of this explicit installed-release view.

    Use Install engine and confirm to verify and install a version-matched component. Progress belongs to the release view while current-worker status stays separate. Refresh release files runs a bounded asynchronous file check; Check release engine discovers voices without auditioning. Refresh after a changed target before retrying. Completion gives a short notice without selecting another buffer; Read last result opens retained complete output.

    Within details, TAB~/~S-TAB moves among actions and sections, RET activates or toggles, and arrows read visible fields. q returns to the selected engine row, h to Emacsvox settings, and ? to Help. Selection and expansion survive background refresh. Refresh status or g in current-worker details asynchronously requests both live inventories, not a release-file check.

    Uninstall engine under Engine installation removes only manager-installed Flite, RuTTS, Piper, or TGSpeechBox components. It does not remove the core, built-in engines, or runtime bridges. The whole managed component directory is removed: move any personal files elsewhere before confirming. External runtimes/models outside it are untouched and retain their supplier’s removal procedure. Verified downloads remain cached; Install engine reuses a valid cache for reinstallation.

    Operations are asynchronous. The view shows uninstalling or testing and refreshes on completion or failure. A failed listing retains its last records and the error while live discovery remains independently available. If a helper is locked, close the sessions using it and invoke the removal action again. An interrupted removal with only the expected helper left can resume; directories containing unrecognised files remain protected.

    etc/omnivox-components.conf pins names, sizes, and SHA-256 hashes to the installed core version. The WSL installer rejects mismatched cores, unsafe archive layout, missing source provenance, and helpers that fail staged discovery. Components are installed under the same versioned Windows LocalAppData release. It does not invoke sudo or edit shell startup.

    Component and data boundaries differ:

    • Flite includes compact English SLT without an external runtime.
    • RuTTS includes compact Russian voices without an external runtime.
    • Piper installs engine support; a usable voice also needs a reviewed ONNX model and model card, configured separately or through supported library management.
    • TGSpeechBox is in the Windows x64/ARM64 core with multilingual formant voices, calibrated rate, and exact anchors for capitalisation/timed presentation. Matching standalone components allow reinstallation.
    • RHVoice, Eloquence, and DECtalk bridges do not acquire their external runtimes. Supply compatible runtimes under their distribution/licensing terms. RHVoice’s reviewed catalogue can separately download voice and language packages on a supporting local host, as described above. This is distinct from runtime acquisition and preserves external installations. Eloquence and DECtalk runtime, dictionary, and licence material remain user-supplied.

    For terminal management, use ./bin/emacsvox-omnivox-components --list, then, for example, ./bin/emacsvox-omnivox-components --install flite. Multiple engines can follow --install or --uninstall. ./bin/emacsvox-omnivox-components --uninstall flite removes the managed directory while retaining its archive. Restart deliberately when the running session needs newly installed configuration, and use --test ENGINE or the release view’s Check release engine to check that target. Direct release assets remain available for maintenance/recovery, but the manager is the ordinary component-selection route.