1

我有一个问题,我知道这可能与网上的类似,但我已经按照我在网上找到的每一条说明进行操作,但我仍然遇到这个问题。

基本上我正在制作一个带有虚拟键盘的 GUI,无论用户键入什么,我都希望用户能够单击一个按钮,并且我想要一个语音合成来将文本转换为语音。上网查了一下,发现最简单最常用的开放软件就是freeTSS。我已经安装了 freeTSS 并按照说明进行操作。

然后,我从在线社区获取了以下代码:

import java.util.*; import javax.speech.*;        import javax.speech.synthesis.*;    

public class Text2Speech     {    
    String speaktext; 
    public void dospeak(String speak,String  voicename)    
    {    
        speaktext=speak;    
        String voiceName =voicename;    
        try    
        {    
            SynthesizerModeDesc desc = new SynthesizerModeDesc(null,"general",  Locale.US,null,null);    
            Synthesizer synthesizer =  Central.createSynthesizer(desc);    
            synthesizer.allocate();    
            synthesizer.resume();     
            desc = (SynthesizerModeDesc)  synthesizer.getEngineModeDesc();     
            Voice[] voices = desc.getVoices();      
            Voice voice = null;
            for (int i = 0; i < voices.length; i++)    
            {    
                if (voices[i].getName().equals(voiceName))    
                {    
                    voice = voices[i];    
                    break;     
                }     
            }    
            synthesizer.getSynthesizerProperties().setVoice(voice);    
            System.out.print("Speaking : "+speaktext);    
            synthesizer.speakPlainText(speaktext, null);    
            synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);    
            synthesizer.deallocate();    
        }    
        catch (Exception e)   
        {    
            String message = " missing speech.properties in " + System.getProperty("user.home") + "\n"; 
            System.out.println (System.getProperty( "java.home" ) );
            System.out.println(""+e);    
            System.out.println(message);    
        }    
    }    

    public static void main(String[] args)    
    {    
        Text2Speech obj=new Text2Speech(); obj.dospeak("Hello i am kevin ","kevin16");    
    }     }

当我第一次运行它时,我收到以下错误:

java.lang.ClassNotFoundException: javax.speech.EngineCentral

有趣的是,当我关闭错误并再次运行它(两次都通过 main 方法)时,我得到一个错误,说我错过了speech.properties。这很奇怪,因为我第一次从命令提示符运行 HelloWorld.jar,并且我被告知在哪里添加语音属性。在命令提示符下java -jar bin/HelloWorld.jar工作正常,但不知何故在我上面分享的代码中有些东西不起作用。

我已按照以下说明操作:http ://www.ryan-h.com/uncategorized/java-speech-jsapi-freetts/ 仍然无法解决问题。我使用 BlueJ 作为我的 IDE,是的,我知道它不是那么好,我应该使用 Eclipse,但是当我制作 GUI 项目时,我宁愿使用 BlueJ 而不是 Eclipse。但这会有所作为吗?

最后一个问题,我想把我的程序变成一个应用程序,所以不是计算机程序员的用户可以轻松使用它。用户是否需要经历安装 Jaspi 和 freetts、复制 jar 文件、复制 Speech.properties 等可怕的过程?

4

0 回答 0