Friday, December 18, 2015

Soundscapes On The Emacspeak Audio Desktop

1 Executive Summary

Emacspeak module soundscape adds the ability to automatically switchSoundscapes based on the current buffer. A Soundscape can be any
continuously playing stream of audio; in practice, using nature sounds
that repeat softly in a pseudo-random manner appears to be
effective. Soundscapes are activated based on the currently activeEmacs Major Mode and as a consequence directly mirror the user's
current activity. The present implementation uses Python packageBoodler to generate soundscapes.

2 Usage

Note that package soundscape.el does not have any Emacspeak
dependencies. See the package documentation for details on installing
and configuring Boodler.

You can experiment with installed Boodler agents using commandsoundscape and soundscape-stop. You can enable and disableautomatic soundscapes using command soundscape-toggle. The
currently active default Soundscape theme can be inspected via commandsoundscape-display — this produces a buffer that lists the
currently defined /major-mode -> Soundscape mapping.

Package soundscape.el considers the inheritance relationship among
Emacs major-modes when computing the set of soundscapes to
activate.As an example, eww-mode inherits from special-mode — as
a consequence, two soundscapes (LightWind and BackgroundWaves)
become active when reading Web content.

3 Default Major-Mode->Soundscape (Mood) Mapping:

Here is a table showing the mapping of major-mmodes to Soundscape
moods at the time of writing. For readability, I have stripped out thepackage-name for these soundscapes.

4 Soundscape Research

I implemented package soundscape.el to create a platform that would
let me experiment with different tools that aid in
concentration. After using Soundscapes for about a week, I have also
found that it reduces some of the fatigue that results from having to
listen to synthetic text-to-speech for extended periods.
The true value (if any) of this package will be a function of how heavily
I find myself using it six months from now — as a metric, complete
success might mean that in mid-2016, I still have automatic
soundscapes turned on.
As I type this article in Emacs org-mode, I hear the sound of
water-drops falling softly in the background, and I take note
that I have not switched tasks for the entire time I have spent
writing this article.

Other success metrics — harder to measure — might include how
effective Soundscapes are in helping the user stay focused on a
given activity for extended periods of time. In an ever-connected
world buzzing with a constant stream of distractions ranging from
incoming email and instant-messages to a flood of twitter updates,
this is likely the most relevant metric.

Instantiating a plugin prompts for its arguments and displays the
instantiated plugin in a new buffer.

This plugin can then be applied to a running MPlayer media
stream by pressing a.

The effect can be deleted by pressing d.

Plugin parameters can be edited by pressing e with point on
the parameter to edit.

3 Interfacing With SoX

Module sox.el implements an Audio Workbench using SoX. Moduleladspa.el integrates with that module by allowing the addition ofladspa as a supported SoX effect. Adding a ladspa effect results
in a completion interface for picking one of the available Ladspa
plugin; once selected, that plugin then prompts for its parameters as
needed.

Monday, November 30, 2015

Generating Spatialized Auditory Icons Using MPlayer And Ladspa

1 Executive Summary

The Emacspeak GitHub repository now includes a new auditory icon themepan-chimes — these are the result of spatializing theme chimes.

2 Fun With Ladspa, MPlayer and Library tap-plugins

Here is the result of some fun with MPlayer and Ladspa over the
Thanksgiving weekend. Package tap-plugins provides a number of
interesting Ladspa plugins; one of these, tap_reverb is used in
module emacspeak-m-player to provide a variety of predefined
effects.

Library tap-plugins also includes Ladspa filter tap_autopan that
pans the input audio signal — see that plugin's documentation for
details.

The Linux media player mplayer allows the injection of ladspa
plugins in its processing chain.
Combining these, I have created theme pan-chimes that provides a
spatialized version of sound-theme chimes.

See script apply-pan.sh in the Github repository to see how this new
theme was generated.

2 Sample Usage

Persist the currently playing News stream by invoking commandemacspeak-m-player-persist-stream bound to C-e ; \. This lets
you launch a second stream via Emacspeak media key C-e ; rather
than controlling the currently playing stream.

Now Emacspeak M-Player commands will control the most recently
launched stream; you can once again invoke commandemacspeak-m-player-persist-stream if you wish.

The previously launched (and still playing) News stream is now in a
buffer named *Persistent-...*. Commandemacspeak-wizards-view-buffers-filtered-by-m-player-mode can be
used to list buffers that hold a live m-player instance. It is
bound to b in emacspeak-m-player-mode. I also bind this command
to C-; ; in my global keymap.

You can make an M-Player instance current by switching to its
buffer and invoking command emacspeak-m-player-restore-process
bound to / in emacspeak-m-player-mode.

1 Investors Note:

