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

Áttekintés

Az NV Speech Player egy ingyenes, nyílt forráskódú kísérleti beszédszintetizátor az NVDA-hoz. A beszédet az ún. Klatt technológiával állítja elő, akár csak a Dectalk vagy az Eloquence beszédszintetizátor.

Licenc és copyright

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

Háttér

A 70-es és 80-as években komoly kutatásokat folytattak a gépi beszédképzés területén. Az egyik kiemelkedő modell a formáns frekvenciakövetéses módszeren alapuló beszédképzést alkalmazó ún. Klatt beszédalkotás volt. Ilyen jól ismert Klatt beszédszintetizátor volt a Dectalk és az Eloquence. Ezek különösen alkalmasnak bizonyultak a vakok számára, mert kiemelkedően gyors a válaszidejük, a kiejtésük egyszerű, kiszámítható és előrelátható, és kevés memóriát foglalnak. Azonban a kutatások más beszédképzés irányába haladtak, mint például az összefűzéses beszédképzés. Bár ezek lassabbak voltak, jobban megközelítették az emberi hangot. Ez előnynek bizonyult a mindennaposan használt alkalmazásokban, pl. gps-egységekben, telefonrendszerekben, de ez az előny kevésbé szükséges a vakoknak, akik számára fontosabb a gyors válaszidő, valamint a semleges kiejtés.

Annak ellenére, hogy az olyan beszédszintetizátorokat, mint a Dectalk és Eloquence több mint húsz éven át hozzáférhetővé tették és frissítették, mára beszerzésük nehézkessé vált, az ezeket és különféle változataikat gyártó cégek szerint elavultak, és többé nem frissítik és forgalmazzák őket.

Az emberi hangmintákon alapuló, összefűzéses beszédképzés csak mostanában kezd abba a szakaszba jutni, hogy szóba jöhessen a régebbi technológiák felváltása; csak mostanában számolnak azzal, hogy a gyors válaszidővel és a semleges, kielégítő kiejtéssel képesek lesznek felváltani azokat. Azonban a ma kapható szintetizátorok egy része nem éri el a kielégítő minőséget, másrészt pedig drágák.

A Dectalk és az Eloquence zárt forráskódú kereskedelmiszoftverek voltak. Ennek ellenére a fejlesztő közösség számára van elegendő használható forráskód és kutatási anyag a Klatt beszédképzés megvalósítására. Az NV Speech Player megkísérli ezeket az előnyöket kihasználni, és egy új generációs Klatt beszédszintetizátorrá válni annak reményében, hogy alkalmas lesz felváltani a Dectalkot vagy az Eloquence-t, vagy hogy legalább alkalmas legyen arra, hogy újraindítsa a kutatásokat, vagy felélessze az e beszédképzési módszerrel kapcsolatos eszmecserét.

Az Espeak beszédszintetizátor, mely egy nyílt forráskódú szoftver, már önmagában is bizonyította, hogy e közösségben alternatívája az említett szoftvereknek, azonban sokan, akik hallották, nagyon hamar rámutattak arra, hogy az Espeak a fémes, rideg hangja miatt nem tűnik használhatónak. Annak ellenére, hogy az NV Speech Player fejlesztői is az Espeaket részesítik előnyben, próbálják megérteni, hogy mi az oka ennek az erős ellenállásnak, és érzik annak szükségét, hogy valamit tenni kell az Espeak beszédszintézisével, vagy a Klatt szintézissel. Kezdeni kell valamit azzal a helyzettel, hogy az összefűzéses beszédképzés során emberi hangmintákat gyűjtenek, és sokkal jobban érthető, ha ezeket illesztik a beszédfolyamba.

Kódolás

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.

Azok a szabályok, melyek a nyelvi jelek hosszát, szüneteit, gyorsaságát és kiejtését adják meg, kézzel pythonban lettek megírva, csupán az Espeak saját hanglejtési adatai másolását kísérelték meg olyan mértékben, amennyire csak lehetséges.

Az NV Speech Player elkészítése

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

A futtatható változat elkészítéséhez futtassa a Scons nevű szoftvert!

A folyamat létrehoz egy nvSpeechPlayer_xxx.nvda-addon fájlt a gyökérkönyvtárban, az xxx a "git revision" vagy a "hardcoded" verzió számát jelenti. Ha telepíti ezt a bővítményt az NVDA-ba, használhatja a Speech Player beszédszintetizátort aképernyőolvasójában. A bővítményben benne van minden szoftverösszetevő, további dll vagy egyéb fájlokat már nem kell másolni.