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); } }