1

Java の netbeans で TTS を動作させようとしています。JSAPI ファイルを解凍し、次の jar をライブラリに追加しました

  • cmu_us_kal.jar
  • cmulex.jar
  • en_us.jar
  • freetts.jar
  • cmulex.jar
  • jsapi.jar

次のコードを実行すると:

package demofreetts2;

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

public class Demofreetts2 {

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);
    }
 }
public static void main (String[]args)
{
 Demofreetts2 obj = new Demofreetts2();
  obj.doSpeak(args[0],"kevin16");
 }
}

次のメッセージが表示されます。

**run:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at demofreetts2.Demofreetts2.main(Demofreetts2.java:46)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)**

メインメソッドを次のように変更すると:

public static void main (String[]args)
{
 Demofreetts2 obj = new Demofreetts2();
 obj.doSpeak("hello","kevin16");
}

次のメッセージが表示されます。

**run:
java.lang.NullPointerException
BUILD SUCCESSFUL (total time: 1 second)**

これを機能させる方法を知っている人はいますか?

文字列を音声に変換するプログラムです。

4

1 に答える 1

0

エラー #1: main メソッドにいくつかの引数を渡して使用する必要がありますargs[0]「String args[]」とは何ですか?を参照してください。追加情報については、main メソッド Java のパラメーターを参照してください。

エラー #2 :NullPointerExceptionコードで a をヒットしました。これは、 に等しいインスタンスに対してメソッドを使用しようとしたことを意味しますnull。どのインスタンスが原因であるかを知るために、デバッガーを使用するか、e.printStackTrace();代わりに を使用してデバッグ情報を展開します。System.out.println (""+e);

于 2012-12-02T17:25:56.397 に答える