Я пытался сделать программу для преобразования текста в речь. Я нахожусь на компьютере с Windows только для справки. Я не могу заставить свою программу сказать, что я сказал. Если кто-то может помочь мне исправить это или указать мне на ресурс, который поможет мне исправить это, он будет высоко оценен
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class javatalker extends JFrame{
private static final long serialVersionUID = 1L;
JPanel panel = new JPanel();
JTextField textfield = new JTextField(35);
JButton button = new JButton("Push To Talk");
JCheckBox checkbox1 = new JCheckBox("Normal");
JCheckBox checkbox2 = new JCheckBox("Blitzcrank");
public javatalker() {
panel.add(textfield);
panel.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
if(textfield.getText().equalsIgnoreCase("")){
System.out.println("Typle in a string");
} else{
Runtime rt = Runtime.getRuntime();
try{
if(checkbox1.isSelected() == true){
Process p = rt.exec("say" + textfield.getText());
}
if(checkbox2.isSelected() == true){
Process p = rt.exec("say -v Cellos" + textfield.getText());
} else{
System.out.println("Please select a voice");
}
}catch(Exception ex) {
ex.getStackTrace();
}
}
}
});
panel.add(checkbox1);
panel.add(checkbox2);
panel.setBackground(Color.black);
add(panel);
setTitle("Voicip");
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
public static void main(String args[]){
new javatalker();
}
}
say
, команда не существует на окнах.
Вы можете создать скрипт
@echo off
echo Dim Speak >> %HOMEPATH%\speak.vbs
echo Set Speak=CreateObject("sapi.spvoice") >>
%HOMEPATH%\speak.vbs
echo Speak.Speak "%1">> %HOMEPATH%\speak.vbs
%HOMEPATH%\speak.vbs
del %HOMEPATH%\speak.vbs
вставлен из https://superuser.com/questions/223913/os-x-say-command-for-windows
Назовите скрипт say.bat и поместите его в папку C:\Windows\system32
Затем измените
Process p = rt.exec("say" + textfield.getText());
в
Process p = rt.exec("speak" + textfield.getText());
Вы также можете взглянуть на espeak
который является открытым исходным кодом.