# Flite

FLite è una libreria per la sintesi vocale in linguaggio C scritta dal dr. Alan Black e dal dr. Kevin Lenzo presso la Carnegie Mellon University (CMU).
La libreria si rivolge in particolare ai sistemi embedded, e consente di eseguire delle operazioni di sintesi text-to-speech (TTS) in tempo reale, trasformando un testo scritto (stringa) in un file audio.
La Carnegie Mellon University pubblica, da alcuni anni, un software open-source chiamato Festival, che permette la sintesi vocale in diverse lingue e con diverse tecniche. Festival, tuttavia, è un software molto complesso, con requisiti in termini di risorse di calcolo e di memoria disponibile molto elevati e per tale ragione non è adatto per l'uso su sistemi embedded.

## Caratteristiche

FLite è una libreria in linguaggio C, che riduce al minimo le funzionalità di Festival, puntando sull'efficienza e la velocità a scapito della flessibilità. Le sue caratteristiche la rendono particolarmente adatta per la sintesi vocale su sistemi portatili come palmari o micro-PC.
Altre caratteristiche notevoli sono:
* Supporto per la compilazione di voci compatibili FLite a partire da dati FestVox;
* Thread safe (può gestire più processi di sintesi su diversi thread contemporaneamente);
* Supporta Linux (OSS), Windows CE e Palm OS
I dati che definiscono le caratteristiche di una voce e dei suoi vari difoni sono memorizzati in array che vengono incorporati staticamente all'interno dell'eseguibile che fa uso della libreria (i dati sono compressi in formato LPC - Linear Predictive Coding). Questa caratteristica è molto utile nei sistemi embedded perché i dati necessari per la sintesi possono essere memorizzati nella medesima ROM che contiene il programma di gestione del dispositivo, senza bisogno di prelevarli da una memoria di massa, come una flash-disk.

## Lingue supportate

La versione originale distribuita dalla Carnegie Mellon University supporta esclusivamente voci in lingua inglese. CMU fornisce agli sviluppatori tre voci, chiamate KAL, KAL16 e AWB. Il lexicon fornito supporta solo le regole sintattiche e prosodiche della lingua inglese, per questo la libreria non può essere usata con altre lingue.

## Librerie derivate

La grande portabilità di FLite è stata sfruttata da diversi programmatori ed enti di ricerca, allo scopo di portare il software di sintesi su altre piattaforme, ed aumentare i campi di utilizzo della libreria.
ndFLite, è una libreria C che permette l'uso del motore di sintesi vocale FLite su tutte le piattaforme supportate attualmente da Nanodesktop (attualmente PSPE e PSP).
Nel 2008, grazie allo sforzo congiunto dell'ing. Filippo Battaglia del Visilab Research Center dell'Università degli Studi di Messina, in collaborazione con il dr. Fabio Tesser dell'Istituto di Scienze Cognitive e Tecnologiche del CNR di Padova (CNR-ICST), è stata distribuita la libreria ML-FLite (multilanguage FLite).
Tale libreria è basata sul motore di FLite 1.3, ma può gestire indifferentemente la lingua inglese o la lingua italiana. Grazie a ML-FLite è possibile realizzare applicazioni in lingua italiana su sistema embedded tramite l'uso di uno strumento totalmente open-source e gratuito. ML-FLite è disponibile per sistemi x86 dotati di kernel Linux con supporto ALSA o OSS e per piattaforma Nanodesktop.
FreeTTS è una libreria Java per sintesi TTS, basata internamente sul motore di FLite 1.2 Anche FreeTTS, supporta ufficialmente solo la lingua inglese.
Filippo Battaglia ha realizzato una versione dell'engine FreeTTS, chiamata ML-FreeTTS (multilanguage FreeTTS) in grado di supportare sia la lingua italiana che la lingua inglese. In questo modo, è diventato disponibile a tutti gli sviluppatori italiani un potente (e gratuito) mezzo per la realizzazione di applicazioni di sintesi vocale Java-based, in grado di funzionare in locale o via browser su qualsiasi sistema operativo (a condizione che per quest'ultimo Sun renda disponibile una Java Virtual Machine compatibile).