NV Speech Player. A Klatt-based speech synthesis engine written in c++

Pregled

NV Speech Player je eksperimentalan sintetizator otvorenog koda i može se besplatno koristiti uz NVDA. Generiše govor koristeći Klatt sintezu, što ga čini slično sintetizatorima kao što su Dectalk i Eloquence.

Licenca i autorska prava

NV Speech Player is Copyright (c) 2014 NV Speech Player contributors NV Speech Player is covered by the GNU General Public License (Version 2). You are free to share or change this software in any way you like as long as it is accompanied by the license and you make all source code available to anyone who wants it. This applies to both original and modified copies of this software, plus any derivative works. For further details, you can view the license online at: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

Pozadina

Sedamdesete i osamdesete su donele puno istraživanja sintetizatora govora. Jedan od sintetizatora koji je najviše obećavao se zvao Klatt sintetizator. Neki od naj poznatijih Klatt sintetizatora su Dectalk i Eloquence. Veoma su korisni za slepe zbog njihovog brzog odziva, njihov izgovor je veoma čist i predvidljiv, i zauzimaju malo memorije. Ali, istraživanje je brzo prešlo na druge oblike sintetizatora kao što su ljutski govor, budući da iako je ovo bilo sporije, bilo je mnogo bliže ljutskom glasu. Ovo je bila prednost za korišćenje u aplikacijama kao što su GPS uređaji ili telefonski sistemi, ali ne toliko za slepe, kojima treba brz odziv više nego lep zvuk.

Iako su sintetizatori kao što su Dectalk i Eloquence bili dostupni skoro dvadeset godina, sada postaju teži za dobijanje, uz kompanije koje govore da su oni, i njihove varijante, završili sa podrškom i neće biti ažurirani.

Ljutski sintetizatori sada postaju dobra zamena budući da se njihov odziv poboljšao. Ali, većina ako ne i svi sintetizatori visokog kvaliteta su komercionalni i skupi za nabavljanje.

Dectalk i Eloquence su bili komercionalni i proizvodi zatvorenog koda. Ali, postoji materijal i određeni deo koda o Klatt sintetizatoru dostupno zajednici. NV Speech Player Pokušava ovo da iskoristi kako bi bio moderan Klatt sintetizator, u nadi da će ili biti zamena za Dectalk ili Eloquence, ili da barem ponovno započne pretragu i razgovore o ovoj metodi sintetizatora.

Espeak, kao sintetizator otvorenog koda se pokazao kao dobra zamena za ove sintetizatore određenom broju ljudi, ali puno ljudi koji ga čuju brzo primeti njegov"Metalni" zvuk i nemogu da nastave sa korišćenjem. Iako autori NV Speech Playera Koriste Espeak kao njihov sintetizator, Pokušavaju da shvate ovaj čudan zvuk Espeaka što može biti prouzrokovano njegovom frekvencijom sinteze koja je suprotna Klatt sintetizatoru. Takođe može imati veze sa tim što su neki glasovi snimljenog govora i može izgledati kao da su ubačeni u govor.

Implementation

The synthesis engine itself is written in C++ using modern idioms, but closely following the implementation of klsyn-88, found at http://linguistics.berkeley.edu/phonlab/resources/

eSpeak is used to parse text into phonemes represented in IPA, making use of existing eSpeak dictionary processing. eSpeak can be found at: http://espeak.sourceforge.net/

The Klatt formant data for each individual phoneme was collected mostly from a project called PyKlatt: http://code.google.com/p/pyklatt/ However it has been further tweaked based on testing and matching with eSpeak's own data.

The rules for phoneme lengths, gaps, speed and intonation have been coded by hand in Python, though eSpeak's own intonation data was tried to be copied as much as possible.

Building NV Speech Player

You will need: - Python 3.7: http://www.python.org - SCons 3: http://www.scons.org/ - Visual Studio 2019 Community

To build: run scons

After building, there will be a nvSpeechPlayer_xxx.nvda-addon file in the root directory, where xxx is the git revision or hardcoded version number. Installing this add-on into NVDA will allow you to use the Speech Player synthesizer in NVDA. Note everything you need is in the add-on, no extra dlls or files need to be copied.