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



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

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

谢谢

你的问题有点宽泛,所以我会给你一个宽泛的答案。

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

  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. 关键字
  5. 机制检测到关键字后,可以使用 DialogFlow gRPC 连接将音频数据从recordingCallback流式传输到 DialogFlow,并等待包含意向信息的DFQueryResult。您可以使用该意图信息在私人应用商店中执行任何需要执行的操作。

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

不确定如何在iOS中使用Siri调用聊天。可能您可能想为此查看Siri Kit。但是,如果您想从iOS应用程序与Dialogflow进行通信,则可以使用Dialogflow iOS客户端来实现。

最新更新