eSpeak - eSpeak

eSpeakNG
Originalautor(en) Jonathan Duddington
Entwickler Reece Dunn
Erstveröffentlichung Februar 2006 ; vor 15 Jahren ( 2006-02 )
Stabile Version
1,50 / 2. Dezember 2019 ; vor 22 Monaten ( 2019-12-02 )
Repository github .com /espeak-ng /espeak-ng /
Geschrieben in C
Betriebssystem Linux
Windows
macOS
FreeBSD
Typ Sprachsynthesizer
Lizenz GPLv3
Webseite github .com /espeak-ng /espeak-ng /

eSpeakNG ist ein kompakter Open-Source- Software- Sprachsynthesizer für Linux , Windows und andere Plattformen. Es verwendet eine Formant-Synthese- Methode, die viele Sprachen in einer kleinen Größe bereitstellt. Ein Großteil der Programmierung für die Sprachunterstützung von eSpeakNG erfolgt mithilfe von Regeldateien mit Feedback von Muttersprachlern.

Aufgrund seiner geringen Größe und vielen Sprachen ist es als Standard-Sprachsynthesizer im NVDA Open Source Screenreader für Windows sowie Android, Ubuntu und anderen Linux-Distributionen enthalten. Sein Vorgänger eSpeak wurde 2016 von Microsoft empfohlen und 2010 von Google Translate für 27 Sprachen verwendet; 17 davon wurden später durch kommerzielle Stimmen ersetzt.

Die Qualität der Sprachstimmen variiert stark. In eSpeakNGs Vorgänger eSpeak basierten die ersten Versionen einiger Sprachen auf Informationen, die auf Wikipedia gefunden wurden . Einige Sprachen haben mehr Arbeit oder Feedback von Muttersprachlern erhalten als andere. Die meisten Menschen, die zur Verbesserung der verschiedenen Sprachen beigetragen haben, sind blinde Benutzer von Text-to-Speech.

Geschichte

1995 veröffentlichte Jonathan Duddington den Speak-Sprachsynthesizer für RISC OS- Computer, die britisches Englisch unterstützen. Am 17. Februar 2006 wurde Speak 1.05 unter der GPLv2- Lizenz veröffentlicht, zunächst für Linux , mit einer Windows SAPI 5- Version, die im Januar 2007 hinzugefügt wurde. Die Entwicklung von Speak wurde bis Version 1.14 fortgesetzt, als es in eSpeak umbenannt wurde.

Die Entwicklung von eSpeak wurde ab 1.16 (es gab keine Version 1.15) mit dem Hinzufügen eines eSpeakEdit-Programms zum Bearbeiten und Erstellen der eSpeak-Sprachdaten fortgesetzt. Diese waren bis eSpeak 1.24 nur als separater Quell- und Binärdownload verfügbar. Die Version 1.24.02 von eSpeak war die erste Version von eSpeak, die mit Subversion versioniert wurde , wobei separate Quell- und Binär-Downloads auf SourceForge zur Verfügung gestellt wurden. Ab eSpeak 1.27 wurde eSpeak aktualisiert, um die GPLv3- Lizenz zu verwenden. Die letzte offizielle eSpeak-Version war 1.48.04 für Windows und Linux, 1.47.06 für RISC OS und 1.45.04 für macOS . Die letzte Entwicklungsversion von eSpeak war 1.48.15 am 16. April 2015.

eSpeak verwendet das Usenet-Schema , um Phoneme mit ASCII-Zeichen darzustellen .

eSpeak NG

Am 25. Juni 2010 startete Reece Dunn einen Fork von eSpeak auf GitHub mit der Version 1.43.46. Dies begann mit dem Bemühen, die Erstellung von eSpeak auf Linux und anderen POSIX- Plattformen zu vereinfachen .

Am 4. Oktober 2015 (6 Monate nach der Veröffentlichung von eSpeak 1.48.15) begann dieser Fork deutlicher vom ursprünglichen eSpeak abzuweichen.

Am 8. Dezember 2015 gab es Diskussionen auf der eSpeak-Mailingliste über die mangelnde Aktivität von Jonathan Duddington in den letzten 8 Monaten seit der letzten eSpeak-Entwicklungsversion. Dies führte zu Diskussionen über die Weiterentwicklung von eSpeak in Jonathans Abwesenheit. Das Ergebnis war die Erstellung des espeak-ng (Next Generation) Fork, der die GitHub-Version von eSpeak als Basis für die zukünftige Entwicklung nutzt.

Am 11. Dezember 2015 wurde der espeak-ng Fork gestartet. Die erste Veröffentlichung von espeak-ng war 1.49.0 am 10. September 2016 und enthielt umfangreiche Code-Bereinigungen, Fehlerbehebungen und Sprachaktualisierungen.

Merkmale

eSpeakNG kann als Befehlszeilenprogramm oder als gemeinsam genutzte Bibliothek verwendet werden.

Es unterstützt die Speech Synthesis Markup Language (SSML).

