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 и так далее?

0 ответов

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