eSpeak - eSpeak
Autori originali | Jonathan Duddington |
---|---|
Sviluppatore/i | Reece Dunn |
Versione iniziale | febbraio 2006 |
Rilascio stabile |
1.50
/ 2 dicembre 2019
|
Repository | github |
Scritto in | C |
Sistema operativo |
Linux Windows macOS FreeBSD |
Tipo | Sintetizzatore vocale |
Licenza | GPLv3 |
Sito web | github |
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.
Metodo di sintesi
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.
- 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).
- pronuncia i fonemi sono sintetizzati nel suono, ad es. zi@r0ks è espresso come zi@r0ks in modo monotono
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 intonazione
Per confronto due campioni con e senza dati di prosodia:
- [[DIs Iz m0noUntoUn spi:tS]] è scritto in modo monotono
- [[DIs Iz 'Int@n,eItI2d sp'i:tS]] è scritto in modo intonato
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 :
- 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.
- 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:
- Abaza
- cinese
- Lontano
- afrikaans
- albanese
- amarico
- Greco antico
- arabo 1
- aragonese
- Armeno ( armeno orientale )
- Armeno ( armeno occidentale )
- assamese
- Azero
- Bashkir
- basco
- Inglese basico
- bielorusso
- bengalese
- Bhojpuri
- Bishnupriya Manipuri
- bosniaco
- bulgaro
- bretone
- birmano
- cantonese
- catalano
- Cebuano
- Cherokee
- Chichewa
- cinese ( mandarino )
- corso
- croato
- ceco
- Chuvash
- Slavo Ecclesiastico
- danese
- olandese
- Dzongkha
- inglese ( americano )
- inglese ( britannico )
- inglese ( caraibico )
- Inglese ( Lancaster )
- Inglese ( pronuncia ricevuta )
- Inglese ( Scozzese )
- Inglese ( Midlands Occidentali )
- esperanto
- estone
- finlandese
- filippino
- francese ( belga )
- francese ( Francia )
- francese ( svizzero )
- frisone
- galiziano
- georgiano
- Tedesco
- Greco ( moderno )
- groenlandese
- Guaranì
- Gujarati
- Hakka cinese 3
- Creolo haitiano
- Hausa
- hawaiano
- ebraico
- Alto Valyriano
- hindi
- Hmong
- ungherese
- islandese
- Igbo
- indonesiano
- Io faccio
- Interlingua
- Interlingue
- irlandesi
- italiano
- giapponese 4
- Kannada
- kazako
- Khmer
- Klingon
- Kʼicheʼ
- Kirundi
- Kinyarwanda
- Konkani
- coreano
- curdo
- Kirghizistan
- Quechua
- Ladakhi
- Lao
- latino
- ladino
- latgaliano
- lettone
- Lang Belta
- Lingua Franca Nova
- Lepcha
- Limbu
- lituano
- Lojban
- lussemburghese
- macedone
- Maithili
- malgascio
- malese
- Malayalam
- maltese
- Māori
- Marathi ,
- mongolo
- Nahuatl ( classico )
- Navajo
- nepalese
- Norvegese ( Bokmål )
- Sotho settentrionale
- Nogai
- Odia
- Oromo
- Occitano
- papiamento
- Palauan
- Pashto
- persiano
- Persiano ( alfabeto latino ) 2
- polacco
- portoghese ( brasiliano )
- Portoghese ( Portogallo )
- punjabi
- Pyash (un linguaggio costruito )
- rumeno
- russo
- Russo ( Lettonia )
- samoano
- sanscrito
- Gaelico Scozzese
- serbo
- Shan (Tai Yai),
- Sharda
- Sesotho
- Shona
- Sindhi
- singalese
- slovacco
- sloveno
- somalo
- spagnolo ( Spagna )
- spagnolo ( latinoamericano )
- Swahili
- svedese
- tagiko
- Tamil
- tataro
- Telugu
- tibetano
- Tswana
- tailandese
- turkmeno
- Turco
- tataro
- uiguro
- ucraino
- Urdu
- uzbeko
- Vietnamita ( vietnamita centrale )
- Vietnamita ( vietnamita del nord )
- Vietnamita ( vietnamita meridionale )
- Volapük
- gallese
- wolof
- Xhosa
- yiddish
- Yoruba
- Zulu
- Attualmente, è supportato solo l' arabo completamente diacritizzato .
- Persiano scritto utilizzando caratteri inglesi (latini) .
- Attualmente è supportato solo Pha̍k-fa-sṳ .
- Attualmente sono supportati solo Hiragana e Katakana .