eSpeak - eSpeak

eSpeakNG
Autori originali Jonathan Duddington
Sviluppatore/i Reece Dunn
Versione iniziale febbraio 2006 ; 15 anni fa ( 2006-02 )
Rilascio stabile
1.50 / 2 dicembre 2019 ; 22 mesi fa ( 2019-12-02 )
Repository github .com /espeak-ng /espeak-ng /
Scritto in C
Sistema operativo Linux
Windows
macOS
FreeBSD
Tipo Sintetizzatore vocale
Licenza GPLv3
Sito web github .com /espeak-ng /espeak-ng /

eSpeakNG è un sintetizzatore vocale software compatto, open source per Linux , Windows e altre piattaforme. Utilizza un metodo di sintesi formante , fornendo molte lingue in una piccola dimensione. Gran parte della programmazione per il supporto linguistico di eSpeakNG viene eseguita utilizzando file di regole con feedback da madrelingua.

A causa delle sue piccole dimensioni e molte lingue, è incluso come sintetizzatore vocale predefinito nello screen reader open source NVDA per Windows, così come Android, Ubuntu e altre distribuzioni Linux. Il suo predecessore eSpeak è stato raccomandato da Microsoft nel 2016 ed è stato utilizzato da Google Translate per 27 lingue nel 2010; 17 di questi sono stati successivamente sostituiti da voci commerciali.

La qualità delle voci della lingua varia notevolmente. Nel predecessore di eSpeakNG, eSpeak, le versioni iniziali di alcune lingue erano basate su informazioni trovate su Wikipedia . Alcune lingue hanno ricevuto più lavoro o feedback da madrelingua rispetto ad altre. La maggior parte delle persone che hanno contribuito a migliorare le varie lingue sono utenti non vedenti della sintesi vocale.

Storia

Nel 1995, Jonathan Duddington ha rilasciato il sintetizzatore vocale Speak per computer RISC OS che supportano l'inglese britannico. Il 17 febbraio 2006, Speak 1.05 è stato rilasciato sotto licenza GPLv2 , inizialmente per Linux , con una versione Windows SAPI 5 aggiunta nel gennaio 2007. Lo sviluppo su Speak è continuato fino alla versione 1.14, quando è stato rinominato eSpeak.

