Re: [orca-list] Orca: how to change voice dynamically



Hello,

we also discussed the various concequences of dynamic language changing
so here are my thoughts (hopefully quite consistent with the view of
other people involved in the Free(b)soft project).

1. We should definitely not mix the language detection on the side of
applications and its correct switching on the side of Orca (or other
assistive technologies).  In each application the information about the
language is stored completely differently and this is not the goal of
the assistive technology to care about that side of the problem at all.
 In web pages, for instance, the information should be encoded within
HTML.  If it is not, this is the fault of the author and we can not do
much about it.  We can, for example, default to the current locale
language.  In office documents, tha language is usually set for each
document as this is necessary for the spell checker to work correctly.
In e-mails, there is no standard language seletcion mechanism, so the
situation seems quite bad for mail readers, but again, this is not our
problem.  There are also some algorithms which would allow truly
automatic detection of the language of a text (such as spell checking
the text by various languages and selecting the language with best
results), but these algorithms will not be used by assistive
technologies.  Applications, such as mail readers may apply that if they
want to provide better information to assistive technologies and if a
certain method is usable in their domain of operation.

2. The infrastructure (AT-SPI) should provide a means to inform the
assistive technology about the language of each piece of text transfered
through it.

3. The assistive technology (Orca) should be able to switch the current
language according to the information obtained from the infrastructure.
 For situations, when the application doesn't provide the correct
information, the assistive technology should allow the user to switch
the language explicitly (e.g. through a keyboard command).  The user
will typically use just a few languages he is able to speak/understand.
 The assistive technology should provide a means to configure voices
used for each of the user's languages (limited by the capabilities of
speech synthesizers installed on the system).

So the solution I'd see for Orca and which I already discussed with Will
at Guadec would be to extend the Orca speech preferences page in a way,
that the user first selects the language for which he selects the voice
(the list of available languages would be editable too) and then he
selects the speech system, synthesizer, voice and it's parameters.

Then Orca would provide a command (with assignable keyboard shortcut) to
cycle between the configured languages).  The selected language would be
then used as a default for the application/window where it was invoked.
 This is very similar to keyboard swithing in Gnome.  The "defalut
default" language (prior to swithing explicitly) would be the current
locale language.

Apart from the default language, Orca would automatically switch the
voice when the infrustructure provides the specific information about
the language of the text if the user has given language configuren in
his Orca speech preferences.

My comments to Halim's suggestions:
1. Changing the language without an userinteraction is one of the
features which are turned of in my windows screenreader because it 
is not working reliable for websites.
Some times I am getting english synthesis with german text etc.
Sure this is a problem of those websites but there are many of such 
broken sites in the web.

Yes, there are.  You would have a chance to switch manually if the
information is not provided correctly.

I can't think of an usefull usecase for such a feature for other
appsbecause it needs heavy change in orca and it's use shouldn't bring
slowdowns or other unwanted effect to other users who don't need such a
feature.

The users, who have just one language in Orca speech preferences, would
never hear any other language, even if the application informs the AT
about a different language.

2. Doing the language stuff for normal desktop applications:
Detecting the used language would be the first step to  implementing this
feature.
This can be difficult:
e. G. When I don't use german umlauts in my application, the used
characters are the same as for other languages like english.
So in this case the language detection can fail.
Is there a way to detect the used Lang in such cases?

Yes, for example the one I discribed above.  But an any case, this is
not such a crucial problem when there is a way to switch manually.

3. Detecting the language could be done using some language dependant
dictionaries but this would slow down the workflow in orca.

This is the problem of each application.  If it wants to provide the
correct information, it needs to think about the drawbacks.  The
algorithm is typically not applied to each single piece of text sent to
Orca, but for example on each mail message when it is displayed in the
message view area, which should not really be an important slow-down.
Again, it is not an argument against this feature in Orca, but agains a
particular imlementation in a particular application.

4. Another problem is that orca translates e. G. Interpunction
characters to the 
selected systemlanguage (locale based).
changing only the synthesizer wouldn't be enough!
When implementing the dynamic peechanguage  in orca the locale based
translation needs to be
changed.

This is a nice example why Speech Dispatcher leaves interpunction
interpretation up to the speech synthesis system, rather than to the
assistive technology.  This should work without a change in Orca when
Orca is used with the Speech Dispatcher backend.

Orca must handle the language stuff this way that a aplication can
switch the used orca-language (completely).

Or not handle it itself at all as we always recommended.

Please try to make such changes configurable!!!

Yes, for example in the way I suggested.

Best regards, Tomas



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]