Как заставить TTS (Text To Speech) работать в Java NetBeans?

Я пытаюсь заставить TTS работать в NetBeans для Java. Я разархивировал файлы JSAPI и добавил следующие файлы в библиотеку

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

Кто-нибудь знает, как я могу заставить это работать?

Я просто какая программа, которая будет конвертировать строку в речь.

1 ответ

Ошибка № 1: вам придется передать некоторые аргументы в ваш основной метод для использования args[0], Смотрите, что такое "String args[]"? параметр в основном методе Java для дополнительной информации.

Ошибка № 2: вы нажали NullPointerException в вашем коде, то есть вы пытаетесь использовать метод над экземпляром, который равен null, Либо используйте отладчик, либо расширите отладочную информацию с помощью e.printStackTrace(); вместо System.out.println (""+e);, чтобы узнать, какой экземпляр является виновником.

Другие вопросы по тегам