Skip to content

Virtual synth driver which can automatically recognise and switch between certain languages/synths #279

@nvaccessAuto

Description

@nvaccessAuto

Reported by aleksey_s on 2009-02-20 19:56
Often, user works with multilingual information. Also it is not a secret, that quite rarely one synthesizer can speak good enough in more than one language. So NVDA can have feature to automatic recognize language and change synthesizer/voice to the prefered for this particular language. I see two cases this can be implemented in:

  1. Using info, provided by some assistive APIs;
  2. Having an internal mechanizm to recognize (some of) languages in the text, no matter from where the text is coming;
  3. Also, have a combinet variant.

I myself do not like [becouse i have bad experience with such implementation in jaws. Also, i am not sure assistive APIs provide language info for each portion of text data. Or often text has very mixed cases, and i am even more unsure AT will split such text by portions and provide appropriate language info for each.
So for me, 2 is more suitable, and i will try explain my view how it can be done in NVDA.

We can implement virtual synthesizer, let's call it "Auto language". It will split input text by punctuation characters and build queue of phrases. For each phrase, language will be detected by applying some hard-coded rules, and then portion will be sent to the configured synthesizer. also, this virtual synthesizer needs know when portion is finished by real synthesizer, so it will add blank portion with some defined "index", and after wait in different thread when this index become active. Then it will send the next portion etc.
to avoid overhead of synthesizers switching, "auto language" synth can initialize all required synthesizers when it inits itself.

Requires

  • It must provide functionality to switch any settings of synthesizer/voice, including switching synthesizers, voices, variants or even rate. For example, one would read english slower, than his mother language.
  • It must be easy to add recognizer for the new language.

Problems

It is difficult to write rules for most east european languages.
Blocked by #312

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions