【问题标题】:Java text to speech I can't get it to talkJava 文本到语音,我无法让它说话
【发布时间】:2015-03-12 16:22:42
【问题描述】:

我一直在尝试制作一个文本到语音程序,我在 Windows pc 上仅供参考。我无法让我的程序说出我告诉它的内容。如果有人可以帮助我解决此问题或将我指向可以帮助我解决此问题的资源,将不胜感激

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

【问题讨论】:

标签: java windows text-to-speech


【解决方案1】:

say 命令在 Windows 上不存在。

你可以创建一个脚本

@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粘贴​​p>

将脚本命名为 speak.bat 并将其放入 C:\Windows\system32

然后修改

Process p = rt.exec("say" + textfield.getText());

Process p = rt.exec("speak" + textfield.getText());

您还可以查看espeak,它是开源的。

【讨论】:

  • 我会把它放在系统 32 的什么位置
  • @poketis 直接在 system32 文件夹中。
  • 把它做成一个bat文件是的
  • 不确定你的句子是否理解(?)但是是的,把它做成一个 bat 文件。
猜你喜欢
  • 2012-08-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2016-02-28
  • 1970-01-01
  • 2020-09-18
  • 2023-03-31
相关资源
最近更新 更多