我正在尝试开发一个很酷的应用程序,它使用TTS引擎和语音识别。到目前为止还可以,但我想要更多。我想创建一个服务(我认为服务是正确的方式),它总是“倾听”,当有人说“ok google”或其他什么时,语音识别就会启动,就像google now一样。例如,如果你说“ok google”google现在启动。我不知道从哪里开始,所以我直接在这里问是否可能。我试着看这个帖子(在这里)(一直在听关键字,比如4.4上的“Ok google”),最后的答案是关于服务的,正如我所想。有人能帮我写代码吗?
例如,这是通过点击按钮启动语音识别的代码:
/**
* Instruct the app to listen for user speech input
*/
private void listenToSpeech() {
//start the speech recognition intent passing required data
Intent listenIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//indicate package
listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
//message to display while listening
listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!");
//set speech model
listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//specify number of results to retrieve
listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
//start listening
startActivityForResult(listenIntent, VR_REQUEST);
}
您认为可以只使用语音而不按任何按钮启动Listenent吗?这就是我的意思。
用Jform,而不是android,你创建一个按钮,你可以调用button.doClick()
。所以我用的是一个Timer,Timer.scheduleAtFixedRate(新任务(),int延迟,int iterval);
这样它就可以独立地重复执行它。所以我想说的是,我确信android中有一种方法可以do.action/button/key
,等等,你可以使用计时器独立激活它。看起来它是一个空白,试试看
listenToSpeech();
至于计时器;
Timer listenTimer = new Timer();
//listenTimer.schedualAtFixedRate(new listeningTask(),0,1);//place this where your program starts as this starts the timer
class listeningTask extends TimerTask{
if(condition){
listenToSpeech();
}
}
抱歉,使用平板电脑时出现了格式或缩进。
这不是java,但你见过Jasper吗?看起来很有希望:http://jasperproject.github.io
(2018年1月6日更新:在之前的回答中添加了一些位)
你可以参考Saiy,之前的Utter
这个应用程序使用热词检测作为“Google Now”。
并且Android没有提供这样的API来执行这样的操作。
Saiy应用程序现在是开源的,这里有存储库。从代码中我所看到的一点来看,它似乎已经使用CMU Pocketshinx实现了该功能。
别忘了公布你的调查结果。
注意-在后台一直听音乐需要占用大量CPU和电池。
是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误
我想使用并使其直接进入给定的url,而不是从ribbon配置中获取主机。 我知道在Spring,cloud-feign默认与ribbon和eureka一起出现。 根据这个:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eure
问题内容: 有关一些背景知识和参考,以下是一些Heroku文档页面的一些报价。 从Heroku Node.js支持>激活中: 当应用程序的根目录中有文件时,将使用Heroku Node.js buildpack 。 从Heroku Node.js支持>默认Web进程类型: 首先,Heroku寻找一个Procfile来指定您的进程类型。 如果在构建过程中应用程序的根目录中没有任何内容,则将通过运行[
我已经从源代码处构建并安装了另一个glibc,并且我想让现有的用C++编写的可执行文件与自定义glibc一起运行,以供实验之用。为了做到这一点,我尝试更改可执行文件的加载程序。首先,在/lib64下创建了一个名为的链接,其路径指向新的加载程序 其次,通过文本编辑器修改了可执行文件中的加载器路径,将“/lib64/ld-linux-x86-64.so.2”更改为“/lib64/ld_linux-x8
在Spring Boot的文档中,我只找到了使用Redis会话的例子,不使用Redis也能使用它吗?
我在网站上做了一个小研究,并在这个网站上回顾了相关主题,但答案是矛盾的:有人说这是不可能的,有人说这是可能的,但很危险。 目标是传递匿名类的对象作为RMI方法的参数。由于RMI要求,这个类必须是可序列化的。这里没有问题,很容易使类序列化。 但是我们知道内部类的实例包含对外部类的引用(匿名类是内部类)。因此,当我们序列化内部类的实例时,外部类的实例也被序列化为一个字段。问题来了:外部类是不可序列化的