Eclectic Media Git rhapsode / master

Tree @master (Download .tar.gz)


Web browser targetting voice I/O.

See for instructions on how to help the project.

Desired Experience

Rhapsode will read a webpage outloud to you according to some special CSS properties. Arrow key navigation will be supported for navigation between headings, paragraphs, and table cells.

Links (defined generally enough to include <audio>, etc) will be indicated via a special beep for the user to repeat one back (via microphone or keyboard) at any time in order to navigate between pages. Rhapsode will start reading from the <main> element if present.

Forms will be rendered as ordinary elements and be navigated to as a link. Once navigated to you will be prompted to fill each input of the form in turn before reviewing/correcting your submission before sending it.


Because I want The Web to be "universal", for browsers to have the slack they need to present it however best suits their users and the devices they use. Rhapsode demonstrates HTML/CSS's capabilities this way.

And because I want to discourage the excessively bloated RCE vulnarability that is JavaScript, which does plenty of harm even without breaking out of it's sandbox! I want browsers to be simple and easy to audit or write your own.

See the wiki for webdev documentation.


  1. Install espeak-ng, zlib1g-dev, ghc, cabal-install. (Debian package names listed here)
  2. Install the C libraries espeak-ng & sndfile (on Debian: libespeak-ng-dev & libsndfile1-dev)
  3. cabal install:
    • xml-conduit-stylist
    • stylist
    • hurl
    • TODO any others?
  4. (OPTIONAL) Add ~/.cabal/bin/ to your path if it isn't already.
  5. Run Rhapsode with cabal run | espeak-ng -mb1, where "" can/should be replaced any valid URL. Or if you followed step 3, you can replace "cabal run" with "rhapsode".