2012-12-02 3 views
1

자바 용 netbeans에서 TTS를 사용하려고합니다. 나는 JSAPI 파일의 압축을 해제하고 라이브러리java netbeans에서 TTS (Text To Speech)를 사용하려면 어떻게해야합니까?

  • cmu_us_kal.jar
  • cmulex.jar
  • en_us.jar
  • freetts.jar
  • cmulex.jar
  • 에 다음 항아리를 추가 한 jsapi.jar

다음 코드를 실행할 때 :

내가 그렇게 같은 주요 방법을 변경하는 경우

**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)** 

:

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

사람이 알고 있나요 :

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

나는이 메시지가
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"); 
} 
} 

나는 다음과 같은 메시지가 이거 작동시킬 수 있니?

필자는 문자열을 음성으로 변환하는 프로그램을 소개합니다.

답변

0

오류 # 1 : args[0]을 사용하려면 기본 방법에 몇 가지 인수를 전달해야합니다. 자세한 내용은 What is "String args[]"? parameter in main method Java을 참조하십시오.

오류 # 2 : 코드에서 NullPointerException을 누르십시오. 즉, null과 같은 인스턴스에서 메서드를 사용하려고하면 오류가 발생합니다. 디버거를 사용하거나 System.out.println (""+e); 대신 e.printStackTrace();을 사용하여 디버그 정보를 확장하여 어떤 인스턴스가 범인인지 파악하십시오.

+0

내가 다음과 같은 메시지가 나온 것처럼 error2를 조정했을 때 ------------------------------- ------------------------------------- 실행 : java.lang.NullPointerException \t at demofreetts2.Demofreetts2.main (Demofreetts2.java:46) BUILD SUCCESSFUL에서 demofreetts2.Demofreetts2.doSpeak (Demofreetts2.java:19) \t (총 시간 : 1 초) ----------- -------------------------------------------------- --- 음성이 null 값이기 때문에 이것은 무엇입니까? – user1870404

+0

'Demofreetts2'의 19 행은 무엇입니까? 이 줄의 변수 중 하나는 'null'입니다. –

+0

synthesizer.allocate(); – user1870404

관련 문제