import javax.speech.*;
import java.util.*;// creates a default Systhesize
import javax.speech.synthesis.*; //code for text-speech engine
public class SpeechUtils
{
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);
System.out.println(message);}
}
public static void main(String[] args)
{
SpeechUtils obj=new SpeechUtils();
obj.dospeak(args[0],"life is beautiful");//getting an exception here....
}
}如何修复此异常?我收到一个错误,如下所示
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at SpeechUtils.main(SpeechUtils.java:44)". 这是一个Java程序或文本到语音的转换。我导入了所有必要的libraries.But,无法单独修复此异常
发布于 2013-11-07 11:56:28
在运行程序时,您需要提供运行时参数。正如您的代码中访问的第一个参数一样:
obj.dospeak(args[0],"life is beautiful");//getting an exception here....如果不提供参数,那么在args数组的索引0处将没有元素,因此使用args[0]访问它将抛出ArrayIndexOutOfBoundsException。你需要这样运行你的代码:
java SpeechUtils argument 将参数替换为要输入到程序中的实际值
发布于 2013-11-07 12:04:48
当您从命令行调用程序时,需要传递一些参数
java SpeechUtils "I am doing well"请记住
java.lang.ArrayIndexOutOfBoundsException:10
意味着您试图访问的数组在Array10中没有分配任何元素,即缺少第11个元素。在这里,您在0处得到异常,这意味着第0个元素不在那里
发布于 2013-11-07 12:14:14
执行程序时缺少参数。
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0由于缺少您需要提供的参数而导致的错误,因为您在代码obj.dospeak(args[0],"life is beautiful");中使用了args[0],因此在运行时传递参数。args[0]用它的第一个元素表示数组,所以运行你的程序只需要一个参数。
使用命令java SpeechUtils YourArgumentYouWantToAdd
https://stackoverflow.com/questions/19827719
复制相似问题