首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使TTS (文本到语音)在java netbeans中工作?

如何使TTS (文本到语音)在java netbeans中工作?
EN

Stack Overflow用户
提问于 2012-12-02 17:17:32
回答 1查看 3.4K关注 0票数 1

我试图让一个TTS在netbeans中为java工作。我已解压缩JSAPI文件,并将以下jars添加到库中

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

当我运行以下代码时:

代码语言:javascript
复制
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");
 }
}

我收到以下信息:

代码语言:javascript
复制
**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)**

当我改变主要方法时,如下所示:

代码语言:javascript
复制
public static void main (String[]args)
{
 Demofreetts2 obj = new Demofreetts2();
 obj.doSpeak("hello","kevin16");
}

我收到这样的信息:

代码语言:javascript
复制
**run:
java.lang.NullPointerException
BUILD SUCCESSFUL (total time: 1 second)**

有人知道我怎样才能让这件事起作用吗?

我只是一个把字符串转换成语音的程序。

EN

回答 1

Stack Overflow用户

发布于 2012-12-02 17:25:56

错误1:要使用args[0],必须向主方法传递一些参数。有关额外信息,请参见What is "String args[]"? parameter in main method Java

错误2:您在代码中命中了一个NullPointerException,这意味着您试图在一个等于null的实例上使用一个方法。要么使用调试器,要么使用e.printStackTrace();而不是System.out.println (""+e);扩展调试信息,以便知道哪个实例是罪魁祸首。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13671682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档