我正在开发一个语音应用程序。它以语音形式输入,然后执行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");
}
}
}
}