Sprachstimmen werden durch den ISO 639-1- Code der Sprache identifiziert . Sie können durch "Sprachvarianten" modifiziert werden. Dies sind Textdateien, die Eigenschaften wie den Tonhöhenbereich ändern, Effekte wie Echo, Flüstern und Krächzen hinzufügen oder systematische Anpassungen an Formantfrequenzen vornehmen können, um den Klang der Stimme zu ändern. "af" ist zum Beispiel die Stimme Afrikaans. "af+f2" ist die Afrikaans-Stimme, die mit der "f2"-Stimmenvariante modifiziert wurde, die die Formanten und den Tonumfang ändert, um einen weiblichen Klang zu erzeugen.

eSpeakNG verwendet eine ASCII-Darstellung von Phonemnamen, die lose auf dem Usenet-System basiert .

Phonetische Darstellungen können in die Texteingabe eingeschlossen werden, indem sie in doppelte eckige Klammern eingeschlossen werden. Zum Beispiel: espeak-ng -v en "Hallo [[w3:ld]]" sagt Hallo Welt auf Englisch. Über diesen Ton

Synthesemethode

ESpeakNG-Intro von eSpeakNG auf Englisch

eSpeakNG kann auf verschiedene Weise als Text-zu-Sprache-Übersetzer verwendet werden, je nachdem, welchen Text-zu-Sprache-Übersetzungsschritt der Benutzer verwenden möchte.

1. Schritt – Text-zu-Phonem-Übersetzung

Es gibt viele Sprachen (insbesondere Englisch ), die keine direkten Eins-zu-eins-Regeln zwischen Schreiben und Aussprache haben; Daher muss der erste Schritt bei der Text-zu-Sprache-Erzeugung die Text-zu-Phonem-Übersetzung sein.

  1. Eingabetext wird in Aussprachephoneme übersetzt (zB Eingabetext xerox wird zur Aussprache in zi@r0ks übersetzt ).
  2. Aussprachephoneme werden zu Lauten synthetisiert, zB wird zi@r0ks monoton als zi@r0ks geäußertÜber diesen Ton

Um Intonation für Sprache hinzuzufügen, sind zB Prosodiedaten (zB Betonung einer Silbe, fallende oder steigende Tonhöhe der Grundfrequenz, Pause, etc.) und andere Informationen notwendig, die es ermöglichen, menschlichere, nicht monotone Sprache zu synthetisieren. Im eSpeakNG-Format wird beispielsweise eine betonte Silbe mit einem Apostroph hinzugefügt: z'i@r0ks, was eine natürlichere Sprache bietet: z'i@r0ks mit IntonationÜber diesen Ton

Zum Vergleich zwei Stichproben mit und ohne Prosodiedaten:

  1. [[DIs Iz m0noUntoUn spi:tS]] wird monoton geschriebenÜber diesen Ton
  2. [[DIs Iz 'Int@n,eItI2d sp'i:tS]] wird intoniert geschriebenÜber diesen Ton

Wenn eSpeakNG nur zur Generierung von Prosodiedaten verwendet wird, können Prosodiedaten als Eingabe für MBROLA- Diphone-Stimmen verwendet werden.

2. Schritt – Klangsynthese aus Prosodiedaten

Das eSpeakNG bietet zwei verschiedene Arten der Formant- Sprachsynthese mit seinen zwei unterschiedlichen Ansätzen. Mit eigenem eSpeakNG-Synthesizer und einem Klatt-Synthesizer :

  1. Der eSpeakNG-Synthesizer erzeugt stimmhafte Sprachklänge wie Vokale und sonore Konsonanten durch additive Synthese, die Sinuswellen zum Gesamtklang addiert. Stimmlose Konsonanten, zB /s/, werden durch das Abspielen von aufgenommenen Klängen erzeugt, da sie reich an Obertönen sind, was die additive Synthese weniger effektiv macht. Stimmhafte Konsonanten wie /z/ werden durch Mischen eines synthetisierten stimmhaften Tons mit einem aufgenommenen Sample eines stimmlosen Tons erzeugt.
  2. Der Klatt-Synthesizer verwendet meistens die gleichen Formant-Daten wie der eSpeakNG-Synthesizer. Aber, es erzeugt auch Geräusche durch subtraktive Synthese von Rauschen mit erzeugten Ausgang, die Harmonischen reich ist, und dann die Anwendung digitale Filter und Kuvertierung zum Ausfiltern notwendigen Frequenzspektrums und Ton - Hüllkurve für bestimmte Konsonanten (s, t, k) oder sonorant ( l, m, n) Laut.

Für die MBROLA- Stimmen wandelt eSpeakNG den Text in Phoneme und zugehörige Tonhöhenkonturen um. Es übergibt dies im PHO-Dateiformat an das MBROLA-Programm und erfasst das in der Ausgabe von MBROLA erstellte Audio. Dieses Audio wird dann von eSpeakNG verarbeitet.

Sprachen