With several prominent tweeters expanding coverage of#emacspeak, NASDOG: ESPK has now been consistently trading over
the social net at levels close to that once attained by DogCom
high-fliers—and as of Nov 2015 is trading at levels close to
that achieved by once better known stocks in the tech sector.

2 What Is It?

Emacspeak is a fully functional audio desktop that provides
complete eyes-free access to all major 32 and 64 bit operating
environments. By seamlessly blending live access to all aspects
of the Internet such as Web-surfing, blogging, social computing
and electronic messaging into the audio desktop, Emacspeak
enables speech access to local and remote information with a
consistent and well-integrated user interface. A rich suite of
task-oriented tools provides efficient speech-enabled access to
the evolving service-oriented social Internet cloud.

4 Establishing Liberty, Equality And Freedom:

Never a toy system, Emacspeak is voluntarily bundled with all
major Linux distributions. Though designed to be modular,
distributors have freely chosen to bundle the fully integrated
system without any undue pressure—a documented success for
the integrated innovation embodied by Emacspeak. As the system
evolves, both upgrades and downgrades continue to be available at
the same zero-cost to all users. The integrity of the Emacspeak
codebase is ensured by the reliable and secure Linux platform
used to develop and distribute the software.

Extensive studies have shown that thanks to these features, users
consider Emacspeak to be absolutely priceless. Thanks to this
wide-spread user demand, the present version remains priceless
as ever—it is being made available at the same zero-cost as
previous releases.

At the same time, Emacspeak continues to innovate in the area of
eyes-free social interaction and carries forward the
well-established Open Source tradition of introducing user
interface features that eventually show up in luser environments.

On this theme, when once challenged by a proponent of a crash-prone
but well-marketed mousetrap with the assertion "Emacs is a system from
the 70's", the creator of Emacspeak evinced surprise at the unusual
candor manifest in the assertion that it would take popular
idiot-proven interfaces until the year 2070 to catch up to where the
Emacspeak audio desktop is today. Industry experts welcomed this
refreshing breath of Courage Certainty and Clarity (CCC) at a time
when users are reeling from the Fear Uncertainty and Doubt (FUD)
unleashed by complex software systems backed by even more convoluted
press releases.

5 Independent Test Results:

Independent test results have proven that unlike some modern (and
not so modern) software, Emacspeak can be safely uninstalled without
adversely affecting the continued performance of the computer. These
same tests also revealed that once uninstalled, the user stopped
functioning altogether. Speaking with Aster Labrador, the creator of
Emacspeak once pointed out that these results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".

5.1 Note from Aster,Bubbles and Tilden:

UnDoctored Videos Inc. is looking for volunteers to star in a
video demonstrating such complete user failure.

6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –seehttps://github.com/tvraman/emacspeak you can visit
Emacspeak on the WWW at http://emacspeak.sf.net/. You can subscribe
to the emacspeak mailing list emacspeak@cs.vassar.edu by sending
mail to the list request address
emacspeak-request@cs.vassar.edu. TheEmacspeak Blog is a good source
for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available via
Git from GitHub at Emacspeak GitHub .

7 History:

Emacspeak 43.0 brings even more end-user efficiency by leveraging the
ability to spatially place multiple audio streams to provide timely
auditory feedback.

Emacspeak 42.0 while moving to GitHub from Google Code continues to
innovate in the areas of auditory user interfaces and efficient,
light-weight Internet access.

Emacspeak 41.0 continues to improve
on the desire to provide not just equal, but superior access —
technology when correctly implemented can significantly enhance the
human ability.

Emacspeak 40.0 goes back to Web basics by enablingefficient access to large amounts of readable Web content.

Emacspeak 39.0 continues the Emacspeak tradition of increasing the breadth of
user tasks that are covered without introducing unnecessary
bloatware.

Emacspeak 38.0 is the latest in a series of award-winning
releases from Emacspeak Inc.

Emacspeak 37.0 continues the tradition of
delivering robust software as reflected by its code-name.

Emacspeak 36.0 enhances the audio desktop with many new tools including full
EPub support — hence the name EPubDog.

Emacspeak 35.0 is all about
teaching a new dog old tricks — and is aptly code-named HeadDog in
on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles)
established a new beach-head with respect to rapid task completion in
an eyes-free environment.

Emacspeak 30.0 AKA SocialDog brings the Social Web to the
audio desktop—you cant but be social if you speak!

Emacspeak 29.0—AKAAbleDog—is a testament to the resilliance and innovation
embodied by Open Source software—it would not exist without the
thriving Emacs community that continues to ensure that Emacs remains
one of the premier user environments despite perhaps also being one of
the oldest.

Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace of
development evinced by Open Source software.

