侦听器服务始终在iOS中侦听特定的热门单词

时间:2018-08-23 06:57:49

标签: ios listener dialogflow

新手在这里。我有一个拥有私人应用商店的客户。要求是一个基于dialogflow的聊天助手,可以帮助其私有应用商店中已经部署的应用程序。他们希望助手听一个特定的关键字,并在他们询问查询的地方启动对话流交互。我知道iOS不允许一分钟后运行服务这一事实。由于这仅与从特定应用商店部署的一个应用有关,是否有办法可以实现这一目标?

我也考虑了以下替代方案, -通过SIRI控制应用程序,但是客户端希望知道是否可以使用自定义的“ hotword”侦听器或调用词。

谢谢

2 个答案:

答案 0 :(得分:0)

不确定如何在iOS中使用Siri调用聊天。可能您可能希望看到Siri Kit。但是,如果您想通过iOS应用程序与Dialogflow通信,则可以使用Dialogflow iOS client

答案 1 :(得分:0)

您的问题有点笼统,所以我给您一个广泛的答案。

  1. 您要保持麦克风打开并收听关键字。使用AudioComponentInstance保持麦克风接通。如果设置正确,则会有recordingCallback为您提供最新的麦克风输入。您可以每隔X毫秒用NSMutableData跟踪回调中的用户语音,检查他们是否说出了关键字。

  2. 一种检查关键字的方式:将用户说的所有内容发送给DialogFlow。您可以在应用中设置DialogFlow gRPC连接(Google Cloud具有可复制的iOS示例)。配置好连接后,将所有音频数据从您的recordingCallback流到DialogFlow,并检查用户是否说出了关键字。 这种方法的问题: DialogFlow的流传输限制为1分钟,这也是一种超级耗能的方式来完成您想要的事情。

  3. 第二个用于检查关键字的选项:使用TensorFlow训练自己的小型神经网络以识别所需的确切关键字(如果这是常见关键字,则训练数据将在某处可用,并且大量Tensorflow音频识别在线教程)。 “嘿Siri”以这种方式工作(复杂得多,但本质上是这样)。公平警告,涉及音频时将TF模型转换为iOS应用程序的TF Lite模型是棘手的,因为Tensorflow Lite不支持DecodeWav之类的操作。您还可以尝试使用Tensorflow团队发布的tf-coreml工具将训练有素的TF模型转换为Core ML模型。

  4. 一旦您的关键字机制检测到关键字,您就可以使用DialogFlow gRPC连接将音频数据从recordingCallback流到DialogFlow,然后等待包含意图信息的DFQueryResult。您可以使用该意图信息在私人应用商店中执行所需的任何操作。

  5. 您提到了Siri。我不知道如何将Siri连接到您自己的应用程序中的私人应用程序商店。您需要提供更多详细信息,但请查看有关快捷方式的Siri文档。