gpt4 book ai didi

java - 运行时错误 - JSAPI HelloWorld 程序

转载 作者:行者123 更新时间:2023-12-02 00:30:46 27 4
gpt4 key购买 nike

使用 JSAPI 运行基本的 HelloWorld 程序时,显示错误“java.lang.NullPointerException at HelloWorld.main(HelloWorld.java:11)”

代码如下:

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

public class HelloWorld {
public static void main(String args[]) {
try {
// Create a synthesizer for English
Synthesizer synth = Central.createSynthesizer(new SynthesizerModeDesc(Locale.ENGLISH));
// Get it ready to speak
synth.allocate();
synth.resume();
// Speak the "Hello world" string
synth.speakPlainText("Hello, world!", null);
// Wait till speaking is done
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
// Clean up
synth.deallocate();
} catch (Exception e) {
e.printStackTrace();
}
}
}

编辑:我编辑我的程序:

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

public class HelloWorld {
public static void main(String args[]) {
try {
// Create a synthesizer for English
SynthesizerModeDesc modeDesc = new SynthesizerModeDesc(null,"general",Locale.US,null,null);
System.out.println(modeDesc);
Synthesizer synth = Central.createSynthesizer(modeDesc);
//Synthesizer synth = Central.createSynthesizer(null);
// Get it ready to speak
System.out.println(synth);
synth.allocate();
synth.resume();
// Speak the "Hello world" string
synth.speakPlainText("Hello, world!", null);
// Wait till speaking is done
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
// Clean up
synth.deallocate();
} catch (Exception e) {
e.printStackTrace();
}
}
}

它给出输出:

javax.speech.synthesis.SynthesizerModeDesc@9304b1
null
java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:15)

看来 SynthesizerModeDesc 工作正常,但它没有检测到任何引擎,因为我尝试将 null 也传递给函数 Central.createSynthesizer (即获取默认引擎),但它仍然返回 null。我检查了它正在检测的引擎数量,但它显示 0。

请帮帮我!! :(

最佳答案

来自javadocs对于Central.createSynthesizer:

Returns: a Synthesizer matching the required properties or null if none is available

显然,没有可用的。也许尝试 Locale.US 可能会产生有效的 SynthesizerModeDesc

编辑回应评论:说真的,我从来没有使用过这个东西......但我实际上正在阅读 javadocs,因为我们在这里进行。您使用的构造函数 (new SynthesizerModeDesc(Locale.ENGLISH)) 表示:

"Construct an EngineModeDesc for a locale. The engine name, mode name and running are set to null".

从“然后我想使用它”的角度来看,这听起来不太好。还有另一个构造函数允许您设置这些选项,以及设置它们的方法。

关于java - 运行时错误 - JSAPI HelloWorld 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9144565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com