Emacspeak 27.0—AKA
FastDog—is the latest in a sequence of upgrades that make previous
releases obsolete and downgrades unnecessary.

Emacspeak 26—AKA
LeadDog—continues the tradition of introducing innovative access
solutions that are unfettered by the constraints inherent in
traditional adaptive technologies.

Emacspeak-11.0 –code named Aster– went the
final step in making Linux a zero-cost Internet access solution for
blind and visually impaired users.

Emacspeak-10.0 –(AKA
Emacspeak-2000) code named WonderDog– continued the tradition of
award-winning software releases designed to make eyes-free computing a
productive and pleasurable experience.

Emacspeak-9.0 –(AKA
Emacspeak 99) code named BlackLab– continued to innovate in the areas
of speech interaction and interactive accessibility.

Emacspeak-8.0 –(AKA Emacspeak-98++) code named BlackDog– was a major upgrade to
the speech output extension to Emacs.

Emacspeak-95 (code named Illinois) was released as OpenSource on
the Internet in May 1995 as the first complete speech interface
to UNIX workstations. The subsequent release, Emacspeak-96 (code
named Egypt) made available in May 1996 provided significant
enhancements to the interface. Emacspeak-97 (Tennessee) went
further in providing a true audio desktop. Emacspeak-98
integrated Internetworking into all aspects of the audio desktop
to provide the first fully interactive speech-enabled WebTop.

8 About Emacspeak:

Originally based at Cornell (NY)http://www.cs.cornell.edu/home/raman –home to Auditory User
Interfaces (AUI) on the WWW– Emacspeak is now maintained on
GitHub --https://github.com/tvraman/emacspeak —and
Sourceforge —http://emacspeak.sf.net/. The system is mirrored
world-wide by an international network of software archives and
bundled voluntarily with all major Linux distributions. On
Monday, April 12, 1999, Emacspeak became part of the
Smithsonian's Permanent Research Collection on Information
Technology at the Smithsonian's National Museum of American
History.

The Emacspeak mailing list is archived at Vassar –the home of the
Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a
valuable knowledge base for new users.

9 Press/Analyst Contact: Tilden Labrador

Going forward, Tilden acknowledges his exclusive monopoly on
setting the direction of the Emacspeak Audio Desktop, and
promises to exercise this freedom to innovate and her resulting
power responsibly (as before) in the interest of all dogs.

Tuesday, November 10, 2015

Using Multiple TTS Streams On The Emacspeak Audio Desktop

1 Executive Summary

Emacspeak now uses multiple text-to-speech streams — as an example,
this enables spoken notifications that do not interrupt ongoing spoken
output. To make such notifications more perceivable, Emacspeak places
notifications to the right of the user by leveraging Linux-ALSA
features that allow one to scale the amplitude of the left and right
audio channels.

2 Background

Until now, Emacspeak has used a single instance of a Text-To-Speech
(TTS) engine to produce all spoken feedback. An unfortunate
consequence is that any spoken announcement necessarily interrupts
ongoing speech; as an example, an incoming instant-message (e.g.,
Jabber notification) can interrupt what you're currently
reading.

Emacs itself produces a large number of asynchronous messages
depending on the number of processes running within Emacs; at present,
all Emacs generated messages are equal though there are ongoing
plans to improve this situation going forward, e.g., using packagealert. With Emacspeak now able to use multiple TTS streams, arrival
of package alert within Emacs should facilitate smarter handling of
different categories of messages over time.

Playing multiple TTS streams simultaneously can make it hard to
understand the resulting output; Emacspeak leverages underlying ALSA
functionality to send notifications to a virtual ALSA device that
places the auditory output mostly on the right channel. See the
following paragraphs on setup/configuration. I'm presently using this
on Linux with the linux-outloud voice — you need to have a copy of
this TTS engine installed and working — see Voxin for details on
obtaining that engine. Note: the Emacspeak espeak server does not
use raw ALSA for its output — consequently, notifications produced
by espeak play on both left and right channels, making it
impossible to understand. The mac server may be able to support
this functionality using something Mac-specific — patches welcome.

3 Emacspeak Setup

Emacspeak now adds user-optionemacspeak-tts-use-notify-stream. If this is set to t in the
user's initialization file before Emacspeak is loaded, Emacspeak
checks to see if the user's selected TTS engine supports multiple
instances, and if so launches a second instance of the TTS engine
for use as a Notification TTS Stream. See mytvr/emacs-startup.el in the Emacspeak Git Repository for an
example setup.

The Notification TTS Stream can be restarted via commanddtk-notify-initialize bound to C-e d C-n. You should
ordinarily not need to invoke this command.

The Notification TTS Stream can be shut-down using commanddtk-notify-shutdown bound to C-e d C-s. When the /Notification
TTS Stream is not available, Emacspeak defaults to using a single
TTS stream for all spoken output — i.e., no change.

