将文本转换为语音的java代码

将文本转换为语音的java代码,java,text-to-speech,Java,Text To Speech,我不理解这个语法错误,insert”)“要完成MethodInvocation语法错误,请插入”;“要完成demojsapi.main(demojsapi.java:46)处的语句” 我实际上正在从事一个java项目,使用以下代码将文本转换为speesh: import javax.speech.*; import java.util.*; import javax.speech.synthesis.*; public class demojsapi { String speaktex

我不理解这个语法错误,
insert”)“要完成MethodInvocation语法错误,请插入”;“要完成demojsapi.main(demojsapi.java:46)处的语句”

我实际上正在从事一个java项目,使用以下代码将文本转换为speesh:

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

public class demojsapi
{
    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);
            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(""+e);
            System.out.println(message);
        }
    }

    public static void main(String[] args)
    {
        demojsapi obj=new demojsapi(); obj.despeak("shit","kevin16");
    }
}
import javax.speech.*;
导入java.util.*;
导入javax.speech.synthesis.*;
公共类demojsapi
{
字符串speaktext;
公共语音(字符串语音、字符串语音名称)
{
speaktext=说话;
字符串voiceName=voiceName;
尝试
{
synthezermodedesc desc=新的synthezermodedesc(null,“general”,Locale.US,null,null);
合成器合成器=中心.createSynthesizer(desc);
synthesizer.allocate();
合成器;
desc=(SynthesizerModeDesc)synthesizer.getEngineModeDesc();
Voice[]voices=desc.getVoices();
语音=空;
for(int i=0;i
不存在
despeak
方法。您应该调用
dospeak
,并使用常规引号:

obj.dospeak("foo", "kevin16");

用运行的代码很好地解释了完整的过程-

工作代码:

import javax.speech.*;    
import java.util.*;    
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(""+e);    
        System.out.println(message);    
    }    
}    

public static void main(String[] args)    
{    
    Text2Speech obj=new Text2Speech(); obj.dospeak("Hello i am kevin ","kevin16");    
}    
}
import javax.speech.*;
导入java.util.*;
导入javax.speech.synthesis.*;
公共类Text2Speech
{    
字符串speaktext;
公共语音(字符串语音、字符串语音名称)
{    
speaktext=说话;
字符串voiceName=voiceName;
尝试
{    
synthezermodedesc desc=新的synthezermodedesc(null,“general”,Locale.US,null,null);
合成器合成器=中心.createSynthesizer(desc);
synthesizer.allocate();
合成器;
desc=(SynthesizerModeDesc)synthesizer.getEngineModeDesc();
Voice[]voices=desc.getVoices();
语音=空;
for(int i=0;i
请从谷歌的给定链接和

在NetBeans中尝试我的程序

不要忘记将所有jar文件添加到库文件夹中 代码如下所示。它起作用了。。 我的方法--


从内部代码调用此方法。

请格式化代码。没有人会通读,请给出与问题相关的适当数量的代码是的,我在发布代码之前更改了,但同样的问题demojsapi类型中的方法dospeak(String,String)不适用于参数(String)语法错误,insert“)来完成MethodInvocation语法错误,插入“;”以完成语句问题在于您使用的引号。你能把它们改成常规的报价吗?对不起,伙计,这都是关于报价的,thx很多,但是steal还有一个问题。。。在C:\Users\USERProperties中找不到java.lang.NullPointerException缺少speech.properties。看这个。1)为什么这里很好?2) 在答案中加入重要内容,而不仅仅是一个链接。参考链接:错误。页面无法显示。有关更多详细信息,请联系您的服务提供商。(7) Central.createSynthesizer每次都返回空值:(
private static final String VOICENAME = "kevin16";                                        
void mySpeak()
{
Voice voice;
VoiceManager vm = VoiceManager.getInstance();
voice = vm.getVoice(VOICENAME);
voice.allocate();
try{
voice.speak("Hi Mr Gaur Welcome to VITS. Thanks To choose Us");
}catch(Exception e){}
}