0

我正在使用将文本转换为语音来发送到我的 SIP 应用程序。我不断收到此错误

javax.speech.EngineException: javax.speech.Central: no class found for com.sun.speech.freetts.jsapi.FreeTTSEngineCentral
    at javax.speech.Central.registerEngineCentral(Central.java:706)
    at Text2Speech.TextToSpeech.initEnglish(TextToSpeech.java:49)
    at gov.nist.jrtp.test.send_recv.jrtpTest.EncodeRTP(jrtpTest.java:192)
    at gov.nist.jrtp.test.send_recv.jrtpTest.<init>(jrtpTest.java:93)
    at org.universAAL.samples.sip.exporter.SIPExpImpl.<init>(SIPExpImpl.java:81)
    at org.universAAL.samples.sip.exporter.Activator.start(Activator.java:20)
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:633)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1817)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1734)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1143)
    at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
    at java.lang.Thread.run(Thread.java:745)

我已经包含了所有必需的依赖项,我花了一整天都无法解决这个错误。

当我尝试将我的代码作为普通的 java 应用程序运行时,它工作正常。

代码:

 public void initEnglish(String voiceName) {

      System.out.println("Using voice: " + voiceName);

          try {
              if (desc == null) {

                  System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");

//                desc = new SynthesizerModeDesc(null,"general",    Locale.US,null,null);//new SynthesizerModeDesc(Locale.US);
                  desc = new SynthesizerModeDesc(Locale.US);
                  Central.registerEngineCentral  ("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral");
//                Central.registerEngineCentral  ("com.sun.speech.engine.synthesis.text.TextEngineCentral");

                  synthesizer = Central.createSynthesizer(desc);
                  synthesizer.allocate();
                  synthesizer.resume();
                  VoiceManager vm=VoiceManager.getInstance();
                  voice=vm.getVoice(voiceName);
                  if(voice!=null)
                    {
                    voice.allocate();
                    }

                  freetts=new FreeTTS(voice);
                  System.out.println(System.getProperty("user.dir"));
                  FileLocation =System.getProperty("user.dir");
                  audioPlayer = new SingleFileAudioPlayer(FileLocation+"/NewVoice", Type.WAVE);
                  voice.setAudioPlayer(audioPlayer);
                }

        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (EngineException e) {
            e.printStackTrace();
        } catch (AudioException e) {
            e.printStackTrace();
        } catch (EngineStateError e) {
            e.printStackTrace();
        }


  }
4

0 回答 0