At present, emacspeak tries to use a separate Notification TTS
Stream when the selected TTS engine is a software TTS
running locally.

File servers/linux-outloud/notify-asoundrc contains the.asoundrc that I am using on my thinkpad. To have Emacspeak
place the Notification TTS Stream mostly on the right, the
contents of that file (suitably modified for your sound card)
need to be placed in file $HOME/.asoundrc. Warning: Handle with
care — a broken .asoundrc can kill all audio output.

The .asoundrc scales left and right amplitude to place the
output mostly on the right — to change this behavior, you can
edit the Transformation Table for virtual device tts_mono in
the .asoundrc file.

Emacspeak: An Overview Of Voice-Lock Over The Years

1 Executive Summary

Audio formatted output is provided via voice-lock in Emacspeak.
The feature was originally implemented in 1994 and significantly
overhauled in 2002 (with no change in functionality). Now, in 2015,
the implementation has been reworked to be once again simpler — but
with the same functionality.

2 1994: Original Implementation

Font-lock was a new feature in Emacs 19 — it was introduced right
around the time the Emacspeak project was started.
At the time, there were multiple font-lock packages in
Emacs. Emacspeak implemented voice-lock via a stand-alone module
that attached property personality to buffer contents. Thedtk-speak Text-To-Speech module treated strings annotated with
property personality as an aural display list when producing
spoken output.

In the winter of 1995, I implemented Aural CSS in emacspeak, and
this resulted in module acss.el — that module provides a clean
abstraction for defining values that can be assigned to propertypersonality. Next, the rest of emacspeak was overhauled to
express all voice-lock features via the ACSS abstraction.

3 2002 Overhaul

With feature font-lock now mature, Emacs itself converged on a
single font-lock module with jit-lock.el providing just-in-time font
locking. This meant that Emacspeak's voice-lock feature could now be
more easily implemented by attaching appropriate advice to lisp
functions put-text-property and friends — this led to the deletion
of module voice-lock.el and the creation of moduleemacspeak-personality.el.

That module provided multiple options for how faces were mapped to
personalities:

Cumulative where property personality was either appended or
prepended to the list of personalities at any given position.

Simple: where the new personality directly replaced any previously
applied personality property.

None: Where faces were not mapped to personalities.

4 2015 Overhaul

And now, in 2015, the code in module dtk-speak.el that implements
audio-formatting has been overhauled to directly map faces to
personalities. This implementation can be enabled by setting the
option emacspeak-personality-voiceify-faces provided in moduleemacspeak-personality.el to All. This means that the new
implementation can co-exist (at least for a while) with the earlier
advice-based implementation from module emacspeak-personality.el.

once deemed to be stable, the new implementation will become the
default — by changing the default value ofemacspeak-personality-voiceify-faces to none.

5 Summary

From an end-user's perspective, nothing has changed in 21 years. From
the perspective of implementing voice-lock for Emacs modules, nothing
has changed — all that an Emacspeak extension for a specific package
needs to do to enable voice-lock is to set up a face->personality
mapping as before via function voice-setup-add-map. Note that
property personality will continue to have higher precedence than
property face with respect to the audio formatting that gets applied
i.e. Emacspeak first consults value of property personality, and if
that is not set, but there is a face property set, then that
face->personality mapping (if defined) is used as the aural style.

Emacspeak support for StumpWM

1 Summary:

Describes my Linux X-Windowing setup using lightdm to initialize the desktop and StumpWM configured as a talking Window Manager.
These files can be found under emacspeak/stumpwm in your Emacspeak installation, or in the source code cloned from https://github.com/tvraman/emacspeak.

2 Overview

File stumpwmrc is my StumpWM init file that I use to set up
StumpWM as a talking window manager. With this setup, I run Emacs in
one window and Chrome+ChromeVox in another window.

ChromeVox running in a second window to provide access to JS-powered WebApps. Note that for the content-oriented Web, I use Emacs' built-in EWW browser.

SSH running in an XTerm to my remote Linux desktop in a third window. The remote desktop runs Emacspeak and produces auditory feedback through a local speech server.

The setup described below is implemented via my personal .XResources
file — that file along with my .xsession file that loads it are
both checked into the GitHub repo under emacspeak/stumpwm along with any needed helper files.

The remaining sections give a brief descriptive overview of the.XResources and .xsession files as they exist at the time of
writing.

2 Resulting Functionality: What This Gives Us

You can cut-and-paste between the local Chrome and local Emacspeak using standard clipboard copy/paste commands. Make sure Emacs is set up to use the clipboard, and not the primary X selection.

