java - 如何使用内置的 Java tts?

标签 java accessibility speech-synthesis

我正在尝试使用内置于语音中的java,但是每当我尝试使用它时,当我调用synth.allocate 时,它​​都会给我一个空指针异常。我已经查看了在线示例,但仍然遇到相同的错误,而且我看不出我做错了什么

JButton button = new JButton();
    button.addActionListener(new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            try {
                Synthesizer synth = Central.createSynthesizer(
                    new SynthesizerModeDesc(Locale.ENGLISH));

                synth.allocate();
                synth.resume();

                synth.speakPlainText("Hello, world!", null);

                synth.waitEngineState(Synthesizer.QUEUE_EMPTY);

                synth.deallocate();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

最佳答案

您的系统可能没有安装 Locale.ENGLISH 合成器。这反过来会导致 Central.createSynthesizer() 返回 null,从而导致在 synth.allocate() 处出现空指针异常。

在调用 Central.createSynthesizer() 之前,您可能需要调用 Central.availableSynthesizers() 来查找系统上安装了哪些合成器。

此外,作为快速测试,您可以尝试使用 Locale.US 而不是 Locale.ENGLISH,看看是否有效……这只是一个猜测。

我看到 FreeTTS (http://freetts.sourceforge.net/docs/index.php) 被描述为 Java Speech 接口(interface)的实现。安装这可能会有所帮助。

关于java - 如何使用内置的 Java tts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530296/

相关文章:

java - Spring MVC : Is it possible to bind a specific HttpMessageConverter to a @RequestBody-annotated parameter?

html - 具有特殊按键事件的元素的 ARIA 处理

ios - 如何防止 Nuance 的 Dragon Mobile 关闭 VoiceOver?

php - 愚蠢的想法 : Mac speech from PHP server?

c# - SAPI5 讲 XML

java - Oracle Weblogic : The root element web-app is missing in the descriptor file

java - @ResponseBody 注解在响应中重置 header

java - 测试服务的启动和运行并在关闭时报告

ios - 选择 UIButton 的可访问性标签?

c# - 监听特定语法c#