La synthèse vocale en Français avec SI_VOX et en Anglais avec FreeTTS
La synthèse vocale ou synthèse de la parole (ou TTS, Text-To-Speech) est une méthode qui permet de créer une parole artificielle à partir du texte. Elle s’appuie sur des techniques de traitement linguistique pour transcrire le texte et notamment le traitement de signal pour générer des signaux sonores à partir d’une version phonétique. Stephen Hawking utilise cette technique qui lui permet de communiquer avec les autres.
1 - Synthèse vocale en Français (avec SI_VOX)
SI_VOX est une librairie française et la meilleurs API pour la synthèse de la parole en français en Java. Pour pouvoir l'utiliser, suivez les étapes suivantes- Télécharger l'api SI_VOX : http://users.polytech.unice.fr/~helen/SI_VOX-SRC.tar.gz
- Après la création du projet, Importer la bibliothèque 'SI_VOX.jar' dans votre projet.
- Copier et coller le dossier "données" qui se trouve dans le dossier compressé dans la racine du projet, ce fichier contient les paramètres de la voix.
- Importer la classe pour lire le texte:
import t2s.son.LecteurTexte; |
LecteurTexte lecteur = new LecteurTexte("Bonjour"); |
lecteur.playAll(); |
lecteur.setTexte("je suis un programme de synthèse vocale"); |
import t2s.son.LecteurTexte;
public class Synthese_Vocale{
public static void main(String[] args) {
LecteurTexte lecteur = new LecteurTexte("bonjour");
lecteur.playAll();
lecteur.setTexte("je suis un synthétiseur vocal, qui êtes-vous?");
lecteur.playAll();
}
}
2- Synthèse vocale en Anglais (Avec FreeTTS)
FreeTSS est un système de la synthèse vocale open source, il a été crée avec le langage Java. FreeTTS est une implémentation de Java Speech API.Lien de téléchargement de la bibliothèque FreeTTS:
http://sourceforge.net/projects/freetts/files/FreeTTS/FreeTTS%201.2.2/freetts-1.2.2-bin.zip/download
http://sourceforge.net/projects/freetts/files/FreeTTS/FreeTTS%201.2.2/freetts-1.2.2-bin.zip/download
Pour des informations complémentaire sur l'api FreeTTS, cliquez sur ce lien http://freetts.sourceforge.net/docs/index.php#what_is_freetts
Pour transformer le texte en paroles, on a besoin de l'interface FreeTTSSpeakable qui convertie le texte en un objet FreeTTSSpeakable.
Voice: est le point central de FreeTTS, il prend en entrée un FreeTTSSpeakable et traduit le texte associé en un discours puis génère l'audio correspondant en sortie.
VoiceManager: est l'entrepôt des voix de FreeTTS. Voici comment procéder pour choisir une voix :
VoiceManager voiceManager = VoiceManager.getInstance(); // Créer une liste des voix Voice[] voix = voiceManager.getVoices(); //Chaque voix a des propriétés, vous pouvez parcourir la liste pour trouver la voix selon vos besoin. // allouer les ressources pour cette voix voix [x].allocate(); |
Le code suivant est une application démonstratif pour démontrer l'utilisation du discours de Synthétiseur FreeTTS . Ce programme montre comment utiliser FreeTTS sans besoin de l'API "JSAPI".
import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;
public class Synthese_Vocale {
/**
* Comment afficher toutes les voix
*/
public static void listedesvoix() {
System.out.println("Toutes les voix disponibles:");
VoiceManager voiceManager = VoiceManager.getInstance();
Voice[] voix = voiceManager.getVoices();
for (int i = 0; i < voix.length; i++) {
System.out.println(" " + voix[i].getName()
+ " (" + voix[i].getDomain() + " domain)");
}
}
public static void main(String[] args) {
/*Méthode qui permet l'affichage de toutes les voix disponible*/
listedesvoix();
String nomVoix = "kevin";
System.out.println("\nVoix utilisée: " + nomVoix);
/* Le VoiceManager manages toutes les voix pour FreeTTS
*/
VoiceManager voiceManager = VoiceManager.getInstance();
/*Charger la voix
*/
Voice voix = voiceManager.getVoice(nomVoix);
/*Si le nom de voix n'existe pas alors erreur
*/
if (voix == null) {
System.err.println(
"La voix "
+ nomVoix + ". n'est pas reconnue svp essayez un autre nom.");
System.exit(1);
}
/* Charger les ressources dont la voix utilise
*/
voix.allocate();
/* synthétiser le discours
*/
voix.speak("hello world");
voix.speak("how are you today");
voix.speak("I am a programmer");
/* désalouer
*/
voix.deallocate();
/*programme terminé avec succès
*/
System.exit(0);
}
}