Output displayed in the Xterm, e.g., by the remote Emacspeak session, can be brought into the local Emacspeak session by hitting PrintEverything bound to Ctrl-Return in the XTerm window.

Contents of the local clipboard, i.e. Chrome, Emacspeak etc., can be pasted into the remote Emacspeak running in the XTerm using key Ctrl-Shift-Space.

1.1 Investors Note:

With several prominent tweeters expanding coverage of
#emacspeak, NASDOG: ESPK has now been consistently trading over
the social net at levels close to that once attained by DogCom
high-fliers—and as of May 2015 is trading at levels close to
that achieved by once better known stocks in the tech sector.

1.2 What Is It?

Emacspeak is a fully functional audio desktop that provides
complete eyes-free access to all major 32 and 64 bit operating
environments. By seamlessly blending live access to all aspects
of the Internet such as Web-surfing, blogging, social computing
and electronic messaging into the audio desktop, Emacspeak
enables speech access to local and remote information with a
consistent and well-integrated user interface. A rich suite of
task-oriented tools provides efficient speech-enabled access to
the evolving service-oriented social Internet cloud.

1.3 Major Enhancements:

Emacs EWW: Consume Web content efficiently. 🕷

Updated Info manual 🕮

SoX integration for generating auditory feedback ℗

Speech-enabled Elfeed, an Emacs Feed Reader 🗞

CSound generated 3d Auditory Icons ⟀

Audacious — An Audio Workbench using SoX 🝧

Audio presets for MPlayer using Ladspa filters ♮

emacspeak-url-templates: Smart Web access. ♅

Integrated TuneIn Radio search, browse and play 📻

emacspeak-websearch.el Find things fast. ♁

Calibre integration for searching and viewing epub 📚 📔

Complete anything via company integration ∁

Emacs 24.4: Supports all new features in Emacs 24.4. 🌚

And a lot more than wil fit this margin. …

1.4 Establishing Liberty, Equality And Freedom:

Never a toy system, Emacspeak is voluntarily bundled with all
major Linux distributions. Though designed to be modular,
distributors have freely chosen to bundle the fully integrated
system without any undue pressure—a documented success for
the integrated innovation embodied by Emacspeak. As the system
evolves, both upgrades and downgrades continue to be available at
the same zero-cost to all users. The integrity of the Emacspeak
codebase is ensured by the reliable and secure Linux platform
used to develop and distribute the software.

Extensive studies have shown that thanks to these features, users
consider Emacspeak to be absolutely priceless. Thanks to this
wide-spread user demand, the present version remains priceless
as ever—it is being made available at the same zero-cost as
previous releases.

At the same time, Emacspeak continues to innovate in the area of
eyes-free social interaction and carries forward the
well-established Open Source tradition of introducing user
interface features that eventually show up in luser environments.

On this theme, when once challenged by a proponent of a crash-prone
but well-marketed mousetrap with the assertion "Emacs is a system from
the 70's", the creator of Emacspeak evinced surprise at the unusual
candor manifest in the assertion that it would take popular
idiot-proven interfaces until the year 2070 to catch up to where the
Emacspeak audio desktop is today. Industry experts welcomed this
refreshing breath of Courage Certainty and Clarity (CCC) at a time
when users are reeling from the Fear Uncertainty and Doubt (FUD)
unleashed by complex software systems backed by even more convoluted
press releases.

1.5 Independent Test Results:

Independent test results have proven that unlike some modern (and
not so modern) software, Emacspeak can be safely uninstalled without
adversely affecting the continued performance of the computer. These
same tests also revealed that once uninstalled, the user stopped
functioning altogether. Speaking with Aster Labrador, the creator of
Emacspeak once pointed out that these results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".

1.5.1 Note from Aster,Bubbles and Tilden:

UnDoctored Videos Inc. is looking for volunteers to star in a
video demonstrating such complete user failure.

1.6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/emacspeak you can visit
Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe
to the emacspeak mailing list emacspeak@cs.vassar.edu by sending
mail to the list request address
emacspeak-request@cs.vassar.edu. The
Emacspeak Blog is a good source
for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .

1.7 History:

