侦听器服务始终在 iOS 中侦听特定的热词
A listener service always Listening to a particular hotword in iOS
这里是新手。我有一个拥有私人应用商店的客户。要求是一个基于对话流的聊天助手,可以帮助已经部署在他们的私人应用商店中的应用程序。他们希望助手听取特定关键字并在他们提出查询时启动对话流交互。我知道 iOS 不允许在一分钟后为 运行 提供服务。由于这仅与从特定应用商店部署的一个应用程序相关,我有什么方法可以完成此操作吗?
我也考虑过以下替代方案,
- 通过 SIRI 控制应用程序,但客户想知道自定义 'hotword' 侦听器或调用词是否可行。
谢谢
不确定如何在 iOS 中使用 Siri 调用聊天。也许你可能想看 Siri Kit for that. But if you want to communicate with Dialogflow from iOS app you can do that by using Dialogflow iOS client.
你的问题有点笼统,所以我给你一个笼统的答案。
您想打开麦克风并收听关键字。使用 AudioComponentInstance
保持麦克风开启。如果设置正确,您将拥有一个 recordingCallback
为您提供最新的麦克风输入。您可以使用 NSMutableData
在回调中跟踪用户的语音,并且每隔 X 毫秒,检查他们是否说了关键字。
检查关键字的一种方法:将用户所说的所有内容发送到 DialogFlow。您可以在您的应用程序中设置一个 DialogFlow gRPC 连接(Google Cloud 有 iOS 个您可以复制的示例)。配置连接后,将所有音频数据从 recordingCallback
流式传输到 DialogFlow,并检查用户是否说出关键字。 此方法的问题: DialogFlow 有 1 分钟的流式传输限制,而且它也是一种超耗能的方式来执行您想要的操作。
所以检查关键字的第二个选项:使用 TensorFlow 训练你自己的迷你神经网络来识别你想要的确切关键字(如果它是一个常见的关键字,训练数据将在某个地方可用并且有很多Tensorflow 音频识别在线教程)。 "Hey Siri" 以这种方式工作(更复杂但本质上是这样)。公平警告,当涉及音频时,将 iOS 应用程序的 TF 模型转换为 TF Lite 模型是很棘手的,因为 Tensorflow Lite 不支持像 DecodeWav
这样的操作。您也可以尝试使用 Tensorflow 团队发布的 tf-coreml
工具将训练好的 TF 模型转换为 Core ML 模型。
一旦您的关键字机制检测到关键字,您就可以使用 DialogFlow gRPC 连接将音频数据从 recordingCallback
流式传输到 DialogFlow,然后等待 DFQueryResult
信息。您可以使用该意图信息在您的私人应用商店中执行您需要执行的任何操作。
你提到了 Siri。我不知道您如何在您自己的应用程序中将 Siri 连接到私人应用程序商店。您需要提供更多详细信息,但请查看有关快捷方式的 Siri 文档。
这里是新手。我有一个拥有私人应用商店的客户。要求是一个基于对话流的聊天助手,可以帮助已经部署在他们的私人应用商店中的应用程序。他们希望助手听取特定关键字并在他们提出查询时启动对话流交互。我知道 iOS 不允许在一分钟后为 运行 提供服务。由于这仅与从特定应用商店部署的一个应用程序相关,我有什么方法可以完成此操作吗?
我也考虑过以下替代方案, - 通过 SIRI 控制应用程序,但客户想知道自定义 'hotword' 侦听器或调用词是否可行。
谢谢
不确定如何在 iOS 中使用 Siri 调用聊天。也许你可能想看 Siri Kit for that. But if you want to communicate with Dialogflow from iOS app you can do that by using Dialogflow iOS client.
你的问题有点笼统,所以我给你一个笼统的答案。
您想打开麦克风并收听关键字。使用
AudioComponentInstance
保持麦克风开启。如果设置正确,您将拥有一个recordingCallback
为您提供最新的麦克风输入。您可以使用NSMutableData
在回调中跟踪用户的语音,并且每隔 X 毫秒,检查他们是否说了关键字。检查关键字的一种方法:将用户所说的所有内容发送到 DialogFlow。您可以在您的应用程序中设置一个 DialogFlow gRPC 连接(Google Cloud 有 iOS 个您可以复制的示例)。配置连接后,将所有音频数据从
recordingCallback
流式传输到 DialogFlow,并检查用户是否说出关键字。 此方法的问题: DialogFlow 有 1 分钟的流式传输限制,而且它也是一种超耗能的方式来执行您想要的操作。所以检查关键字的第二个选项:使用 TensorFlow 训练你自己的迷你神经网络来识别你想要的确切关键字(如果它是一个常见的关键字,训练数据将在某个地方可用并且有很多Tensorflow 音频识别在线教程)。 "Hey Siri" 以这种方式工作(更复杂但本质上是这样)。公平警告,当涉及音频时,将 iOS 应用程序的 TF 模型转换为 TF Lite 模型是很棘手的,因为 Tensorflow Lite 不支持像
DecodeWav
这样的操作。您也可以尝试使用 Tensorflow 团队发布的tf-coreml
工具将训练好的 TF 模型转换为 Core ML 模型。一旦您的关键字机制检测到关键字,您就可以使用 DialogFlow gRPC 连接将音频数据从
recordingCallback
流式传输到 DialogFlow,然后等待DFQueryResult
信息。您可以使用该意图信息在您的私人应用商店中执行您需要执行的任何操作。你提到了 Siri。我不知道您如何在您自己的应用程序中将 Siri 连接到私人应用程序商店。您需要提供更多详细信息,但请查看有关快捷方式的 Siri 文档。