Menu

#112 Mbrola voice crash with screen readers + Solution

v1.0 (example)
open
5
2014-03-06
2014-01-28
No

At least in windows OS, when blind users want use any Mbrola voices with screen readers such as JAWS & NVDA, The Mbrola license freeze screen reader until user can focus on license window and press one button. (Also windows+Tab not shown Mbrola license dialog but above problem is main difficulty because blind user can't hear any output speech.

A simple solution exist for fix this bug...

I emailed to "Thierry DUTOIT" and he said:

"The popup window appears only when the software is launched.
When it is left open, it should not ask for additional confirmation each time you use it in the same computer session..."

Hence one can invoke Mbrola license with an empty text and then use it for real use. This solve crash problem of (all) screen readers with Mbrola voices (in all OS).

Algorithm:
1- Create a variable with False value when load eSpeak.
2- Every time before use Mbrola voices, check variable if value be False then:
A: send an empty text for invoke Mbrola license,
B: change value of variable to True,
C: use that Mbrola voice.
But if value of variable be True then simply use that Mbrola voice.

Thanks in advance

Best Regards
Mahmood Taghavi

Discussion

  • Jonathan Duddington

    I don't understand your suggestion.

    The model licence dialog which freezes input to the computer is displayed by the mbrola DLL when it is loaded using the LoadLibraryA() system call. I don't know how eSpeak can prevent that.

    The only solution I can think of is for the mbrola DLL to be fixed so that it displays the licence dialog when it is installed on the computer, not when it is run. This is the behaviour of most programs when show a licence dialogue.

    This problem only occurs with the Windows version of mbrola, not with the Linux version.

     
  • Mahmood Taghavi

    Mahmood Taghavi - 2014-01-29

    I do several tests that work:

    1. Before use Mbrola voice with screen readers, I manually invoke Mbrola using empty text with TTSApp. It's not important to accept Mbrola license because after first invoke, Mbrola works without any limitation (even when license windows remain on screen).
    2. Before use Mbrola voice with screen readers, I manually invoke Mbrola using empty text with command_line eSpeak (for example: espeak -vmb-ir1 ""). It's not important to accept Mbrola license because after first invoke, Mbrola works without any limitation (even when license windows remain on screen).
    3. Before use Mbrola voice with screen readers, I manually invoke Mbrola using empty text with Mbrola PhoPlayer. I write only "start phoplayer" then "Exit" in a bat file without even define text and any Mbrola voice! It's not important to accept Mbrola license because after first invoke, Mbrola works without any limitation (even when license windows remain on screen).
      I test this methods for run JAWS and NVDA with SAPI5 interface and even run NVDA portable version (by copy ir1 diphone and mbrola.dll files). These methods can prevent crash screen readers. But we need eSpeak handle this problem automatically so users can use Mbrola voices easily and use it even in windows startup. Also this can facilitate using other applications with Mbrola voices.

    Best Regards
    Mahmood Taghavi

     

    Last edit: Mahmood Taghavi 2014-01-29
  • Mahmood Taghavi

    Mahmood Taghavi - 2014-03-06

    Best Solution for Windows OS:
    Like MaryTTS that prevent license problem by using "mbrola_cygwin"
    Please see attachment for more details

     

    Last edit: Mahmood Taghavi 2014-03-06

Log in to post a comment.

MongoDB Logo MongoDB