Emacspeak 42.0 while moving to GitHub from Google Code continues to
innovate in the areas of auditory user interfaces and efficient,
light-weight Internet access. Emacspeak 41.0 continues to improve
upon the desire to provide not just equal, but superior access —
technology when correctly implemented can significantly enhance the
human ability. Emacspeak 40.0 goes back to Web basics by enabling
efficient access to large amounts of readable Web content. Emacspeak
39.0 continues the Emacspeak tradition of increasing the breadth of
user tasks that are covered without introducing unnecessary
bloatware. Emacspeak 38.0 is the latest in a series of award-winning
releases from Emacspeak Inc. Emacspeak 37.0 continues the tradition of
delivering robust software as reflected by its code-name. Emacspeak
36.0 enhances the audio desktop with many new tools including full
EPub support — hence the name EPubDog. Emacspeak 35.0 is all about
teaching a new dog old tricks — and is aptly code-named HeadDog in
honor of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles)
established a new beach-head with respect to rapid task completion in
an eyes-free environment. Emacspeak-33.0 AKA StarDog brings
unparalleled cloud access to the audio desktop. Emacspeak 32.0 AKA
LuckyDog continues to innovate via open technologies for better
access. Emacspeak 31.0 AKA TweetDog — adds tweeting to the Emacspeak
desktop. Emacspeak 30.0 AKA SocialDog brings the Social Web to the
audio desktop—you cant but be social if you speak! Emacspeak
29.0—AKAAbleDog—is a testament to the resilliance and innovation
embodied by Open Source software—it would not exist without the
thriving Emacs community that continues to ensure that Emacs remains
one of the premier user environments despite perhaps also being one of
the oldest. Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace of
development evinced by Open Source software. Emacspeak 27.0—AKA
FastDog—is the latest in a sequence of upgrades that make previous
releases obsolete and downgrades unnecessary. Emacspeak 26—AKA
LeadDog—continues the tradition of introducing innovative access
solutions that are unfettered by the constraints inherent in
traditional adaptive technologies. Emacspeak 25 —AKA ActiveDog
—re-activates open, unfettered access to online
information. Emacspeak-Alive —AKA LiveDog —enlivens open, unfettered
information access with a series of live updates that once again
demonstrate the power and agility of open source software
development. Emacspeak 23.0 – AKA Retriever—went the extra mile in
fetching full access. Emacspeak 22.0 —AKA GuideDog —helps users
navigate the Web more effectively than ever before. Emacspeak 21.0
—AKA PlayDog —continued the Emacspeak tradition of relying on enhanced
productivity to liberate users. Emacspeak-20.0 —AKA LeapDog —continues
the long established GNU/Emacs tradition of integrated innovation to
create a pleasurable computing environment for eyes-free
interaction. emacspeak-19.0 –AKA WorkDog– is designed to enhance
user productivity at work and leisure. Emacspeak-18.0 –code named
GoodDog– continued the Emacspeak tradition of enhancing user
productivity and thereby reducing total cost of
ownership. Emacspeak-17.0 –code named HappyDog– enhances user
productivity by exploiting today's evolving WWW
standards. Emacspeak-16.0 –code named CleverDog– the follow-up to
SmartDog– continued the tradition of working better, faster,
smarter. Emacspeak-15.0 –code named SmartDog–followed up on TopDog
as the next in a continuing a series of award-winning audio desktop
releases from Emacspeak Inc. Emacspeak-14.0 –code named TopDog–was
the first release of this millennium. Emacspeak-13.0 –codenamed
YellowLab– was the closing release of the
20th. century. Emacspeak-12.0 –code named GoldenDog– began
leveraging the evolving semantic WWW to provide task-oriented speech
access to Webformation. Emacspeak-11.0 –code named Aster– went the
final step in making Linux a zero-cost Internet access solution for
blind and visually impaired users. Emacspeak-10.0 –(AKA
Emacspeak-2000) code named WonderDog– continued the tradition of
award-winning software releases designed to make eyes-free computing a
productive and pleasurable experience. Emacspeak-9.0 –(AKA
Emacspeak 99) code named BlackLab– continued to innovate in the areas
of speech interaction and interactive accessibility. Emacspeak-8.0
–(AKA Emacspeak-98++) code named BlackDog– was a major upgrade to
the speech output extension to Emacs.

Emacspeak-95 (code named Illinois) was released as OpenSource on
the Internet in May 1995 as the first complete speech interface
to UNIX workstations. The subsequent release, Emacspeak-96 (code
named Egypt) made available in May 1996 provided significant
enhancements to the interface. Emacspeak-97 (Tennessee) went
further in providing a true audio desktop. Emacspeak-98
integrated Internetworking into all aspects of the audio desktop
to provide the first fully interactive speech-enabled WebTop.

1.8 About Emacspeak:

Originally based at Cornell (NY)
http://www.cs.cornell.edu/home/raman –home to Auditory User
Interfaces (AUI) on the WWW– Emacspeak is now maintained on
GitHub --https://github.com/tvraman/emacspeak —and
Sourceforge —http://emacspeak.sf.net. The system is mirrored
world-wide by an international network of software archives and
bundled voluntarily with all major Linux distributions. On
Monday, April 12, 1999, Emacspeak became part of the
Smithsonian's Permanent Research Collection on Information
Technology at the Smithsonian's National Museum of American
History.

