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程序或文本到语音转换。我导入了所有必需的库。但是无法单独修复此异常
答案 0 :(得分:2)
您需要在运行程序时提供运行时参数。在您的代码中,您访问第一个参数:
obj.dospeak(args[0],"life is beautiful");//getting an exception here....
如果你没有提供参数,那么args
数组的索引0就没有元素,因此使用args[0]
访问它会抛出ArrayIndexOutOfBoundsException
。您需要像这样运行代码:
java SpeechUtils argument
将参数替换为您要输入程序的实际值
答案 1 :(得分:1)
当您从命令行调用程序
时,需要传递一些参数java SpeechUtils "I am doing well"
请记住
java.lang.ArrayIndexOutOfBoundsException:10
表示您尝试访问的数组没有在Array [10]为其分配任何元素 即第11个元素缺失。这里你得到异常0,这意味着第0个元素不存在
答案 2 :(得分:0)
缺少参数执行程序时。
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
由于您在代码args[0]
中使用了obj.dospeak(args[0],"life is beautiful");
而导致缺少由于缺少参数而导致的错误,因此在运行时传递参数。 args[0]
表示具有第一个元素的数组,因此运行程序只需要一个参数。
使用命令java SpeechUtils YourArgumentYouWantToAdd