Read the post "JavaFX with text-to-speech, with java-google-translate-text-to-speech" to know how to add lib of java-google-translate-text-to-speech for Netbeans.
package javafx_texttospeech; import com.gtranslate.Audio; import com.gtranslate.Language; import com.gtranslate.Translator; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.TreeMap; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.StackPane; import javafx.scene.layout.TilePane; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javazoom.jl.decoder.JavaLayerException; /** * * @web http://java-buddy.blogspot.com/ */ public class JavaFX_TextToSpeech extends Application { Lang lang; ObservableList langNameList; ObservableList langPrefixList; String selectedPrefix; String srcPrefix = Language.ENGLISH; @Override public void start(Stage primaryStage) { lang = new Lang(); langNameList = lang.getNameList(); langPrefixList = lang.getPrefixList(); Label labelPrefix = new Label(); ChoiceBox targetLangBox = new ChoiceBox(langNameList); targetLangBox.getSelectionModel().selectFirst(); Label labelTranslated = new Label(); selectedPrefix = (String) langPrefixList.get( targetLangBox.getSelectionModel().getSelectedIndex()); labelPrefix.setText(selectedPrefix); targetLangBox.getSelectionModel().selectedIndexProperty() .addListener(new ChangeListener(){ @Override public void changed(ObservableValue observable, Object oldValue, Object newValue) { selectedPrefix = (String) langPrefixList.get((int)newValue); labelPrefix.setText(selectedPrefix); } }); TextField srcTextField = new TextField(); Button btnTranslate = new Button("Translate"); btnTranslate.setOnAction((ActionEvent event) -> { Translator translator = Translator.getInstance(); String translatedText = translator.translate( srcTextField.getText(), srcPrefix, selectedPrefix); labelTranslated.setText(translatedText); }); Button btnSpeakSrc = new Button("Speak"); btnSpeakSrc.setOnAction((ActionEvent event) -> { String toSpeak = srcTextField.getText(); if(!toSpeak.equals("")){ try { InputStream sound = null; Audio audio = Audio.getInstance(); sound = audio.getAudio(toSpeak, srcPrefix); audio.play(sound); } catch (IOException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } catch (JavaLayerException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } } }); Button btnSpeakDest = new Button("Speak"); btnSpeakDest.setOnAction((ActionEvent event) -> { String toSpeak = labelTranslated.getText(); if(!toSpeak.equals("")){ try { InputStream sound = null; Audio audio = Audio.getInstance(); sound = audio.getAudio(toSpeak, selectedPrefix); audio.play(sound); } catch (IOException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } catch (JavaLayerException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } } }); VBox vBoxSrc = new VBox(); VBox vBoxDest = new VBox(); vBoxSrc.getChildren().addAll( new Label("Source: ENGLISH (en)"), srcTextField, btnTranslate, btnSpeakSrc); vBoxDest.getChildren().addAll( new Label("Translate to:"), targetLangBox, labelPrefix, labelTranslated, btnSpeakDest); TilePane tilePane = new TilePane(); tilePane.setPrefColumns(3); tilePane.setPadding(new Insets(5, 5, 5, 5)); tilePane.setVgap(5); tilePane.setHgap(5); tilePane.setStyle("-fx-background-color: D0D0D0;"); tilePane.setAlignment(Pos.TOP_CENTER); Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { InputStream sound = null; try { System.out.println("Hello World!"); Audio audio = Audio.getInstance(); sound = audio.getAudio("Hello World", Language.ENGLISH); audio.play(sound); } catch (IOException | JavaLayerException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } finally { try { sound.close(); } catch (IOException ex) { Logger.getLogger(JavaFX_TextToSpeech.class.getName()).log(Level.SEVERE, null, ex); } } } }); tilePane.getChildren().addAll(vBoxSrc, vBoxDest); StackPane root = new StackPane(); root.getChildren().add(tilePane); Scene scene = new Scene(root, 500, 250); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } } class Lang { private Map<String, String> mapLang; Lang() { mapLang = new TreeMap<>(); init(); } private void init() { mapLang.put("af", "AFRIKAANS"); mapLang.put("sq", "ALBANIAN"); mapLang.put("ar", "ARABIC"); mapLang.put("hy", "ARMENIAN"); mapLang.put("az", "AZERBAIJANI"); mapLang.put("eu", "BASQUE"); mapLang.put("be", "BELARUSIAN"); mapLang.put("bn", "BENGALI"); mapLang.put("bg", "BULGARIAN"); mapLang.put("ca", "CATALAN"); mapLang.put("zh-CN", "CHINESE"); mapLang.put("hr", "CROATIAN"); mapLang.put("cs", "CZECH"); mapLang.put("da", "DANISH"); mapLang.put("nl", "DUTCH"); mapLang.put("en", "ENGLISH"); mapLang.put("et", "ESTONIAN"); mapLang.put("tl", "FILIPINO"); mapLang.put("fi", "FINNISH"); mapLang.put("fr", "FRENCH"); mapLang.put("gl", "GALICIAN"); mapLang.put("ka", "GEORGIAN"); mapLang.put("de", "GERMAN"); mapLang.put("el", "GREEK"); mapLang.put("gu", "GUJARATI"); mapLang.put("ht", "HAITIAN_CREOLE"); mapLang.put("iw", "HEBREW"); mapLang.put("hi", "HINDI"); mapLang.put("hu", "HUNGARIAN"); mapLang.put("is", "ICELANDIC"); mapLang.put("id", "INDONESIAN"); mapLang.put("ga", "IRISH"); mapLang.put("it", "ITALIAN"); mapLang.put("ja", "JAPANESE"); mapLang.put("kn", "KANNADA"); mapLang.put("ko", "KOREAN"); mapLang.put("la", "LATIN"); mapLang.put("lv", "LATVIAN"); mapLang.put("lt", "LITHUANIAN"); mapLang.put("mk", "MACEDONIAN"); mapLang.put("ms", "MALAY"); mapLang.put("mt", "MALTESE"); mapLang.put("no", "NORWEGIAN"); mapLang.put("fa", "PERSIAN"); mapLang.put("pl", "POLISH"); mapLang.put("pt", "PORTUGUESE"); mapLang.put("ro", "ROMANIAN"); mapLang.put("ru", "RUSSIAN"); mapLang.put("sr", "SERBIAN"); mapLang.put("sk", "SLOVAK"); mapLang.put("sl", "SLOVENIAN"); mapLang.put("es", "SPANISH"); mapLang.put("sw", "SWAHILI"); mapLang.put("sv", "SWEDISH"); mapLang.put("ta", "TAMIL"); mapLang.put("te", "TELUGU"); mapLang.put("th", "THAI"); mapLang.put("tr", "TURKISH"); mapLang.put("uk", "UKRAINIAN"); mapLang.put("ur", "URDU"); mapLang.put("vi", "VIETNAMESE"); mapLang.put("cy", "WELSH"); mapLang.put("yi", "YIDDISH"); mapLang.put("af", "AFRIKAANS"); mapLang.put("sq", "ALBANIAN"); mapLang.put("ar", "ARABIC"); mapLang.put("hy", "ARMENIAN"); mapLang.put("az", "AZERBAIJANI"); mapLang.put("eu", "BASQUE"); mapLang.put("be", "BELARUSIAN"); mapLang.put("bn", "BENGALI"); mapLang.put("bg", "BULGARIAN"); mapLang.put("ca", "CATALAN"); mapLang.put("zh-CN", "CHINESE_SIMPLIFIED"); mapLang.put("zh-TW", "CHINESE_TRADITIONAL"); mapLang.put("hr", "CROATIAN"); mapLang.put("cs", "CZECH"); mapLang.put("da", "DANISH"); mapLang.put("nl", "DUTCH"); mapLang.put("et", "ESTONIAN"); mapLang.put("tl", "FILIPINO"); mapLang.put("fi", "FINNISH"); mapLang.put("fr", "FRENCH"); mapLang.put("gl", "GALICIAN"); mapLang.put("ka", "GEORGIAN"); mapLang.put("de", "GERMAN"); mapLang.put("el", "GREEK"); mapLang.put("gu", "GUJARATI"); mapLang.put("ht", "HAITIAN_CREOLE"); mapLang.put("iw", "HEBREW"); mapLang.put("hi", "HINDI"); mapLang.put("hu", "HUNGARIAN"); mapLang.put("is", "ICELANDIC"); mapLang.put("id", "INDONESIAN"); mapLang.put("ga", "IRISH"); mapLang.put("it", "ITALIAN"); mapLang.put("ja", "JAPANESE"); mapLang.put("kn", "KANNADA"); mapLang.put("ko", "KOREAN"); mapLang.put("la", "LATIN"); mapLang.put("lv", "LATVIAN"); mapLang.put("lt", "LITHUANIAN"); mapLang.put("mk", "MACEDONIAN"); mapLang.put("ms", "MALAY"); mapLang.put("mt", "MALTESE"); mapLang.put("no", "NORWEGIAN"); mapLang.put("fa", "PERSIAN"); mapLang.put("pl", "POLISH"); mapLang.put("pt", "PORTUGUESE"); mapLang.put("ro", "ROMANIAN"); mapLang.put("ru", "RUSSIAN"); mapLang.put("sr", "SERBIAN"); mapLang.put("sk", "SLOVAK"); mapLang.put("sl", "SLOVENIAN"); mapLang.put("es", "SPANISH"); mapLang.put("sw", "SWAHILI"); mapLang.put("sv", "SWEDISH"); mapLang.put("ta", "TAMIL"); mapLang.put("te", "TELUGU"); mapLang.put("th", "THAI"); mapLang.put("tr", "TURKISH"); mapLang.put("uk", "UKRAINIAN"); mapLang.put("ur", "URDU"); mapLang.put("vi", "VIETNAMESE"); mapLang.put("cy", "WELSH"); mapLang.put("yi", "YIDDISH"); } public ObservableList getNameList(){ return FXCollections.observableArrayList(mapLang.values().toArray()); } public ObservableList getPrefixList(){ return FXCollections.observableArrayList(mapLang.keySet().toArray()); } }
This comment has been removed by the author.
ReplyDeletedoesn't work
ReplyDeletei want to down load complete project
ReplyDelete