java – 使用Sphinx4进行关键字或关键短语识别

weixin_38121458 2019-09-12 01:05:37
我正在尝试使我的java代码(使用eclipse)执行某些功能,如果说某些事情.我正在使用Sphinx4库,这是我目前拥有的: 我想要它做的是在它说: IF (TRUE) someFunction(); 如果我的演讲是Hello Computer,Hello Jarvis,Good Morning Computer或Good Morning Jarvis,那就是运行该功能.或者换句话说,如果语音与“public< greet>”匹配,则运行该函数.gram文件中的代码行.更具体的是,如果我的演讲符合该语法规则,则返回“问候”.如果这没有意义,我很抱歉…… 这是我的listener.java文件: package speechRecognition; import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; 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; public class Listener { public void someFunction(){ System.out.println("Did Something"); } public static void main(String[] args) { ConfigurationManager cm; if (args.length > 0) { cm = new ConfigurationManager(args[0]); } else { cm = new ConfigurationManager(Listener.class.getResource("configurations.config.xml")); } Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); recognizer.allocate(); Microphone microphone = (Microphone) cm.lookup("microphone"); if (!microphone.startRecording()) { System.out.println("Cannot start microphone."); recognizer.deallocate(); System.exit(1); } while (true) { Result result = recognizer.recognize(); if (result != null) { String resultText = result.getBestFinalResultNoFiller(); if (resultText != "" && resultText != null) { IF (TRUE) someFunction(); } } else { System.out.println("I can't hear what you said.\n"); } } } } 这是我的dictionary.gram: #JSGF V1.0; grammar dictionary; public <greet> = (Hello | Good Morning) (Jarvis | Computer);
...全文
147 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38121708 2019-09-12
  • 打赏
  • 举报
回复
你可以这样做,但唯一的事情是你需要在sphinx4中启用OOG定位.基本上采用任何sphinx4语法示例并根据配置文件中的此Wiki页面启用OOG: <component name="flatLinguist" type="edu.cmu.sphinx.linguist.flat.FlatLinguist"> .... <property name="addOutOfGrammarBranch" value="true"/> <property name="outOfGrammarProbability" value="1E-20"/> <property name="phoneInsertionProbability" value="1E-10"/> <property name="phoneLoopAcousticModel" value="wsj"/> ... </component> 之后它会返回你< unk>如果只记录随机单词,则会输入单词,如果记录了您的语法中的单词,则会返回一个关键短语. 您需要调整outOfGrammar概率以获得可​​靠的检测.有关详细信息,请参阅 http://cmusphinx.sourceforge.net/wiki/sphinx4:rejectionhandling

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