nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.12k stars 637 forks source link

Feature Request: Compile Mbrola phonemes in Espeak-ng #13840

Open FelipeZanabria opened 2 years ago

FelipeZanabria commented 2 years ago

Is your feature request related to a problem? Please describe.

Yes. In previous versions before Espeak-ng it was possible to copy the Mbrola files to Espeak and use the voices.

Describe the solution you'd like

Compile the Mbrola phonemes in the makefile.an file and include in NVDA, both the .phtrans files and the Voices/Mb folder with the voice files, (mb-br1, mb-en1 etc).

Describe alternatives you've considered

Another alternative is to use the old version of Espeak for sapi5, but this does not allow portability like NVDA. To use it you have to:

  1. Download Espeak from https://espeak.sourceforge.net/download.html
  2. Download the Mbrola release from https://github.com/numediart/MBROLA/releases/tag/3.3
  3. Download at least one Mbrola voice from https://github.com/numediart/MBROLA-voices
  4. Install Espeak. When requested, fill out the editing fields with the voice or voices to install. For example: en1 corresponds to mb-en1.
  5. Copy the downloaded voice(s) to c:\program files\Espeak\espeak-data\mbrola
  6. Unzip the Mbrola zip, find the mbrola.dll file and copy it to c:\Windows
  7. Switch to sapi5 and search for the newly installed voice.

    Additional context

    In versions of NVDA that used espeak, it was possible to use Mbrola by doing step 5, following the Espeak folder structure in NVDA_root\synthDrivers. For a portable copy, it was necessary to find the Mbrola dll in the installation folder and copy it to the NVDA root. Different from the old closed source version of Mbrola, this open source version does not disrupt NVDA by asking you to accept the license agreement. With this versions of NVDA there was also a problem that NVDA did not change the sample rate with 16 khz voices, which could now be solved by using the argument extracted from the Espeak-ng c header file: ESPEAK_API int espeak_GetSampleRate(void); To change the sample rate when changing the voice.

seanbudd commented 2 years ago

This is not something we plan on introducing.

zahra21 commented 2 years ago

i tested with nvda 2017.2 or 2017.3 and confirm your observation.

FelipeZanabria commented 1 year ago

I have updated the comment to follow the template.

FelipeZanabria commented 1 year ago

The addon located on https://github.com/FelipeZanabria/Espeak-wit-Mbrola closes #13840

seanbudd commented 1 year ago

This is not in NVDA core yet, please keep it open