eSpeak es un sintetizador de voz de software compacto, multiplataforma , de código abierto y gratuito . Utiliza un método de síntesis de formantes , que ofrece muchos idiomas en un tamaño de archivo relativamente pequeño. eSpeakNG (Next Generation) es una continuación del proyecto del desarrollador original con más comentarios de hablantes nativos.
Debido a su pequeño tamaño y a su gran cantidad de idiomas, eSpeakNG está incluido en NVDA [2], un lector de pantalla de código abierto para Windows, así como para Android [3] , Ubuntu [4] y otras distribuciones de Linux. Su predecesor, eSpeak, fue recomendado por Microsoft en 2016 [5] y fue utilizado por Google Translate para 27 idiomas en 2010; [6] 17 de ellos fueron posteriormente reemplazados por voces propietarias. [7]
La calidad de las voces de los idiomas varía mucho. En eSpeakNG, el predecesor de eSpeak, las versiones iniciales de algunos idiomas se basaban en información encontrada en Wikipedia . [8] Algunos idiomas han recibido más trabajo o comentarios de hablantes nativos que otros. La mayoría de las personas que han ayudado a mejorar los distintos idiomas son usuarios ciegos de la conversión de texto a voz.
En 1995, Jonathan Duddington lanzó el sintetizador de voz Speak para computadoras con sistema operativo RISC que admitían inglés británico. [9] El 17 de febrero de 2006, se lanzó Speak 1.05 bajo la licencia GPLv2 , inicialmente para Linux , con una versión SAPI 5 para Windows agregada en enero de 2007. [10] El desarrollo de Speak continuó hasta la versión 1.14, cuando se renombró a eSpeak.
El desarrollo de eSpeak continuó desde la versión 1.16 (no hubo una versión 1.15) [10] con la adición de un programa eSpeakEdit para editar y construir los datos de voz de eSpeak. Estos solo estaban disponibles como descargas binarias y de código fuente independientes hasta la versión 1.24 de eSpeak. La versión 1.24.02 de eSpeak fue la primera versión de eSpeak en ser controlada por subversion [11] , con descargas binarias y de código fuente independientes disponibles en SourceForge [10] A partir de la versión 1.27 de eSpeak, eSpeak se actualizó para usar la licencia GPLv3 [11] La última versión oficial de eSpeak fue la 1.48.04 para Windows y Linux, la 1.47.06 para RISC OS y la 1.45.04 para macOS [ 12] La última versión de desarrollo de eSpeak fue la 1.48.15 del 16 de abril de 2015 [13]
eSpeak utiliza el esquema Usenet para representar fonemas con caracteres ASCII. [14]
El 25 de junio de 2010, [15] Reece Dunn inició una bifurcación de eSpeak en GitHub utilizando la versión 1.43.46. Esto comenzó como un esfuerzo para facilitar la creación de eSpeak en Linux y otras plataformas POSIX .
El 4 de octubre de 2015 (6 meses después del lanzamiento de la versión 1.48.15 de eSpeak), esta bifurcación comenzó a divergir de manera más significativa del eSpeak original. [16] [17]
El 8 de diciembre de 2015, hubo discusiones en la lista de correo de eSpeak sobre la falta de actividad de Jonathan Duddington durante los 8 meses anteriores a la última versión de desarrollo de eSpeak. Esto evolucionó a discusiones sobre el desarrollo continuo de eSpeak en ausencia de Jonathan. [18] [19] El resultado de esto fue la creación de la bifurcación espeak-ng (Next Generation), que utiliza la versión de GitHub de eSpeak como base para el desarrollo futuro.
El 11 de diciembre de 2015, se inició la bifurcación de espeak-ng. [20] La primera versión de espeak-ng fue 1.49.0 el 10 de septiembre de 2016, [21] que contenía una importante limpieza de código, correcciones de errores y actualizaciones de lenguaje.
eSpeakNG se puede utilizar como un programa de línea de comandos o como una biblioteca compartida.
Admite lenguaje de marcado de síntesis de voz (SSML).
Las voces de los idiomas se identifican mediante el código ISO 639-1 del idioma . Pueden modificarse mediante "variantes de voz". Se trata de archivos de texto que pueden cambiar características como el rango de tono, añadir efectos como eco, susurro y voz ronca, o realizar ajustes sistemáticos en las frecuencias de los formantes para cambiar el sonido de la voz. Por ejemplo, "af" es la voz afrikaans. "af+f2" es la voz afrikaans modificada con la variante de voz "f2" que cambia los formantes y el rango de tono para dar un sonido femenino.
eSpeakNG utiliza una representación ASCII de nombres de fonemas que se basa vagamente en el sistema Usenet .
Las representaciones fonéticas se pueden incluir en la entrada de texto colocándolas entre corchetes dobles. Por ejemplo: espeak-ng -v en "Hola [[w3:ld]]" dirá
en inglés.eSpeakNG se puede utilizar como traductor de texto a voz de diferentes maneras, dependiendo del paso de traducción de texto a voz que el usuario desee utilizar.
Hay muchos idiomas (especialmente el inglés ) que no tienen reglas claras y unívocas entre la escritura y la pronunciación; por lo tanto, el primer paso en la generación de texto a voz tiene que ser la traducción de texto a fonemas.
Para añadir entonación al habla, es decir, datos de prosodia, son necesarios (por ejemplo, el acento de la sílaba, el tono ascendente o descendente de la frecuencia básica, pausas, etc.) y otra información que permita sintetizar un habla más humana y no monótona. Por ejemplo, en el formato eSpeakNG, la sílaba acentuada se añade utilizando un apóstrofo: z'i@r0ks , que proporciona un habla más natural:
Para comparar, dos muestras con y sin datos de prosodia:
Si eSpeakNG se utiliza únicamente para la generación de datos de prosodia, entonces los datos de prosodia se pueden usar como entrada para voces difónicas MBROLA .
El eSpeakNG ofrece dos tipos diferentes de síntesis de voz por formantes utilizando dos enfoques diferentes. Con su propio sintetizador eSpeakNG y un sintetizador Klatt : [22]
Para las voces de MBROLA , eSpeakNG convierte el texto en fonemas y contornos de tono asociados. Pasa estos datos al programa MBROLA mediante el formato de archivo PHO y captura el audio creado en la salida de MBROLA. Luego, eSpeakNG procesa ese audio.
eSpeakNG realiza síntesis de texto a voz para los siguientes idiomas: [24]