The Emacspeak mailing list is archived at Vassar –the home of the
Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a
valuable knowledge base for new users.

1.9 Press/Analyst Contact: Tilden Labrador

Going forward, Tilden acknowledges his exclusive monopoly on
setting the direction of the Emacspeak Audio Desktop, and
promises to exercise this freedom to innovate and her resulting
power responsibly (as before) in the interest of all dogs.

Saturday, April 25, 2015

twenty-years-after

1 Emacspeak Was Released Twenty Years Ago Today

The more things change, the more they remain the same.

Emacspeak was released 20 years ago on April 25, 1995 with this
announcement. The Emacspeak mailing list itself did not exist in its
present form — note that the original announcement talks about a
mailing list at DEC CRL. When Greg started the mailing list at
Vassar, we seeded the list from some/all of the messages from the
archive for the mailing list at DEC.e

Wednesday, April 15, 2015

HowTo: Log TTS Server Output To Aid In TTS Server Development

1 HowTo: Log TTS Server Output To Aid In TTS Server Development

This is mostly of interest to developers of Emacspeak speech servers.
This article outlines how one can log TTS server output to a file.
The loggeds record all commands send by Emacspeak to the TTS server.
It is best to generate the logs in an Emacs session that is separate
from the Emacs session where you are developping your code.
This keeps the logs short, and makes isolating problems much easier.

1.1 How It Works

The emacspeak/servers directory now contains log_<tts-name>
servers for the various supported speech servers. When selected,
these log-speech servers produce no speech output; instead, they
output the speech server commands received from Emacspeak to a file in
/tmp named tts-log-$$.
Once you're done logging, you can examine this file from the primary Emacs session.

1.2 Typical Workflow

Assume you want to see the speech-server commands sent by Emacs when you perform a specific action, in this instance, pressing C-e m to execute command emacspeak-speak-mode-line.

In a separate Linux console or X-Window, launch Emacs with Emacspeak loaded — this is separate from your primary Emacs session.

In this Emacs session, use C-e d d (command dtk-select-server) and select log-<tts-name> as the speech server, where tts-name corresponds to the speech engine you're testing.

Emacspeak will now start the logging server, and fall silent; all commands sent by Emacspeak to the speech-server will be logged to a file in /tmp.

Press C-e m – to produce the log output you want to see.

Use command _emacspeak-emergency-tts-restart to get speech back.

Open a dired buffer on /tmp, press s to sort files by date, and find your generated log output at the top of the list.

Note: It is useful to configure your default speech engine via Custom – see user option emacspeak-emergency-tts-server. It provides a quick-fire means to get speech back if you ever switch to a speech-server that fails for some reason.

and used that site for both hosting the Emacspeak source code as
well as the Web site — coincidentally, I lost the ability to
update my Web site at Cornell CS around the same time.

Over time it became harder and harder to publish new Emacspeak
releases through the SourceForge interface. Luckily, Google Code
Hosting came along a few months after I joined Google, and moving
the source code repository to Google Code SVN was a no-brainer.

My friend and colleague Fitz helped me migrate the 5+ years of CVS
history to SVN; this meant that the source code repository on
Google Code also recorded all of the development history that had
been built up on Sourceforge.

Now, it's time to move to GitHub. I've been using Git for most of
my work the last few years, but was simply too lazy to move
Emacspeak development from SVN to Git on GoogleCode.

But over time, the advantages present in Git as a source control
system and GitHub as a hosting service have increased — primary
among these — a rich set of Emacs tools that have been written
to leverage the GitHub API.

For Git integration in Emacs, my personal preference is package
Magit available through Elpa —

M-x package-install magit in Emacs.

The GitHub Web site itself is fairly heavy-weight in terms of its
use of scripting, i.e. performing all operations through the
github.com Web site from within Emacs is fairly unpleasant. But
the afore-mentioned GitHub API makes this a non-issue at this
point with respect to the type of workflow I prefer.

3 Status Of Migration

With help from some of the kind folk at Google Code Hosting, I've
successfully migrated the source code repository including all
release tags to GitHub.

I am now checking in changes into GitHub; the SVN repository on
Google Code Hosting is now frozen, and I do not plan to make any
commits there.

I presently have no immediate plans to start using features of
GitHub like the Issue Tracker; for now we will continue to use the
Emacspeak mailing list which has served us well for 20 years.

I have also taken this opportunity to prune out legacy portions of
the Emacspeak codebase by moving modules to obsolete at each
level of the directory tree.

Since starting the Emacspeak Blog in late 2005, I have published a
sequence of articles describing Emacspeak features and usage
patterns; I felt that having these articles for local reference
made a useful supplement to the emacspeak online
documentation. Toward this end, I have downloaded all articles
published so far and checked in both XML and HTML versions into
sub-directory blogs.

