NV Speech Player. Un sintetizador de voz baseado no motor Klatt escrito en c++

Información Xeral

NV Speech Player é un prototipo libre e de código aberto de sintetizador de voz que se pode utilizar co NVDA. Xenera fala utilizando síntesis Klatt, facéndoo un pouco semellante ós sintetizadores de voz como Dectalk e Eloquence.

Licenza e copyright

NV Speech Player é Copyright (c) 2014 Contribuíntes co NV Speech Player NV Speech Player está cuberto pola GNU General Public License (Versión 2). Es libre de compartir ou cambiar este software de calquera forma que queiras sempre que estea acompañado pola licenza e fagas todo o código fonte dispoñible para calquera que o queira. Isto aplica tanto para copias orixinais como modificadas deste software, ademáis de calquera traballo derivativo. Para máis detales, podes ver a licenza en liña en: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

Antecedentes

Os anos 70 e 80 viron unha grande investigación na síntesis de voz. Un dos máis prominentes modelos de síntesis que apareceu foi unha síntesis de formantes de frecuencia coñecido como síntesis Klatt. Algúns sintetizadores Klatt ben coñecidos son Dectalk e Eloquence. Son moi adecuados para o seu uso por parte de cegos xa que son extremadamente sensibles, a súa pronuncia é suave e intelilixible, e son pequenos en memoria. Nembargantes, a investigación pronto se moveu cara outros xeitos de síntesis como a fala concatenativa, xa que aíndaque ésta era máis lenta, estaba moito máis perto á voz humana. Esto era unha avantaxe para a súa utilización en aplicacións de uso común como unidades de GPS ou sistemas de telefonía, pero non foi necesariamente unha avahntaxe para os cegos, quenes tenden a preocuparse máis da capacidade de resposta e a intelixibilidade.

Aíndaque os sintetizadores como Dectalk e Eloquence continuaron manteñéndose e disponibles por casi 20 anos, agora estanse a volver máis difíciles de conseguir, con múltiples compañías dicindo que éstos, e as súas variantes, remataron definitivamente e non serán actualizados nunca máis.

A síntesis concatenativa agora está comezando a ser prometedora como un reemplazo xa que a capacidade de resposta e a suavidade está mellorando. Sen embargo, a maioría se non todos os sintetizadores de calidade aceptable son commerciales e son bastante caros.

Dectalk e Eloquence foron productos comerciais de fonte pechada. Non obstante, hai unha cantidade sustancial de código fonte e recursos materiais sobre síntesis Klatt dispoñibles para a comunidade. NV Speech Player trata de tomar avantaxe desto por seres un prototipo moderno dun sintetizador Klatt, ca esperanza de ser un reemplazo de sintetizadores como Dectalk ou Eloquence, ou ó menos o reinicio da investigación e conversación acerca deste método de síntesis.

O sintetizador eSpeak, en sí un producto libre e de código aberto demostrou ser bo como un reemplazo para un certo número de xente na comunidade, pero moita xente que o escoitan sinalan rápidamente o seu son "metálico" e non parecen continuar utilizándoo. Aíndaque os autores do NV Speech Player todavía prefiren ó eSpeak como o seu sintetizador de elección, aínda tratarían de entender mellor esta extrana resistencia a eSpeak que pode ter algo que ver ca síntesis de frecuencia espectral de versos de eSpeak da síntesis Klatt. Tamén pode ter que vber co feito de que as consoantes tamén se recolectan de voz grabada e polo tanto pode percibirse como se inxectan no proceso da fala.

Implementación

O motor de síntesis de voz mesmo está escrito en C++ utilizando modismos modernos, pero seguindo de perto a implementación de klsyn-88, que se atopa en https://linguistics.berkeley.edu/phonlab/resources/

Utilízase eSpeak para interpretar texto en fonemas representados en IPA, facendo uso do procesamento de diccionarios existente de eSpeak. eSpeak pódese atopar en: https://espeak.sourceforge.net/

Os formantes de Klatt para cada fonema individual foron recolectados na súa meirande parte dun proxecto chamado PyKlatt: https://code.google.com/p/pyklatt/ Porén, foi modificado aínda máis baseándose nas probas e na comparación cos propios datos de eSpeak.

As regras para lonxitude de fonemas, cortes, velocidade e entoación foron codificados a man en Python, aíndaque os proprios dados de entoación de eSpeak tratáronse de copiar tanto como fose posible.

Compilando NV Speech Player

Necesitarás: - Python 3.7: https://www.python.org - SCons 3: https://www.scons.org/ - Visual Studio 2019 Community

Para compilar: executa scons

Despois da compilación, haberá un ficheiro nvSpeechPlayer_xxx.nvda-addon no directorio raíz, onde xxx é a revisión git ou número de versión codificado. Instalando este complemento no NVDA permitirache utilizar o sintetizador Speech Player en NVDA. Ten en conta que cada vez que o necesites está no complemento, non se necesitan dlls extra ou ficheiros a copiar.