新手在这里。我有一个拥有私人应用商店的客户。要求是一个基于dialogflow的聊天助手,可以帮助其私有应用商店中已经部署的应用程序。他们希望助手听一个特定的关键字,并在他们询问查询的地方启动对话流交互。我知道iOS不允许一分钟后运行服务这一事实。由于这仅与从特定应用商店部署的一个应用有关,是否有办法可以实现这一目标?
我也考虑了以下替代方案, -通过SIRI控制应用程序,但是客户端希望知道是否可以使用自定义的“ hotword”侦听器或调用词。
谢谢
答案 0 :(得分:0)
不确定如何在iOS中使用Siri调用聊天。可能您可能希望看到Siri Kit。但是,如果您想通过iOS应用程序与Dialogflow通信,则可以使用Dialogflow iOS client。
答案 1 :(得分:0)
您的问题有点笼统,所以我给您一个广泛的答案。
您要保持麦克风打开并收听关键字。使用AudioComponentInstance
保持麦克风接通。如果设置正确,则会有recordingCallback
为您提供最新的麦克风输入。您可以每隔X毫秒用NSMutableData
跟踪回调中的用户语音,检查他们是否说出了关键字。
一种检查关键字的方式:将用户说的所有内容发送给DialogFlow。您可以在应用中设置DialogFlow gRPC连接(Google Cloud具有可复制的iOS示例)。配置好连接后,将所有音频数据从您的recordingCallback
流到DialogFlow,并检查用户是否说出了关键字。 这种方法的问题: DialogFlow的流传输限制为1分钟,这也是一种超级耗能的方式来完成您想要的事情。
第二个用于检查关键字的选项:使用TensorFlow训练自己的小型神经网络以识别所需的确切关键字(如果这是常见关键字,则训练数据将在某处可用,并且大量Tensorflow音频识别在线教程)。 “嘿Siri”以这种方式工作(复杂得多,但本质上是这样)。公平警告,涉及音频时将TF模型转换为iOS应用程序的TF Lite模型是棘手的,因为Tensorflow Lite不支持DecodeWav
之类的操作。您还可以尝试使用Tensorflow团队发布的tf-coreml
工具将训练有素的TF模型转换为Core ML模型。
一旦您的关键字机制检测到关键字,您就可以使用DialogFlow gRPC连接将音频数据从recordingCallback
流到DialogFlow,然后等待包含意图信息的DFQueryResult
。您可以使用该意图信息在私人应用商店中执行所需的任何操作。
您提到了Siri。我不知道如何将Siri连接到您自己的应用程序中的私人应用程序商店。您需要提供更多详细信息,但请查看有关快捷方式的Siri文档。