Home

Awesome

<img src="assets/voluble.png" height="56px" width="56px"> Voluble - let your GNOME desktop speak to you.</img>

<img src="https://raw.githubusercontent.com/andyholmes/gnome-shell-extensions-badge/master/get-it-on-ego.svg?sanitize=true" height="100" align="right"> Voluble is a simple GNOME shell extension that brings a natural-sounding, human-like voice to the desktop notifications used to alert the GNOME user of desktop events, appointments, e-mails, etc. Here is an example video:

https://github.com/QuantiusBenignus/voluble/assets/120202899/2e0d9d5e-0c18-4f8c-9219-11b3bc0e5a2d

Features:

Voluble is not an accessibility tool, it does not aim to replace tools like Orca which expose functionality needed by users with disabilities. It simply enhances the desktop notifications by reading them outloud, in the absence of (or in addition to) any sound that might accompany the notification. This way, the user will be properly alerted and will not risk missing even the most transient of notifications, clearly hearing what the computer has to say, even when not looking. A reason for creating this extension has been the desire to hear the contents of notifications for appointments and to-do's from the Joplin note-taking app. A video demonstration.

NEW - a feature enhancement for users of Joplin. Have a summary of the tasks due in the next 12 hours read outloud at the start of a desktop session. Uses the optional python script joplintoday.py.

Notification - Tasks in the next 12 hrsNotification Audio
joplin-tasks-today<video src="https://github.com/QuantiusBenignus/voluble/assets/120202899/c37329c5-93fb-4a99-9e34-3bad7c8cde5a" width=160/>

Once Voluble is installed (see Quick Start), you can simply invoke the python script by adding it to you startup applications. On most Linux desktops, placing a .desktop file in ~/.config/autostart/ will do the trick. Here is a sample ~/.config/autostart/joplintoday.desktop file:

[Desktop Entry]
Type=Application
Exec=/home/YourUsername/.local/bin/joplintoday.py
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name=JoplinToday

(Linux only, will likely not work with encrypted database).

Piper

Unlike the default installation of the afforementioned Orca (and speech-dispatcher in the background), Voluble uses a modern neural text-to-speech (TTS) engine called Piper. Among the multiple (and growing) choices of human-sounding neural TTS options, Piper is fast and lightweight for its decent quality (a quantum leap from the default espeak-ng in speech dispatcher). We can set up Voluble with Piper in two ways (not mutually exclusive):

Quick Start

 ln -s ~/FOLDER_WITH_EXTRACTED_PIPER/piper ~/.local/bin/piper
git clone https://github.com/QuantiusBenignus/voluble && cd voluble && \
unzip voluble@quantiusbenignus.local.zip -d $HOME/.local/share/gnome-shell/extensions/ && \
gnome-extensions enable voluble@quantiusbenignus.local

cd ~/.local/bin && wget https://github.com/QuantiusBenignus/voluble/blob/main/voluble  && chmod +x voluble

That is it, now the extension should work by speaking out-loud in human-like voice all that the computer has to say via notifications.


Speech Dispatcher Integration

<details> <summary> <h4>Optional Step (click to expand)</h4></summary>

Speech Dispatcher is a core accessibility tool designed to facilitate speech synthesis for people with visual impairments. It acts as a bridge between client applications (programs that produce spoken text) and software speech synthesizers (programs that convert text into speech). Speech Dispatcher would typically come preinstalled in many Linux distributions with the espeak-ng TTS engine as the default. The result does not sound good at all when compared with the quality of the new neural TTS engines. Here is a comparison, justifying the integration of Piper with speech dispatcher:

With espeak-ngWith Piper
<video src="https://github.com/QuantiusBenignus/voluble/assets/120202899/3a84d722-e9ef-4120-afff-0b9224e188a3" width=160/><video src="https://github.com/QuantiusBenignus/voluble/assets/120202899/fea8bce4-9fcc-430d-a4d9-d1a75add8b9f" width=160/>
</details>

Tips & Tricks

The Mute function will keep notifications silent but is made by design to not affect the "Read Selection" button - selected text will be read nontheless. Since we have not implemented an "Interupt TTS" GUI action, if we goof up and select so much text that having it read out-loud for minutes fills us with regret, our salvation (or is it punishment) is to use the following command in the terminal or in the run window (ALT+F2):

pkill --signal SIGINT "[a]play"

(provided that we did not modify the voluble script to use something other than play or aplay). We should be careful to not omit the quotes or we may unintentionally kill a process named display for example. If we find yourselves too often a subject to this punitive action, creating an alias oops='pkill --signal SIGINT "[a]play"' in .bashrc (.zshrc, etc.) will help.

To-Do

Credits