Lo sviluppo di eSpeak è continuato dalla 1.16 (non c'era una versione 1.15) con l'aggiunta di un programma eSpeakEdit per la modifica e la creazione dei dati vocali eSpeak. Questi erano disponibili solo come download di sorgenti e binari separati fino a eSpeak 1.24. La versione 1.24.02 di eSpeak è stata la prima versione di eSpeak ad essere controllata tramite subversion , con download separati di sorgenti e binari resi disponibili su SourceForge. Da eSpeak 1.27, eSpeak è stato aggiornato per utilizzare la licenza GPLv3 . L'ultima versione ufficiale di eSpeak è stata 1.48.04 per Windows e Linux, 1.47.06 per RISC OS e 1.45.04 per macOS . L'ultima versione di sviluppo di eSpeak è stata la 1.48.15 il 16 aprile 2015.

eSpeak utilizza lo schema Usenet per rappresentare fonemi con caratteri ASCII.

eSpeak NG

Il 25 giugno 2010, Reece Dunn ha avviato un fork di eSpeak su GitHub utilizzando la versione 1.43.46. Questo è iniziato come uno sforzo per semplificare la creazione di eSpeak su Linux e altre piattaforme POSIX .

Il 4 ottobre 2015 (6 mesi dopo il rilascio 1.48.15 di eSpeak), questo fork ha iniziato a divergere in modo più significativo dall'eSpeak originale.

L'8 dicembre 2015, ci sono state discussioni sulla mailing list di eSpeak sulla mancanza di attività da parte di Jonathan Duddington negli 8 mesi precedenti all'ultima versione di sviluppo di eSpeak. Questo si è evoluto in discussioni sul continuo sviluppo di eSpeak in assenza di Jonathan. Il risultato è stata la creazione del fork espeak-ng (Next Generation), utilizzando la versione GitHub di eSpeak come base per lo sviluppo futuro.

L'11 dicembre 2015 è stato avviato il fork espeak-ng. La prima versione di espeak-ng è stata la 1.49.0 il 10 settembre 2016, contenente una significativa pulizia del codice, correzioni di bug e aggiornamenti della lingua.

Caratteristiche

eSpeakNG può essere utilizzato come programma a riga di comando o come libreria condivisa.

Supporta il linguaggio di sintesi vocale (SSML).

Le voci della lingua sono identificate dal codice ISO 639-1 della lingua . Possono essere modificati da "varianti vocali". Si tratta di file di testo che possono modificare caratteristiche come la gamma di tonalità, aggiungere effetti come eco, sussurro e voce gracchiante o apportare regolazioni sistematiche alle frequenze formanti per modificare il suono della voce. Ad esempio, "af" è la voce afrikaans. "af+f2" è la voce afrikaans modificata con la variante di voce "f2" che cambia le formanti e la gamma di tonalità per dare un suono femminile.

eSpeakNG usa una rappresentazione ASCII dei nomi dei fonemi che è vagamente basata sul sistema Usenet .

Le rappresentazioni fonetiche possono essere incluse all'interno dell'input di testo includendole tra doppie parentesi quadre. Ad esempio: espeak-ng -v en "Hello [[w3:ld]]" dirà Hello world in inglese. A proposito di questo suono

Metodo di sintesi

Introduzione a ESpeakNG di eSpeakNG in inglese

eSpeakNG può essere utilizzato come traduttore di sintesi vocale in diversi modi, a seconda della fase di traduzione vocale che l'utente desidera utilizzare.

1. passaggio — traduzione da testo a fonema

Ci sono molte lingue (in particolare l' inglese ) che non hanno regole univoche tra scrittura e pronuncia; pertanto, il primo passo nella generazione della sintesi vocale deve essere la traduzione da testo a fonema.

  1. il testo di input viene tradotto in fonemi di pronuncia (ad es. il testo di input xerox viene tradotto in zi@r0ks per la pronuncia).
  2. pronuncia i fonemi sono sintetizzati nel suono, ad es. zi@r0ks è espresso come zi@r0ks in modo monotonoA proposito di questo suono

Per aggiungere l'intonazione al parlato, ad esempio , sono necessari dati di prosodia (es. accento di sillaba, tono discendente o crescente della frequenza di base, pausa, ecc.) e altre informazioni, che consentono di sintetizzare un discorso più umano e non monotono. Ad esempio, nel formato eSpeakNG la sillaba accentata viene aggiunta usando l'apostrofo: z'i@r0ks che fornisce un discorso più naturale: z'i@r0ks con intonazioneA proposito di questo suono

Per confronto due campioni con e senza dati di prosodia:

  1. [[DIs Iz m0noUntoUn spi:tS]] è scritto in modo monotonoA proposito di questo suono
  2. [[DIs Iz 'Int@n,eItI2d sp'i:tS]] è scritto in modo intonatoA proposito di questo suono

Se eSpeakNG viene utilizzato solo per la generazione di dati di prosodia, i dati di prosodia possono essere utilizzati come input per le voci diphone MBROLA .

2. passo — sintesi del suono dai dati della prosodia

L'eSpeakNG fornisce due diversi tipi di sintesi vocale formante utilizzando i suoi due diversi approcci. Con il proprio sintetizzatore eSpeakNG e un sintetizzatore Klatt :

  1. Il sintetizzatore eSpeakNG crea suoni vocali sonori come vocali e consonanti sonore mediante sintesi additiva sommando onde sinusoidali per creare il suono totale. Le consonanti afone, ad es. /s/, vengono prodotte riproducendo suoni registrati, poiché sono ricche di armoniche, il che rende meno efficace la sintesi additiva. Le consonanti sonore come /z/ sono realizzate mescolando un suono sonoro sintetizzato con un campione registrato di suono non sonoro.
  2. Il sintetizzatore Klatt utilizza principalmente gli stessi dati formanti del sintetizzatore eSpeakNG. Ma produce anche suoni per sintesi sottrattiva partendo dal rumore generato, che è ricco di armoniche, e quindi applicando filtri digitali e avvolgenti per filtrare lo spettro di frequenza necessario e l'inviluppo sonoro per particolari consonanti (s, t, k) o sonoranti ( l, m, n) suono.

Per le voci MBROLA , eSpeakNG converte il testo in fonemi e contorni di tono associati. Lo passa al programma MBROLA utilizzando il formato file PHO, catturando l'audio creato in uscita da MBROLA. L'audio viene quindi gestito da eSpeakNG.

Le lingue

eSpeakNG esegue la sintesi vocale per le seguenti lingue:

  1. Abaza
  2. cinese
  3. Lontano
  4. afrikaans
  5. albanese
  6. amarico
  7. Greco antico
  8. arabo 1
  9. aragonese
  10. Armeno ( armeno orientale )
  11. Armeno ( armeno occidentale )
  12. assamese
  13. Azero
  14. Bashkir
  15. basco
  16. Inglese basico
  17. bielorusso
  18. bengalese
  19. Bhojpuri
  20. Bishnupriya Manipuri
  21. bosniaco
  22. bulgaro
  23. bretone
  24. birmano
  25. cantonese
  26. catalano
  27. Cebuano
  28. Cherokee
  29. Chichewa
  30. cinese ( mandarino )
  31. corso
  32. croato
  33. ceco
  34. Chuvash
  35. Slavo Ecclesiastico
  36. danese
  37. olandese
  38. Dzongkha
  39. inglese ( americano )
  40. inglese ( britannico )
  41. inglese ( caraibico )
  42. Inglese ( Lancaster )
  43. Inglese ( pronuncia ricevuta )
  44. Inglese ( Scozzese )
  45. Inglese ( Midlands Occidentali )
  46. esperanto
  47. estone
  48. finlandese
  49. filippino
  50. francese ( belga )
  51. francese ( Francia )
  52. francese ( svizzero )
  53. frisone
  54. galiziano
  55. georgiano
  56. Tedesco
  57. Greco ( moderno )
  58. groenlandese
  59. Guaranì
  60. Gujarati
  61. Hakka cinese 3
  62. Creolo haitiano
  63. Hausa
  64. hawaiano
  65. ebraico
  66. Alto Valyriano
  67. hindi
  68. Hmong
  69. ungherese
  70. islandese
  71. Igbo
  72. indonesiano
  73. Io faccio
  74. Interlingua
  75. Interlingue
  76. irlandesi
  77. italiano
  78. giapponese 4
  79. Kannada
  80. kazako
  81. Khmer
  82. Klingon
  83. Kʼicheʼ
  84. Kirundi
  85. Kinyarwanda
  86. Konkani
  87. coreano
  88. curdo
  89. Kirghizistan
  90. Quechua
  91. Ladakhi
  92. Lao
  93. latino
  94. ladino
  95. latgaliano
  96. lettone
  97. Lang Belta
  98. Lingua Franca Nova
  99. Lepcha
  100. Limbu
  101. lituano
  102. Lojban
  103. lussemburghese
  104. macedone
  105. Maithili
  106. malgascio
  107. malese
  108. Malayalam
  109. maltese
  110. Māori
  111. Marathi ,
  112. mongolo
  113. Nahuatl ( classico )
  114. Navajo
  115. nepalese
  116. Norvegese ( Bokmål )
  117. Sotho settentrionale
  118. Nogai
  119. Odia
  120. Oromo
  121. Occitano
  122. papiamento
  123. Palauan
  124. Pashto
  125. persiano
  126. Persiano ( alfabeto latino ) 2
  127. polacco
  128. portoghese ( brasiliano )
  129. Portoghese ( Portogallo )
  130. punjabi
  131. Pyash (un linguaggio costruito )
  132. rumeno
  133. russo
  134. Russo ( Lettonia )
  135. samoano
  136. sanscrito
  137. Gaelico Scozzese
  138. serbo
  139. Shan (Tai Yai),
  140. Sharda
  141. Sesotho
  142. Shona
  143. Sindhi
  144. singalese
  145. slovacco
  146. sloveno
  147. somalo
  148. spagnolo ( Spagna )
  149. spagnolo ( latinoamericano )
  150. Swahili
  151. svedese
  152. tagiko
  153. Tamil
  154. tataro
  155. Telugu
  156. tibetano
  157. Tswana
  158. tailandese
  159. turkmeno
  160. Turco
  161. tataro
  162. uiguro
  163. ucraino
  164. Urdu
  165. uzbeko
  166. Vietnamita ( vietnamita centrale )
  167. Vietnamita ( vietnamita del nord )
  168. Vietnamita ( vietnamita meridionale )
  169. Volapük
  170. gallese
  171. wolof
  172. Xhosa
  173. yiddish
  174. Yoruba
  175. Zulu
  1. Attualmente, è supportato solo l' arabo completamente diacritizzato .
  2. Persiano scritto utilizzando caratteri inglesi (latini) .
  3. Attualmente è supportato solo Pha̍k-fa-sṳ .
  4. Attualmente sono supportati solo Hiragana e Katakana .

Guarda anche

Riferimenti

link esterno