eSpeakNG führt Text-zu-Sprache-Synthese für die folgenden Sprachen durch:

  1. Abaza
  2. Ein Chinese
  3. Fern
  4. Afrikaans
  5. albanisch
  6. Amharisch
  7. Altgriechisch
  8. Arabisch 1
  9. Aragonesisch
  10. Armenisch ( Ostarmenisch )
  11. Armenisch ( Westarmenisch )
  12. Assamesisch
  13. Aserbaidschanisch
  14. Baschkirisch
  15. baskisch
  16. Grundlegendes Englisch
  17. Belarussisch
  18. Bengali
  19. Bhojpuri
  20. Bishnupriya Manipuri
  21. bosnisch
  22. bulgarisch
  23. Bretonisch
  24. birmanisch
  25. Kantonesisch
  26. katalanisch
  27. Cebuano
  28. Cherokee
  29. Chichewa
  30. Chinesisch ( Mandarin )
  31. Korsisch
  32. kroatisch
  33. Tschechisch
  34. Tschuwaschen
  35. Kirchenslawisch
  36. dänisch
  37. Niederländisch
  38. Dzongkha
  39. Englisch ( amerikanisch )
  40. Englisch ( britisch )
  41. Englisch ( Karibik )
  42. Englisch ( Lancastrian )
  43. Englisch ( empfangene Aussprache )
  44. Englisch ( Schottisch )
  45. Englisch ( West Midlands )
  46. Esperanto
  47. estnisch
  48. finnisch
  49. Philippinisch
  50. Französisch ( belgisch )
  51. Französisch ( Frankreich )
  52. Französisch ( Schweizer )
  53. Friesisch
  54. galizisch
  55. georgisch
  56. Deutsch
  57. Griechisch ( modern )
  58. Grönländisch
  59. Guarani
  60. Gujarati
  61. Hakka-Chinesisch 3
  62. Haitianisches Kreol
  63. Hausa
  64. hawaiisch
  65. hebräisch
  66. Hochvalyrian
  67. Hindi
  68. Hmong
  69. ungarisch
  70. isländisch
  71. Igbo
  72. Indonesisch
  73. Das tue ich
  74. Interlingua
  75. Zwischensprache
  76. irisch
  77. Italienisch
  78. Japanisch 4
  79. Kannada
  80. Kasachisch
  81. Khmer
  82. Klingonisch
  83. Küche
  84. Kirundi
  85. Kinyarwanda
  86. Konkani
  87. Koreanisch
  88. kurdisch
  89. Kirgisisch
  90. Quechua
  91. Ladakh
  92. Laos
  93. Latein
  94. Ladino
  95. Lettisch
  96. lettisch
  97. Lang Belta
  98. Lingua Franca Nova
  99. Lepcha
  100. Limbu
  101. litauisch
  102. Lojban
  103. Luxemburgisch
  104. mazedonisch
  105. Maithili
  106. Madagassisch
  107. malaiisch
  108. Malayalam
  109. maltesisch
  110. Māori
  111. Marathi ,
  112. mongolisch
  113. Nahuatl ( Klassik )
  114. Navajo
  115. Nepalesisch
  116. Norwegisch ( Bokmål )
  117. Nord-Sotho
  118. Nogai
  119. Odia
  120. Oromo
  121. Oktian
  122. Papiamento
  123. Palauan
  124. Paschtu
  125. persisch
  126. Persisch ( lateinisches Alphabet ) 2
  127. Polieren
  128. Portugiesisch ( Brasilien )
  129. Portugiesisch ( Portugal )
  130. Punjabi
  131. Pyash (eine konstruierte Sprache )
  132. rumänisch
  133. Russisch
  134. Russisch ( Lettland )
  135. Samoanisch
  136. Sanskrit
  137. schottisch Gälisch
  138. serbisch
  139. Shan (Tai Yai),
  140. Sharda
  141. Sesotho
  142. Shona
  143. Sindhi
  144. Singhalesisch
  145. slowakisch
  146. Slowenisch
  147. somali
  148. Spanisch ( Spanien )
  149. Spanisch ( Lateinamerika )
  150. Swahili
  151. Schwedisch
  152. Tadschikisch
  153. Tamil
  154. Tataren
  155. Telugu
  156. Tibetisch
  157. Tswana
  158. Thai
  159. Turkmenen
  160. Türkisch
  161. Tataren
  162. Uiguren
  163. ukrainisch
  164. Urdu
  165. Usbekisch
  166. Vietnamesisch ( Zentralvietnamesisch )
  167. Vietnamesisch ( Nordvietnamesisch )
  168. Vietnamesisch ( Südvietnamesisch )
  169. Volapük
  170. Walisisch
  171. Wolof
  172. Xhosa
  173. Jiddisch
  174. Yoruba
  175. Zulu-
  1. Derzeit wird nur vollständig diakritisiertes Arabisch unterstützt.
  2. Persisch mit englischen (lateinischen) Zeichen geschrieben .
  3. Derzeit wird nur Pha̍k-fa-sṳ unterstützt.
  4. Derzeit werden nur Hiragana und Katakana unterstützt.

Siehe auch

Verweise

Externe Links