我安装了开源Kõnele(source code),目的是研究如何编写和注册自定义语音识别服务。作为第一步,在深入研究源代码之前,我试图验证它确实按照我的预期工作。所以,我去了我的手机System settings
> Language & input
> Voice recognizer
并选择Kõnele作为系统的识别器:
然后我尝试在手机中使用麦克风选项提供键盘的各种应用程序,期待当我触摸麦克风符号时,将使用Kõnele。相反,系统总是弹出谷歌的内置语音搜索。
为什么?
我是否错过了我需要配置的其他设置(作为用户)才能使其正常工作?
这是Android操作系统的“设计”限制吗?
是否可以告诉Android始终使用不是Google语音搜索的其他RecognizerIntent?如果是这样,怎么样?
更新:我设法找到一个应用,似乎不忽略了额外的RecognizerIntent:Google地图:
对我而言,这表明这与Android 意图解析有关。但是,为什么有些应用程序不会触发“使用”对话框完成操作,而谷歌地图呢?
答案 0 :(得分:2)
我认为您已经完成了作为用户所能做的一切,但是想要使用语音识别器的应用程序当然可以忽略您的配置。例如。它可以通过构造如下的识别器来直接选择特定的语音识别器实现:
SpeechRecognizer.createSpeechRecognizer(this,
new ComponentName("com.google",
"com.google.Recognizer");
);
在这种情况下,您唯一的选择是卸载或禁用此特定实现,并希望该应用程序回退到一般方法:
SpeechRecognizer.createSpeechRecognizer(this);
不幸的是,Google在某些时候开始宣传应用程序直接链接到Google语音识别器的想法(请参阅Add Voice Typing To Your IME)。现在有这么多键盘应用就是这样做的(参见例如the issue that I raised with SwiftKey),你唯一的选择就是找到一个没有...... {/ p>
也可能是应用程序发送了Kõnele不支持的意图(manifest中列出了受支持的意图),但在语音识别应用程序中支持这种意图是有意义的。在这种情况下,它将是Kõnele的功能请求。