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

Panoramica

NV Speech Player è un prototipo di sintetizzatore gratuito e open-source che può essere utilizzato da NVDA. Produce output vocale utilizzando la sintesi Klatt, rendendola piuttosto simile a sintesi vocali come Dectalk e Eloquence.

Licenza e copyright

NV Speech Player è Copyright (c) 2014 dei contributori di NV Speech Player. NV Speech Player è coperto dalla GNU General Public License (Versione 2). Siete liberi di condividere o modificare questo software in qualunque modo vogliate, a condizione che sia accompagnato dall'accordo di licenza e rendiate il codice sorgente disponibile per chiunque lo voglia. Ciò si applica sia alle copie originali che a quelle modificate di questo software, oltre che ad ogni lavoro da esse derivante. Per ulteriori dettagli, potete consultare l'accordo di licenza sul sito http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

Contesto

Negli anni '70 e '80 ha avuto luogo una notevole attività di ricerca nel settore delle sintesi vocali. Uno dei più importanti modelli di sintesi che apparve in quel periodo fu una sintesi a frequenza formante chiamata Klatt. Alcune sintesi vocali conosciute del tipo Klatt sono Dectalk e Eloquence. Esse si adattano molto bene all'utilizzo da parte delle persone cieche e rispondono molto rapidamente ai comandi, la loro pronuncia è fluida e prevedibile e occupano poca memoria. Ad ogni modo, la ricerca si è presto spostata su altre forme di sintesi, come quella concatenativa, perché, nonostante fosse più lenta, era molto più vicina alla voce umana. Ciò è risultato un vantaggio per l'utilizzo nelle applicazioni mainstream (come i sistemi GPS o telefonici), ma non necessariamente un grosso vantaggio per le persone cieche, che tendono a tenere in maggiore considerazione la rapidità di risposta e la prevedibilità rispetto alla gradevolezza.

Nonostante le sintesi come Dectalk ed Eloquence abbiano continuato ad essere manutenute e disponibili per quasi 20 anni, al momento stanno diventando più difficili da trovare, con diverse società che dicono che queste, e le loro varianti, sono state abbandonate e non verranno più aggiornate.

Il modello di sintesi concatenativa sta iniziando ora a proporsi come valido sostituto del precedente, poiché stanno migliorando la sua fruidità e rapidità di risposta. Ad ogni modo, molte se non tutte le sintesi si questo tipo di qualità accettabile sono a pagamento e piuttosto costose.

Sia Dectalk che Eloquence sono state anch'esse prodotti commerciali e closed-source. C'è però una notevole quantità di codice sorgente e materiale di ricerca sulle sintesi Klatt disponibile per tutti. NV Speech Player cerca di trarre vantaggio da ciò; è infatti un prototipo moderno di sintesi Klatt, nella speranza di essere un sostituto di sintesi come Dectalk o Eloquence, o almeno di riavviare la ricerca e il dibattito su questo metodo di sintesi.

La sintesi eSpeak, essa stessa un prodotto gratuito e open-source, si è dimostrata un valido sostituto per un certo numero di persone nella comunità, ma molte persone che la ascoltano sottolineano subito il suo suono metallico e sembrano non poter continuare a utilizzarla. Nonostante gli autori di NV Speech Player preferiscano ancora eSpeak come sintesi vocale per il loro uso quotidiano, costoro sperano ancora di provare e comprendere meglio questa strana resistenza a eSpeak, che può avere qualcosa a che fare con le sue frequenze spettrali, se comparate a quelle delle Klatt. Essa può anche avere a che fare con il fatto che le consonanti sono anche raccolte da voci registrate e possono quindi essere percepite come iniettate nel parlato.

Implementazione

Il motore della sintesi è scritto in C++, utilizzando costrutti moderni, ma seguendo l'implementazione di klsyn-88, che si trova sul sito http://linguistics.berkeley.edu/phonlab/resources/

Viene utilizzata eSpeak per suddividere il testo in fonemi rappresentati in IPA, facendo uso del trattamento dei dizionari di eSpeak esistente. eSpeak si può trovare sul sito: http://espeak.sourceforge.net/

I dati sulla frequenza di Klatt per ogni fonema sono stati raccolti soprattutto da un progetto chiamato PyKlatt: http://code.google.com/p/pyklatt/ Essi sono comunque stati modificati in base a test e confronti con i dati di eSpeak.

Le regole per la lunghezza, gli stacchi, la velocità e l'intonazione dei fonemi sono state codificate a mano in Python, anche se si è cercato di copiare i dati sull'intonazione di eSpeak il più possibile.

Compilare NV Speech Player

Vi serviranno: - Python 3.7: http://www.python.org - SCons 3: http://www.scons.org/ - Visual Studio 2019 Community

Per compilare, eseguite scons

Dopo la compilazione, troverete un file nvSpeechPlayer_xxx.nvda-addon nella cartella radice, dove xxx è la revisione GIT o il numero di versione. L'installazione di questo add-on in NVDA vi permetterà di utilizzare il sintetizzatore Speech Player in NVDA. Notate che ogni cosa di cui avete bisogno è nell'add-on: non c'è bisogno di copiare nessun ulteriore file o dll.