1

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

1 に答える 1

2

システムに Locale.ENGLISH 用のシンセサイザーがインストールされていない可能性があります。これにより、Central.createSynthesizer() が null を返し、synth.allocate() で null ポインター例外が発生します。

Central.createSynthesizer() を呼び出す前に、Central.availableSynthesizers() を呼び出して、システムにインストールされているシンセサイザーを見つけることができます。

また、簡単なテストとして、Locale.ENGLISH の代わりに Locale.US を試してみて、それが機能するかどうかを確認することもできます...これは単なる推測です。

FreeTTS (http://freetts.sourceforge.net/docs/index.php) は、Java Speech インターフェイスの実装として記述されているようです。インストールすると役立つ場合があります。

于 2012-07-17T23:54:07.677 に答える