Close
0%
0%

The Open Voice Factory

Free speech, for people that need it most

Similar projects worth following
Speech is important: we communicate; we tell stories. More fundamentally it shapes our personalities, our relationships, our mental health.

Joe's little brother Richard has never been able to speak. Until he was about 19, Richard managed on maybe 90 signs, mostly nouns. When he was 19 he got an AAC device, an electronic voice, like the one used by Stephen Hawking.

It changed his life, suddenly, instead of 90 signs, Richard had 1000s and it was not, just his family that could understand them, it was everybodCAN'T Richard isn't alone, there are 1000s of people in the UK alone who would benefit from the same technology but can't afford it. (Richard's first device was £5,000)

The Open Voice Factory a free Open alternative. It lets users, family, and carers create pages of speech in PowerPoint (chosen because it's familiar and easy for carers to use), and parses them into functioning speech aids.

This is relatively recently added to Hackaday, but has been going in various forms since 2014 (and actually back before that). There is various discussions in these places:

We also regularly post articles about the project on this blog:

2016

2015

2014

  • Uploaded and added video

    Joe Reddington12/12/2016 at 16:08 0 comments

    We've put up another instruction video for working with special instructions:

  • The Open Voice Factory has updated!

    Joe Reddington12/08/2016 at 10:30 0 comments

    Following some fairly intensive work by testers (thank you everbody!), we’ve updated the Open Voice Factory as well as its CommuniKate templates.

    This has fixed one bug made one design change, and added one feature.

    The bug was relatively simple – the colour wasn’t been read from some PowerPoint cells correctly, which meant that they would take on the colour of whatever that cell had been on the previous page.

    The feature was pretty simple as well, we added capital letters to the pagesets CommuniKate 12 and CommuniKate 20.

    The design change was a little more involved. Some AAC functions are a little more complex than others. So while linking from a grid cell to another page is easy – making a cell clear the message window is a bit more difficult.

    In the Open Voice Factory we get around this by using the hyperlink field that PowerPoint has for every object. By putting special text inside that field, you could make the resulting communication app do just about anything (technically we are calling Javascript functions).

    We used to have special commands that looked like this:

    special::clear()

    unhelpfully, it turned out that this format doesn’t work with older version of PowerPoint, so we’ve completely rewritten the engine. The up to date CommuniKate templates now have special commands that look like this:

    ovf(clear())

    These changes are now up on GitHub and live at the Open Voice Factory website. They are also backward compatible – old designs that you have been testing will still work (although they will still show the colour bug, and they will only work on newer versions of PowerPoint).

    Next on our todo list to to produce some instruction videos that go into the topic of special commands in more detail.

  • The Open Voice Factory has updated!

    Joe Reddington12/08/2016 at 10:30 0 comments

    Following some fairly intensive work by testers (thank you everbody!), we’ve updated the Open Voice Factory as well as its CommuniKate templates.

    This has fixed one bug made one design change, and added one feature.

    The bug was relatively simple – the colour wasn’t been read from some PowerPoint cells correctly, which meant that they would take on the colour of whatever that cell had been on the previous page.

    The feature was pretty simple as well, we added capital letters to the pagesets CommuniKate 12 and CommuniKate 20.

    The design change was a little more involved. Some AAC functions are a little more complex than others. So while linking from a grid cell to another page is easy – making a cell clear the message window is a bit more difficult.

    In the Open Voice Factory we get around this by using the hyperlink field that PowerPoint has for every object. By putting special text inside that field, you could make the resulting communication app do just about anything (technically we are calling Javascript functions).

    We used to have special commands that looked like this:

    special::clear()

    unhelpfully, it turned out that this format doesn’t work with older version of PowerPoint, so we’ve completely rewritten the engine. The up to date CommuniKate templates now have special commands that look like this:

    ovf(clear())

    These changes are now up on GitHub and live at the Open Voice Factory website. They are also backward compatible – old designs that you have been testing will still work (although they will still show the colour bug, and they will only work on newer versions of PowerPoint).

    Next on our todo list to to produce some instruction videos that go into the topic of special commands in more detail.

  • Next Steps for the Project

    Joe Reddington10/02/2016 at 17:59 0 comments

    I've recently replied to an email about where this project should go next and I thought it would be nice if that was shown somewhere a bit more publicly. This has been tidied up and anonmised to the extent that it probably would have been faster if I *hadn't* copied and pasted.


    Hey Joe
    Just wanted to say congrats with the open voice factory!

    Quick couple of random thoughts

    - Whats your thoughts on Brian’s OBF format? Is there a OBF converter of your PowerPoint templates to OBF?
    - Whats you main aim with the Factory - Free Voice Output - or/and Board Creation system?
    - Whats your next/main aims?


    So let me give you the 60 second summary.

    The Factory will export to OBF as soon as possible. Partly because that's a Good Thing in general and makes everyone's lives easier, and partly because Brian is a nice guy and I want to reinforce what he's doing.

    In an ideal world, the Factory would just create an OBF file at a link and then everyone would use a free OBF reading app as the voice itself. As soon as such an app exists then I can stop working on the TTS app that we have and concentrate on the Factory itself. There's lots to do there.

    Main aim of the Factory is that everyone in the world has access to communication technology for free. Right now you get access to the tech if you live in one of about six countries and that makes me sad.

    Next aim is to properly embed in the community. We've got some researchers using it, but I'd like it to be the de facto choice for prototyping and experiments.

    But that's just my next aim. It's open source right, so I should be asking you: What's *your* next aim for the project ?

    J

  • Tracking Down a Color Bug, Part 2

    Joe Reddington10/02/2016 at 17:53 0 comments

    # Part 2

    This session finished with posting the following SE question here: http://stackoverflow.com/questions/39819876/in-which-way-are-these-two-powerpoint-shapes-different-accessed-via-api

    In full it read like this:

    As part of an open source assistive technology project (here), I am accessing a PowerPoint file by python API (python-pptx).
    Some shapes are causing exceptions when I look at color. But it's hard to see which.
    I've created this minimal example: https://www.dropbox.com/s/7ihbd3e9yh235mg/MCVE.pptx?dl=0
    and indeed, here's a screenshot:
    enter image description here
    It consists of a single slide, with shapes that work on the left, and shapes that fail on the right. Using the format painter will make a shape work (or not, depending on the source of the formatting) but I've been through every way of checking the formats that I can think of, and both sets of shapes appear identical.

    How are the two sets of shapes in the minimal example different?

    If anyone would like to pop over and add their expertise, that would be lovely. Otherwise, the live notes are below.

    ###### 02/10/2016-17:55:17 BST:

    Okay, I'm back. Now I want to change grab_text so that it gives informatin about which colour information is missing. I can also use this as an oppertunity to overhaul the output text anyway.

    ###### 02/10/2016-18:06:36 BST:

    Made some costmetic changes, now trying to get an event to trigger on blank colours.

    ###### 02/10/2016-18:10:45 BST:

    I thought my debug code was wrong. Turns out that there really is a page where the colours are *all* wrong. And it's more than just gery...

    ###### 02/10/2016-18:14:15 BST:

    Tried to change the colours to a lighter shade, NO effect. Trying again now I've remembered to save the file.

    ###### 02/10/2016-18:15:34 BST:

    Replacing the box with another worked. But this is going to be an extra pain if I also have to check and fix all of the links as well.

    ###### 02/10/2016-18:16:36 BST:

    I'm checking format painting from the fixed square.

    ###### 02/10/2016-18:17:24 BST:

    That might have worked...

    ###### 02/10/2016-18:18:52 BST:

    Indeed it has... but what changed?

    ###### 02/10/2016-18:21:18 BST:

    I've been thought everything in the list... No differences in the formating.

    ###### 02/10/2016-18:22:52 BST:

    Okay, time to take stock. We now understand that there is something in the formating of certain powerPoint shapes that causes some to refuse to give a colour and some to be happy with it. We know that this property can be transfered by the format painter tool. We've also checked all of the formating settings we can think of, and CAN'T find a difference. What's our next move?

    ###### 02/10/2016-18:25:35 BST:

    I've created a new pointpoint file, that is different on only one way - that I format painted one additional cell. I'm now going to run opendiff and see if that gives me a clue.

    ###### 02/10/2016-18:26:53 BST:

    Nevermind, they aren't (obviously) easily readable and it's probably more trouble that it's worth to go thought and unzip them all. What to do next?

    ###### 02/10/2016-18:30:15 BST:

    I'm going to commit this, and try with something else.

    ###### 02/10/2016-18:30:24 BST:

    No, that's NOT the best way. I'm going to create an example.

    ###### 02/10/2016-18:35:15 BST:

    I've created a stripped down PowerPoint file.

    ###### 02/10/2016-18:38:41 BST:

    I've built a special extra file that has just eight shapes on it, the four on the left are somehow different from the ones on the right. To Check nothing broke in the copying I then copied them back to the orginal file and tried again and the same problem came up.

    ###### 02/10/2016-18:49:34 BST:

    I've created a SO question here: http://stackoverflow.com/questions/39819876/in-which-way-are-these-two-powerpoint-shapes-different-accessed-via-api so I'll come back to it later.

  • Tracking down a colour bug.

    Joe Reddington10/01/2016 at 18:35 0 comments

    #### Introduction

    Some of our beta testers have been reporting a colour problem in the uploaded templates. Time to fix it.

    #### Steps

    #### Follow on goals

    ***

    # Resources

    # Live Notes

    ###### 01/10/2016-18:33:23 GMT+1:

    Started mapping

    ###### 01/10/2016-18:35:30 BST:

    Need to find some examples.

    ###### 01/10/2016-18:37:58 BST:

    Let's look at http://designs.theopenvoicefactory.org/e87ad0006c19a37d4cf6addf6d5f3333/

    This is the results.

    ![Screenshot showing... ](../../../images/Screen Shot 2016-10-01 at 18.38.39.png)

    ###### 01/10/2016-18:39:18 BST:

    But this is the original.

    ![Screenshot showing... ](../../../images/Screen Shot 2016-10-01 at 18.39.45.png)

    ###### 01/10/2016-18:40:06 BST:

    Okay, let's look at the json file. It's here: http://designs.theopenvoicefactory.org/e87ad0006c19a37d4cf6addf6d5f3333/pageset.json

    ###### 01/10/2016-18:41:10 BST:

    Okay, the top two (as in the ones that should be grey and are instead white, haven't got a colour entry - so it happened between the PowerPoint and the json, NOT the json and the browser.

    ###### 01/10/2016-18:43:02 BST:

    I've confirmed that the grey that works is exactly the same RGB (191*3) as the one that didn't.

    ###### 01/10/2016-18:43:26 BST:

    So now what?

    ###### 01/10/2016-18:45:29 BST:

    git checkout -b colourbug

    ###### 01/10/2016-18:46:17 BST:

    running

    ./create.sh testinputs/CK20V2.pptx 5

    to check the same behaviour works offline.

    ###### 01/10/2016-18:48:19 BST:

    Okay, we get the same behaviour offline, so I'm going to add some debuging code.

    ###### 01/10/2016-18:50:31 BST:

    Hmmm... There's an amzing number of exceptions in the colour section. Let's see if we can do some more debugin.

    ###### 01/10/2016-18:52:27 BST:

    It turns out we get this exception:

    TypeError: a transparent (background) fill has no foreground color

    Which we've been swallowing for a while. It's talked about here:

    http://python-pptx.readthedocs.io/en/latest/user/autoshapes.html

    My working hypothosis is that, because I'm working thought *all* of the objects, I'm getting all of the text ones as well.

    ###### 01/10/2016-19:09:38 BST:

    I'm doing some more debuging, getting NOTvery far. Hypothisis was wrong.

    ###### 01/10/2016-19:18:46 BST:

    Okay, the exception is only being raised for rectanges. Not folder colours, and NOT picture. Le'ts try something silly.

    ###### 01/10/2016-19:23:09 BST:

    I'm trying replacing the ones that fail in powerPOint, with the ones that work.

    ###### 01/10/2016-19:24:22 BST:

    No dice. Still the same problem, even if I literally copy and paste a working one.

    ###### 01/10/2016-19:24:48 BST:

    Let's try Just changing the target colour.

    ###### 01/10/2016-19:29:41 BST:

    Oh - it might be that I was changing one file and using the other. Hang on. Something is happening.

    ###### 01/10/2016-19:32:52 BST:

    Okay. Changing the tile on the PowerPoint template solved the problem. Which is great. My choice now is

    * Work out what caused the problem and fix that.

    * Write some code to detect missing colours and change *all* of the offending ones.

    ###### 01/10/2016-19:33:50 BST:

    I suspect I'll go with option B But possibly tomorrow.

  • Project report 30th September

    Joe Reddington09/30/2016 at 19:16 0 comments

    The below was submitted to one of our backers today, and I thought it would be a nice test as an initial project log post. These pages were written with the help of the Thing Explainer - which checks writing to see if it uses words outside of the top 'ten hundred' words. This makes it a lot easier to understand for people who have use different languages or who have other problems around writing.

    Since the work started in May, we have been very happy with how well things have gone. The Open Voice Factory is ahead of where we expected as a working service, and more people know about the Factory, are helping us build the Factory, or are using the Factory than we expected by this point. However we have had other areas go much slower than expected, which has been hard.

    We will talk about our actions below in, or close to, the order they happened. Often the same action served several goals. We changed the name of the project during this time, but will only use the name "The Open Voice Factory" below.

    Goal: Making personal information safe

    Action: So that we could write training information and so that the people we want to help could try the Factory, we had to make a system that allowed people to easily get to the voices they had made, while also allowing them to keep personal information safe from others.

    We used an idea that the company Dropbox uses, so that each voice system has a hidden URL, that only the person who made it can give to people. Now people can use their own systems easily, without worrying that other people will work out where their voice system is and watch them.

    Result: The people trying the Factory really liked the approach: the people we work with care a lot more about how easy something is to use rather than keeping personal information safe.

    Figure 1: Part of our work with Southampton University

    Goal: Making the Factory better and getting researchers to use it.

    Action: If The Open Voice Factory can be the 'normal' thing that AAC researchers use, then it will have a much longer life, and many more people (who have more money) will keep making it better and better.

    This means researchers can both help us find people to help, and, in future, give us money we can use to make the Factory better. With this in mind we have been working with Southampton University to make the Factory into the right AAC engine for their work: an Arabic Language AAC system.

    Result: the Arabic language has lots of special cases that make it much harder to build an AAC system. This work is very big and it has been a very good way to see how ready The Open Voice Factory is for people to use. The researchers really stretched the system and we have had to add many extra pieces of work and fix lots of tiny things we found that were wrong with the system. Because we had these people helping us we were able to show a working 'Beta' of the Factory much earlier than we expected. Also, many more AAC researchers know about the Factory, and what it can do, now and there is much more chance they will use it in their own work. When they do, it will make it more easy to get other people to try the Factory.

    Goal: The Open Voice Factory works well with other AAC systems

    Action: we are working hard to making sure that the Open Voice Factory works well with other AAC systems. If the Open Voice Factory can read and write in the language that other AAC systems do then there is more chance that it will become part of a larger Toolchain. If it is part of a larger Toolchain, then more people will want to make it work better.

    Result: this has been a hard goal. We have several people who are working on this, but it is yet to work.

    Figure 2: The Open Voice Factory at International Society of AAC conference

    Goals: Tell AAC experts about the Factory, find the best names for the Factory, find out what other people are working on, get in touch with people who might be willing to help us for free.

    Action: to talk to people about the different ways AAC is needed...

    Read more »

View all 7 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates