Voice to text using Java

Today we are learning how to develop a text-to-speech application in Java. In this project, we are using Java-Swing and Java Speech API to develop this application.

Voice to text using Java

Java-Swing is a lightweight and cross-platform toolkit that provides the graphical user interface(GUI) to java progra ms. Java Speech API is an application programming interface that provides features to develop cross-platform voice applications.

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TextToSpeech {

    public  void Speak(String text) {

        System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
        Voice textaudio;
        textaudio = VoiceManager.getInstance().getVoice("kevin16");
        if (textaudio != null) {
            textaudio.allocate();
        }
        try {
            textaudio.setRate(150);
            textaudio.setPitch(150);
            textaudio.setVolume(6);
            textaudio.speak(text);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Now create a Java swing application and name it TextGui and copy the given code and paste it into that file.

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JEditorPane;

public class TextGui {

  private JFrame frame;

  /**
   * Launch the application.
   */
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          TextGui window = new TextGui();
          window.frame.setVisible(true);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }

  /**
   * Create the application.
   */
  public TextGui() {
    initialize();
  }

  /**
   * Initialize the contents of the frame.
   */
  private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 512, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    
    JLabel lblTextToSpeech = new JLabel("Text To Speech");
    lblTextToSpeech.setFont(new Font("Dialog", Font.BOLD, 20));
    lblTextToSpeech.setHorizontalAlignment(SwingConstants.CENTER);
    lblTextToSpeech.setBounds(147, 12, 216, 33);
    frame.getContentPane().add(lblTextToSpeech);
    
    JLabel lblEnterTheText = new JLabel("Enter The Text Please");
    lblEnterTheText.setBounds(12, 85, 165, 33);
    frame.getContentPane().add(lblEnterTheText);
    JEditorPane editorPane = new JEditorPane();
    editorPane.setBounds(190, 85, 296, 99);
    frame.getContentPane().add(editorPane);
    JButton btnSpeak = new JButton("Speak");
    btnSpeak.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        TextToSpeech t=new TextToSpeech();
        t.Speak(editorPane.getText());
      }
    });
    btnSpeak.setBounds(195, 211, 117, 25);
    frame.getContentPane().add(btnSpeak);
    
    
  }
}

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top