FreeTTS - java.lang.ClassNotFoundException: javax.speech.EngineCentral
У меня есть проблема, и я знаю, что она может быть похожа на те, которые онлайн, но я следовал всем инструкциям, которые я нашел в Интернете, и я все еще получаю эту проблему.
В основном я делаю графический интерфейс с виртуальной клавиатурой, и независимо от того, что пользователь печатает, я хочу, чтобы пользователь мог нажимать кнопку, и я хочу, чтобы синтез речи преобразовывал текст в речь. Я посмотрел онлайн и обнаружил, что самым простым и распространенным открытым программным обеспечением было freeTSS. Я установил freeTSS и следовал инструкциям.
Затем я взял следующий код из интернет-сообщества:
import java.util.*; import javax.speech.*; import javax.speech.synthesis.*;
public class Text2Speech {
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);
System.out.print("Speaking : "+speaktext);
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 (System.getProperty( "java.home" ) );
System.out.println(""+e);
System.out.println(message);
}
}
public static void main(String[] args)
{
Text2Speech obj=new Text2Speech(); obj.dospeak("Hello i am kevin ","kevin16");
} }
Когда я запускаю его в первый раз, я получаю следующую ошибку:
java.lang.ClassNotFoundException: javax.speech.EngineCentral
Интересно, что когда я закрываю ошибку и запускаю ее снова (оба раза через основной метод), я получаю сообщение об ошибке, говорящее о том, что мне не хватает элемента speech.properties. Это странно, так как я запустил HelloWorld.jar из командной строки в первый раз, и мне сказали, куда добавить свойства речи. java -jar bin/HelloWorld.jar
отлично работает в командной строке, но почему-то что-то не работает в коде, которым я делюсь выше.
Я следовал инструкциям на: http://www.ryan-h.com/uncategorized/java-speech-jsapi-freetts/ и до сих пор не могу решить проблему. Я использую BlueJ в качестве своей IDE, да, я знаю, что это не так хорошо, и я должен использовать Eclipse, но когда я делаю проекты с графическим интерфейсом, я скорее использую BlueJ, а не Eclipse. Будет ли это иметь значение, хотя?
И последний вопрос, я предполагаю превратить мою программу в приложение, чтобы пользователь, который не является программистом, мог легко ее использовать. Нужно ли пользователю проходить через отвратительную процедуру установки Jaspi и freetts, копировать файлы JAR, копировать speech.properties и так далее?