»
S
I
D
E
B
A
R
«
Plans for next version
July 5th, 2009 by Jouke Visser

If you’re not a software developer or don’t really understand the art of programming, I suggest you skip this post, because it probably only will cause confusion. If you do know something about software development, sure, read on!

The next pVoice version will be different. Very different. In fact, pVoice will no longer be developed as a standalone application, although I think I will eventually create an installer that gives you the same functionality as the current pVoice gives you.

Instead, I’ll first design and create the OpenAssistive framework. Before I “paused” the development of pVoice, I had already started the development of OpenAssistive, which -at the time- was supposed to be a wxPerl based framework for assistive software. Here’s the shock: neither pVoice nor OpenAssistive will be based upon wxPerl!

For all of you who know me, and who know how enthusiastic I have always been about wxPerl, this must be a big surprise. It is for me as well :)

Instead, the OpenAssistive framework is something I hope will be so simple in design, based upon open standards like AJAX, HTML and HTTP, that really anyone with a little knowledge of webdevelopment, can contribute to it. In the past, many people suggested to use HTML for pVoice. “A simple webpage should do the trick”. Yeah, but not quite. There are a couple of things that “simple webpages” cannot do:

  • Switch input. That’s the most important issue here. Switches like the buttons of a mouse, or keystrokes can be caught with Javascript. However, if you need to interface with special devices, like wheelchairs, you need to be able to access local devices, which is not that easy (if possible at all) via Javascript
  • Speech synthesis. Until recently it wasn’t possible to do Text To Speech on other platforms than Win32 in an HTML page. I’ve found a page last week that defines a project using the Java Speech API, and adds Text To Speech capabilities to any webpage on any platform. At this stage I’m not sure I want to go with that.

The basic idea of what the OpenAssistive framework is supposed to do is the following:

  • A HTTP daemon will be the heart of the framework. Sure, you can use your own flavor of HTTP servers. But this daemon will run on the local machine and knows how to do Text To Speech. If you use Apache (or other HTTP servers), the framework will still do its job, but Text To Speech capabilities will not be available. That is not a problem per se. If you don’t need TTS, then you’re fine using another web server (remember, it’s a framework, not only pVoice will run on it…)
  • An Event listener will listen for events coming from the switch device as configured. It will send those events to the HTTP daemon. That can be done using IPC, or if it’s a distributed setup, also via XML calls to the HTTP daemon.
  • The user interface will be any webbrowser. And when I say any, I mean any. It just needs to be able to work with AJAX-based pages. These pages will constantly poll the server for events from the Event listener, and highlight the selectable items in the HTML page. Selectable items are marked as such using a CSS class. Highlighting and returning to a default state is very easy within CSS. When there’s a “NEXT” event coming in, it highlights the next selectable item in the page, the same with “PREVIOUS” and “SELECT” takes the defined action.
  • A module in the OpenAssistive framework can consist of only HTML and Javascript, but it can also be much more complex by adding server side scripts, allowing you do do almost anything.

This is the basic idea. I’m already doing some proof of concept, and so far I see no reason why this won’t work. It’s much more flexible, requires no “hard to find skills” like wxPerl programming, and if I’m not mistaking, the development will be much faster than before.

Comments are welcome!

  • Share/Bookmark

2 Responses  
jimLuther writes:
November 3rd, 2009 at 04:11

Hi Jouke,

I have taken a similar approach as the one you suggest using HTML + Javascript. I can’t say that my efforts represent anything close to best practices when it comes to my “Web Page Communicator” package either as an example of Javascript programming or as HTML design. My efforts have been largely the results of trial and error, and rooted in my largely procedural programming training. All you can say about my stuff is that it works to some extent, and that it works across several browsers. It demonstrates that the concept of a virtual communication device, independent of platform, or browser is possible – and achievable without dependency on proprietary, non-standards based technology. HTML5 should help to make this easier to realize.

See: http://sites.google.com/site/jamjolu/Home/web-page-communicator

I don’t use text-to-speech (although I have in past attempts using VB script for Internet Explorer and the Microsoft Agent) because it seemed more likely that audio files would be more easily supported across more browsers and platforms. This hasn’t been as true as I would like. Also, keyboard input is handled inconsistently across browsers, and as a result in my current version keyboard driven scanning modes in the Safari and Chrome browsers just don’t work. I would like someday to solve these problems. Ultimately, I would like to see the web page approach succeed in mobile devices as well.

Currently, I too would like to completely overhaul my package to meet the following criteria:

1. The basic web page communicator page would contain support for the user interface methods (scanning methods,) speech output (tts, or audio files,) and linking and other behaviors. These pages would have two flavors – one for simple message playing, and another that permits sentence construction.

2. Content, arrays of “cells”, would be described separately using JSON structured files. Each cell would identify picture and sound files, and any specify desired behaviors. Cells could optionally be grouped for row/column scanning.(Another approach could use inline frames to load content web pages.)

3. User interface preferences like which scan method and switch interface specifics an individual requires would also be described in a separate JSON file.

4. An external CSS file would cover other user visual preferences.

5. A new simple editing tool like “formEdit” would allow users to create content sets, and to define preferences offline.

This approach would lend itself well to both offline users and to a Server/Client model. Content could be shared between users who have differing platforms and access methods.

Let me know what you think. I would most definitely like to collaborate, or to contribute towards advancing the concept of the web page communicator.

Regards,

Jim Luther

riccardoca writes:
July 10th, 2009 at 10:31

Hi Jouke,

I’m very interessed in working with you for a new version with update plugin.

I’m working with disabled person in Italy and I’ve usually working with PVoice.

Let me know if you are interessed.

Leave a Reply

You must be logged in to post a comment.

»  Substance: WordPress   »  Style: Ahren Ahimsa
© (c) 2001 - 2009 Jouke Visser