The Online Digital Talking Book Reader (Demo)




Blog


Monday, October 19, 2009
By Andrew Tokeley,  Categories: ButtercupReader | Silverlight

If you’ve recently tried to access ButtercupReader using the latest version of Silverlight (3.0) you may have noticed that your book doesn’t play immediately. This slight hitch has been fixed and www.buttercupreader.net has been updated.

This fix is already part of the source code located at http://buttercupreader.codeplex.com.

Cheers

Comments [0]   |   Permalink  

Monday, September 28, 2009
By Chris Auld,  Categories: ButtercupReader
If you're interested in looking a bit deeper in to how we used Silverlight to produce ButtercupReader then head on over to CodePlex and get the source code. We'd love to hear your feedback and hopefully get more people involved in moving the project forward.

http://buttercupreader.codeplex.com

Comments [0]   |   Permalink  

Tuesday, May 05, 2009
By Chris Auld,  Categories: ButtercupReader

So we’ve always planned to make the source code available for Buttercup. Now it’s time to think a bit more about how exactly we go about that. Given the nature of the project there are a few things to think about.

We’ve really got two key goals that we’re looking to achieve by shipping the source.

  1. We want people to learn from our code and be able to make their own Silverlight apps accessible. This probably won’t involve reuse of a lot of our code, but, it will probably see you pouring through the app getting ideas.
  2. We want Buttercup to live on, grow and continue to be developed. To get this to happen we really need to build up a bit of a community of enthusiasts to work on it. That’ll involve some of the original team but it’s going to need a bunch of ‘new blood’ to help drive things along too.

So my current thinking is to release the source code via a CodePlex project. We (the Intergen team) will probably take the role of project administrators for the first wee while and will probably look to vet initial patches into the source tree. We’ll then look to bring on other developers and project leaders nice and quickly.

So I’ve got a few questions for our interested community.

  1. Shall we make the code available now? Or should we wait until we’ve ported it to Silverlight 3.0?
  2. What licences do you prefer? I’d like to use one of the OSI approved licenses and ideally something that is not Copyleft. Current leanings are BSD, Modified MIT and MS-PL. But I’d love to hear from the community interested in Buttercup what your thoughts are.
  3. Are you interested in being involved in the on-going development of Buttercup? It’s a Silverlight 2.0 application written in C#.

Please use the comments to provide some feedback. We look forward to hearing from you.

Comments [2]   |   Permalink  

Thursday, April 30, 2009
By Andrew Tokeley,  Categories:

I recently presented an Intergen Twilight Session on building applications using Silverlight while remaining compliant with the latest version of the  New Zealand Government Web Standards. I’ve posted the slides and demos here.

Version 2.0 of the standards was released March 2009. The standards are now aligned with W3C's WCAG2.0 standards, level AA, plus some additional NZ specific technical standards. Aligning with WCAG 2.0 is a great step as there is a wealth of information and tools out there.

One of the interesting NZ amendments to the WCAG standards (regarding Silverlight at least) is in relation to the use of web technologies in general. The WCAG 2.0 standard states.

Conformance Requirements (WCAG 2.0)

4. Only Accessibility-Supported Ways of Using Technologies: Only accessibility-supported ways of using technologies are relied upon to satisfy the success criteria. Any information or functionality that is provided in a way that is not accessibility supported is also available in a way that is accessibility supported.

"Accessibility Supported” is defined as,

First, the technologies must be designed in a way that user agents including assistive technologies could access all the information they need to present the content to the user. Secondly, the user agents and assistive technologies may need to be redesigned or modified to be able to actually work with these new technologies.

However, the level of assistive technology support needed for accessibility support has not been defined and is described as a “complex topic” and puts the responsibility on the wider community to establish what is acceptable.

The New Zealand Government Web Standards take a more conservative approach.

2.2 Technologies which may be used but not relied on

Scripts, applets and other programmatic objects. Information or services in webpages or applications must be available without scripts, applets and other programmatic objects. This includes Flash, Silverlight, Java and Javascript.

So this means that regardless of the accessibility features of Silverlight it can not be relied on to provide access to content and services and an alternative must be provided.

In many cases this isn’t too much of an issue. For example, it’s pretty straight forward providing access to a video transcript if the Silverlight plug-in has not been installed on a user’s browser. However, in more complex scenarios the cost of providing an alternative will be prohibitively expensive – it’s hard enough building software within existing budgets without having to double the development effort. There are approaches that can be taken and I’ll post some over the next few weeks.

Comments [0]   |   Permalink  

Tuesday, April 28, 2009
By Chris Auld,  Categories: Silverlight

So, one of the cool things we aimed for with Buttercup was ensuring that we not only worked well with screen readers, but, that we worked well without screen readers too. If you think about scenarios like the public library, chances are they will not have a screen reader installed but Silverlight is a much better probability.

To achieve this we wanted to support the idea of a self voicing UI. We did this, but, it comes with quite a few caveats. This includes the fact that it only works in Internet Explorer and even then you’ve got to do some security acrobatics to enable the Active X calls that we make.

I’ve been kicking around a few ideas of how we might improve the self voicing experience. I’m big on doing this because it’s inherently re-usable functionality. if we can get cross browser self voicing working it’ll allow us to ‘Self Voice’ not only Silverlight applications but also plain old HTML apps as well.

So, some of the thoughts I’ve had:

  • Pre recorded MP3s for UI elements. Basically we’ll create an MP3 to be played by the UI when you button hover or field focus.
    This is pretty easy to achieve, but, it has a few draw backs too. We will only be able to support static speech- if you run a search in Buttercup today we’ll actually speak the result count back to you. Using pre-recorded MP3s is also a fairly time consuming process- we’ll either need to use voice talent, or generate each MP3 using a synthesizer and package it up. Sure we could probably build a tool that used reflection to interrogate the UI Automation tags and then created the speech files. But, overall this still feels a bit fugly to me.
  • Calling up to the server. We could make a web service call to the server passing up the speech we’d like generated. We could then use one of the variety of Text to Speech generators server side to create a speech MP3 to be returned to the client. We’d obviously do some caching on the client and probably push this cached data into isolated storage to persist across runs. This gets us around the dynamic generation limitations from above, but, gives us a server side dependency which is something we’ve thus far managed to avoid in Buttercup- we really want people to just be able to grab the Buttercup *.xap file and stick it on their site. Making server calls doesn’t really suit this model. I’m also not 100% on whether the latency will be tolerable- realistically we’re probably talking 3000ms at a minimum. I think if we did go this way it’s probably only be a stop gap and we might just run the speech gen service in say Windows Azure.
  • Generating the Speech in Silverlight. This is kind of the nirvana. In Silverlight 2.0 (which is what Buttercup is currently built in) we just can’t do it. But, Silverlight 3 we have the ability to use the new MediaStreamSource and this might just let us do some sort of Audio generation. I think that we’d probably need to look at porting an existing open source TTS engine to C# managed code and then surfacing this into Silverlight. I’d love to get feedback from anyone who has had good or bad experiences with any of the open source TTS engines.

Now that 3rd point got me thinking about another commonly requested feature- variable speed playback. The Silverlight 3 Beta doesn’t support variable speed MP3 playback and it doesn’t look like it’s a feature that we’ll get in this release. It might be possible, though, to build a custom MP3 decoder to support this feature- maybe a port of MP3Sharp.

Anyway, that’s my braindump for today. I know that Andrew Tokeley will have some interesting samples to post after his Twilight Session tomorrow. I’d love to hear in the comments if people have other ideas for the above problems.

Comments [1]   |   Permalink  


© Copyright 2013, Intergen.