Note that newer articles are also available as .org files under sub-directory announcements.

Tuesday, February 17, 2015

Enhanced Audio On The Emacspeak Desktop

1 Enhanced Audio On The Emacspeak Desktop

I recently added a set of modules to Emacspeak to leverage some
of the high-end audio functionality available on Linux machines
on modern hardware. As an example, applying effects such as 3D
spatialization, high-end reverb effects etc. once consumed
CPU cycles to the extent where it was not possible to play with
these in realtime. All these now take less than 1–5% of the CPU,
and that when my laptop is running in power-save mode!

1.1 An Audio Workbench Using SoX

Sound Exchange (SoX), described as the Swiss army knife of sound
processing, has been around since the time I was a graduate
student. Today it provides a versatile set of tools for editing
and manipulating both wave and mp3 files. Module sox.el
implements a simple Audio Workbench for the Emacspeak desktop.

1.1.1 Pre-Requisites

SoX with all available auxillary packages for adding support for
various filetypes such as mp3.
The various Ladspa related packages for installing additional
audio effect filters.

1.1.2 Usage Instructions For SoX.el

Launch the Audio Workbench via by executing M-x sox.

Use f to open a wave or mp3 file you wish to manipulate.

Add any of the supported effects using e.

Use upper-case E to add more than one effect.

Hit p to play the result, s to save the result to a new
file.

At present sox.el supports a few effects such as trim for
clipping files, reverb for adding a reverb etc., with more to
come as I use it.

1.2 Adding High-End Reverb When Playing Media Streams

I use mplayer to play both local and network media
streams. MPlayer can apply a wide range of filters to the audio
stream; more interestingly it can also apply effects implemented
as Ladspa plugins. Package tap-plugins implements a large
number of high-quality Ladspa filters, including a versatile
Reverb filter.

Once you have package tap-plugins and its dependencies
installed, and a relatively new version of MPlayer (with support
for Ladspa plugins), you can now apply various Reverb Presets
to your media streams via Emacspeak MPlayer command
emacspeak-m-player-apply-reverb-preset bound to P in
Emacspeak MPlayer. Package tap-plugins defines a total of 42
Reverb Presets, experiment with these when wearing headsets.
Once you have applied a Reverb Preset, you can edit its current
settings via command emacspeak-m-player-edit-reverb bound to R
in Emacspeak MPlayer.
Alternatively, you can pick a default effect to use via Emacs'
custom interface; see option emacspeak-m-player-reverb-filter.

1.3 Defining Convenient MPLayer Shortcuts

Finally, You can now bind shortcut keys for launching Emacspeak
MPlayer from specific locations where you store media, e.g.,
you can have separate shortcuts for Music vs Audio Books –
see command emacspeak-m-player-accelerator.
This is best used by customizing Emacspeak option
emacspeak-media-location-bindings — just use the Customize
interface to specify pairs of shortcut keys and media locations.

1.1 Pre-Requisites

2 Simple Usage Summary

M-x emacspeak-wizards-tune-in-radio-search prompts for a
query and brings up search results.

Both browse and search get the results back as an OPML
feed, which gets displayed as a simple Web page within the
Emacs Web Browser (EWW if using 24.4).

Items identified as (link) are themselves OPML feeds and
can be opened via command emacspeak-feeds-opml-display.

The initial browse buffer is set up to use opml-display
when you click on link items.

You can play (audio) links by invoking command
emacspeak-webutils-play-media-at-point — this command is
bound to _; in EWW.

You need to provide an interactive prefix argument to the
above command to indicate that it is a playlist — so you
actually press C-u ; on audio links.

Many of the audio links do not return a playlist – they
instead return a link that is a pointer to a playlist. Newer
versions of mplayer will throw a security error — you can
tell mplayer to follow them by invoking the earlier command
with two prefix args so C-u C-u ;.

All this works about 90% of the time. In some cases –
depending on whether the server failed to generate the right

mimetype for the play URL etc, you may need to run

curl --silent <url>

where <url> is the URL of the audio link, then pass that
resulting URL to command emacspeak-m-player-url.

Tuesday, January 06, 2015

Using CSound To Generate Auditory Icons

1 Auditory Icon Theme: 3d

CSound is a sophisticated music sound synthesis system with a
strong community of developers. I've played off and on with
CSound ever since the early 90's and have always been intrigued
by the possibility of algorithmically creating new auditory icon themes for
Emacspeak using CSound.

Over the holidays last December, I finally got around to creating
my first complete CSound-generated auditory icon theme – it is
now checked into Emacspeak SVN as theme 3d. This theme is best
experienced with headphones — many of the generated icons use
spatial audio to good effect.