Click here to Skip to main content
15,889,116 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
C#
Hi I'm using VOCE library in my application as I need both speech synthesis(using freeTTs) and speech recognition(using sphinx4). 

Here is my speech recognition code 

Java
public class recognitionTest{
public static void main(String argv){
 
        voce.SpeechInterface.init("C:/Users/NetBeansProjects/src", false, true, 
        "file:/C:/Users/src/grammar", "words");
 
        System.out.println("This is a speech recognition test. " );
 
        try{
        String s="";
        s = voce.SpeechInterface.popRecognizedString();
        System.out.println("You said: " + s);
 
        if(s.equalsIgnoreCase("log in")){
                       StartApplication.count=1;
          }
          else if(s.equalsIgnoreCase("sign up")){
                        StartApplication.count=2;
            }
             else{
                        //do nothing
              }
 
       voce.SpeechInterface.destroy();
      }
       catch (Exception e)
        {
           System.out.println(e);
        }
    }
   }


I call this from another java application called StartApplication and in this I continuously check whether the value of count has changed to 0 or 1 and if not main method is called again.

However when I say login it is recognized and the value of count is changed to 1 but the following exception is generated .
Exception in thread "AWT-EventQueue-0" javax.speech.EngineStateError: Invalid EngineState: expected=( DEALLOCATED  DEALLOCATING_RESOURCES ) current state=( DEALLOCATED  QUEUE_EMPTY )
at com.sun.speech.engine.BaseEngine.checkEngineState(BaseEngine.java:705)
at com.sun.speech.freetts.jsapi.FreeTTSSynthesizer.cancelAll(FreeTTSSynthesizer.java:238)
at voce.SpeechSynthesizer.destroy(SpeechSynthesizer.java:110)
at voce.SpeechInterface.destroy(SpeechInterface.java:97)
at mailforblind.recognitionTest.main(recognitionTest.java:27)
at mailforblind.StartApplication.mouseClicked(StartApplication.java:174)
at java.awt.Component.processMouseEvent(Component.java:6538)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


Following is the StartApplication code snippet,

Java
public void mouseClicked(MouseEvent e) {
  try{
  while(count==0)
  recognitionTest.main("");
 
  if(count==1){
      LoginPage.main();
  }
  if(count==2){
      SignUpPage.main();
  }
  }catch(Exception ee){System.out.println(ee);}
}


What I have tried:

Inorder to avoid this I removed this voce.SpeechInterface.destroy(); Now when I call this from some other application it throws the following exception

'SEVERE microphone Can't open microphone line with format PCM_SIGNED 16000.0Hz, 16 bit, mono, 2 bytes/frame, big-endian not supported.
in edu.cmu.sphinx.frontend.util.Microphone:open-microphone
Cannot start microphone.'
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900