连续语音识别Android
我正在看android在做语音识别。 该程序需要持续的语音识别。 图书馆只需要10个字左右。 我已经考虑使用谷歌API,但我不认为它会工作。 (我不能有任何东西覆盖屏幕)。 我一直在寻找其他方式,但似乎没有任何工作。 是否有可能使用Java的语音识别库,或者有什么其他的方式去做这个?
综上所述
1.需要连续的语音input
2.最多10个字
3.如有需要可以训练
4.程序概述 – 显示屏幕,等待语音input或触摸input,更新屏幕重复
5.不能覆盖屏幕上显示的内容
任何帮助,将不胜感激。
提前致谢
以下是Oracle对Java Speech API常见问题的解释。
我想你将不得不直接从手机的麦克风捕捉audio并将其传输到自己的识别服务。 Google识别API是作为一个Intent构build的,它启动了他们自己的识别对话框并给出了结果。 如果你想在没有UI的情况下持续识别,你必须自己构build这个function。
CMUSphinx最近在Android平台上实现了持续监听。 你可以在wiki页面find演示
你可以configuration一个或多个关键字来听,默认关键字是“oh mighty computer”。 您也可以configuration检测阈值。 目前支持的语言是美国英语和其他几种(法语,西class牙语,俄语等)。 你可以训练自己的语言模型。
听是简单的,你创build一个识别器,只是添加关键字点击search:
recognizer = defaultSetup() .setAcousticModel(new File(modelsDir, "hmm/en-us-semi")) .setDictionary(new File(modelsDir, "lm/cmu07a.dic")) .setKeywordThreshold(1e-5f) .getRecognizer(); recognizer.addListener(this); recognizer.addKeywordSearch(KWS_SEARCH_NAME, KEYPHRASE); switchSearch(KWS_SEARCH_NAME);
并定义一个监听器:
@Override public void onPartialResult(Hypothesis hypothesis) { String text = hypothesis.getHypstr(); if (text.equals(KEYPHRASE)) // do something }
您可以在文件系统上指定命令文件path,而不是单个关键短语:
recognizer.addKeywordSearch(KWS_SEARCH, new File(assetsDir, "commands.lst").toString());
哪个命令文件commands.lst
包含每行一个命令:
oh might computer ok google hello dude
为了把这个文件放在文件系统上,你可以把它放到资产中,并在应用程序启动时运行syncAssets。
这是另一种方法(如果您打算使用Phonegap / Cordova)。
https://stackoverflow.com/a/39695412/3603128
1)连续收听。
2)不显示(占用)在屏幕上。
使用CMUSphinx库 :
- 它将在离线模式下工作
- 你可以把它命名
- 当你打电话给他的名字时,它会开始收听
几个月前我有同样的要求,决定写自己的图书馆 。
我相信它也应该符合你的要求;)