如何在sphinx4中启动和停止语音识别,并使用GUI链接Sphinx4

时间:2015-05-11 07:58:25

标签: java actionlistener sphinx4

我正在开发一个语音应用程序。它以语音形式输入,然后执行GUI上可用的操作。我正在使用sphinx4-1.0beta 6 src和eclipse IDE。

我已经创建了GUI,现在我要做的就是使用语音来执行按钮点击。例如,当我说" SEARCH"时,点击搜索按钮。基本上我的想法是在我的gui中访问sphinx4,以便我可以在我的按钮上开始语音识别并根据语音输入执行搜索。

我还希望在单击按钮后听取语音输入,以确定要搜索的内容并相应地执行操作。有人请建议需要做些什么。

以下是修改后的文件HelloWorld。

这是按钮的actionPerformed方法:

 public void jButton3ActionPerformed(java.awt.event.ActionEvent evt){
      try {
        Class.forName("oracle.jdbc.OracleDriver");
        con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","manhattan");

        PreparedStatement ps=con.prepareStatement("select * from records where stid=?");

       // ps.setInt(6,id);

        ResultSet rs=ps.executeQuery();

        if (rs.next()){
            //TODO add functionality.
        }

    }catch(Exception e){
        e.printStackTrace();
    }
   }

有人可以建议如何使用语音点击此按钮。我检查了doClick()可以用来处理监听器。但无法弄清楚如何实现目标。

其次如何让sphinx4在点击后听取语音输入?这是如何在GUI中链接和使用sphinx4 ..?

例如我说" SEARCH"然后单击搜索按钮,然后我说" java",它从数据库中检索java的结果。我修改了HelloWorld以包含记事本和浏览器,以便它可以在记事本上打开记事本。但是如何将其链接到按钮点击?

以下是来自sphinx4的修改后的HelloWorld演示:

package edu.cmu.sphinx.demo.helloworld;


import java.io.IOException;

import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;

import java.io.IOException;





public class HelloWorld {



public static void main(String[] args)
{


    ConfigurationManager cm;
    Process pr[]=new Process[2];

    if (args.length > 0) {
        cm = new ConfigurationManager(args));
    } else {
        cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml"));
    }

    Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
    recognizer.allocate();



    // start the microphone or exit if the programm if this is not possible
    Microphone microphone = (Microphone) cm.lookup("microphone");
    if (!microphone.startRecording()) {
        System.out.println("Cannot start microphone.");
        recognizer.deallocate();
        System.exit(1);
    }

    System.out.println("Say: (Good morning | Hello ) ( Steve | Andrew | Paul | Phili p | Rita | Will | Mark )");
    System.out.print(" (Hi | Bye )* ( Tony ) \n( Search | Mail | Browser | Notepad ) \n (Open | Close) ( Search | Mail | Browser | Paint | Notepad ) \n");

    // loop the recognition until the programm exits.
    while (true) {
        System.out.println("Start speaking. Press Ctrl-C to quit.\n");

        Result result = recognizer.recognize();

        if (result != null) 
        {
            String resultText = result.getBestFinalResultNoFiller();

              if((resultText.equalsIgnoreCase("Notepad"))||(resultText.equalsIgnoreCase("Open Notepad")))
               { 
                try
                {
                //Process pr[]=new Process[2];

                 pr[0] = new ProcessBuilder("notepad.exe").start();

                //p.command("notepad.exe");

            //try {
                //p.start();
            }

            catch (IOException e) 

            {
                    e.printStackTrace();
            }
            }

               if(resultText.equalsIgnoreCase("Close Notepad"))
                { 
                    try{
                        pr[0].destroy();
                    }
                    catch(Exception ee)
                    {
                        ee.printStackTrace();


                    }
                    }

               if((resultText.equalsIgnoreCase("Browser"))||(resultText.equalsIgnoreCase("Open Browser")))
               { 
                try
                {
                //Process pr[]=new Process[2];

                 pr[1] = new ProcessBuilder("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe").start();

                //p.command("notepad.exe");

            //try {
                //p.start();
            }

            catch (IOException e) 

            {
                    e.printStackTrace();
            }
               }


            System.out.println("You said: " + resultText + '\n');
        }

        else {
            System.out.println("I can't hear what you said.\n");
        }
     }
  }
 }

0 个答案:

没有答案