问题标签 [sfspeechrecognizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
705 浏览

swift - 为“SFSpeechRecognizer”实现“用户停止讲话”通知

我正在尝试解决这个问题:SFSpeechRecognizer - 检测话语结束

问题是SFSpeechRecognizer每次检测到的语音字符串发生变化时都会触发回调,但它只会在 60 秒的静音后触发(因此它会设置isFinal标志)。

建议的技术是每次回调触发时启动一个 2 秒的计时器,如果计时器已经设置,则首先使计时器无效。

我已经实现了这种技术。然而,在我的计时器回调永远不会受到打击。

谁能告诉我为什么?

链接:
- SFSpeechRecognizer - 检测话语结束

0 投票
1 回答
62 浏览

ios - SFSpeechRecognizer 同时请求?

我正在尝试使用 SFSpeechRecognizer 在我的应用程序中转录语音命令。命令只有一个字。SFSpeechAudioBufferRecognitionRequest(来自麦克风点击)可能需要几秒钟才能最终返回该单词的准确转录,但这对我的用例来说很好。

但是,在我的用例中,可能会在这几秒钟过去之前输入一个新命令。如何开始处理新请求,同时仍允许前一个请求继续改进其结果(即,不会过早停止前一个请求)?

我没完没了地用谷歌搜索,似乎没有关于麦克风输入的同时/并发请求的文档。

任何想法将不胜感激!

0 投票
0 回答
385 浏览

ios - 语音识别会话崩溃

我知道已经提出了类似的问题,但提出的解决方案对我没有帮助。

在我的应用程序中,我必须识别用户的语音并合成文本到语音。问题是,当应用程序尝试识别时(尤其是在文本转语音之后,但在其他情况下:例如,在第二次识别尝试时),我会随机崩溃。

我有一个特殊的 Speecher 类,它有几个明显的变量(一些是私有的)和两个主要功能:startRecordkillRecord.

在我尝试使用文本转语音之前或在我想取消/停止识别会话之前调用下一个函数:

我得到的很多是 lldb 错误。它看起来像这样:

在此处输入图像描述

代码中的问题字符串似乎是,inputNode = audioEngine.inputNode但我不知道如何解决它。我之前已经尝试过audioEngine.inputNode.removeTap(onBus: 0)inputNode = audioEngine.inputNode但无济于事。

0 投票
2 回答
957 浏览

ios - SFSpeechRecognizer 在 IOS 13.2 中无法正常工作

在 IOS 13.1 中,一切正常。从 13.2 开始,SFSpeechRecognizer 让我很难受。语音识别比以前花费的时间更长,结果。IsFinal bool 永远不会是真的。

我不仅在我的应用程序中与这些错误作斗争,而且还在官方示例代码项目(https://developer.apple.com/documentation/speech/recognizing_speech_in_live_audio)中得到它们。

有没有人遇到类似的问题??

0 投票
1 回答
68 浏览

ios - SFSpeechRecognizer 在线:在哪个 url 发送请求?

我正在使用 SFSpeechRecognizer(包:Speech)在 Swift 中开发一个 iOS 应用程序。

此应用程序是为使用 VPN 并阻止来自/发往外部网络的每个请求的组织开发的。

这是部分代码:

我需要知道从哪个 url 接收/发送了 RecognizerRequest,以便我可以将其传达给组织的网络团队,他们将打开与这些 url 的连接。在文档上我找不到很多。

0 投票
0 回答
64 浏览

macos - `kAFAssistantErrorDomain` 代码记录在哪里?

我正在尝试SFSpeechRecognizer在 macOS 上使用。

我收到错误消息,例如:

如何解释这些错误信息?我在文档中的任何地方都找不到枚举的代码。

0 投票
1 回答
107 浏览

macos - 来自 `SFSpeechRecognizer` `recognitionTask` 在约 30 秒标记处的不需要的回调

如果我检查了回调中的SFSpeechRecognizer recognitionTask回调标记(在 macOS 上):

...我观察到:

即在我最后一次发言后大约 30 秒,还有一个额外的不需要的回调。

result用于nil最后一次回调。

它接近 30 秒的事实表明它代表了最大超时。

我不希望超时,因为我已经手动关闭了我的会话(在 5 秒左右,通过单击一个按钮):

有很多注释掉的代码,因为在我看来,有些进程我无法关闭,但我无法弄清楚。

完整的代码在这里

谁能看到出了什么问题?

0 投票
0 回答
84 浏览

macos - 绕过/禁用 macOS 安全措施以实现 SFSpeechRecognizer 项目的高效开发周期

我正在构建一个使用 的 macOS 项目SFSpeechRecognizer,而后者又使用了麦克风。

每次修改代码并重建时,我都必须:

然后我必须:
- 单击挂锁
- 使用我的指纹进行授权
- 取消选中并重新检查我的应用程序

现在我可以跑了。

这是因为我正在点击键盘事件。

但是在第一次运行时,由于我正在使用语音识别,所以我另外显示了两个对话框:
-授权此应用程序使用麦克风
-授权此应用程序将语音数据发送到 Apple

这些支票是由 Catalina 提供的。

每次我需要测试某些东西时,不得不这样做很快就会变得非常令人沮丧。这很容易每天 100 次。

在开发过程中有没有办法绕过这些安全措施?

更新
我尝试设置一个代码签名标识,Build settings -> Signing -> Codesign Identity -> Apple Development: mySigningId...如下所示:

在此处输入图像描述

我然后Product -> Clean Build Folder,只是以防万一。

然后我运行项目,体验对话框,第二次运行,这次没有对话框,做一个小的代码更改强制重建(比如在某处添加一个空格),再次运行。对话又回来了。

就像一个健全的检查,我检查我的Info.plist,并观察:

在此处输入图像描述

有什么我想念的吗?

PS如果有人能推荐更合适的标签,我不胜感激

0 投票
0 回答
902 浏览

swift - 如何在 macOS / swift 的 AVAudioEngine 中选择音频输入设备(麦克风)?

AVAudioEngine是否可以在 macOS 上使用 Swift 时选择输入设备?

用例:

SFSpeechRecognizer在 macOS 上使用。

要将麦克风数据输入其中,我正在使用

这将使用系统默认麦克风。

我有一个外接 USB 麦克风,我想改用它。我可以进入系统偏好设置 -> 音频并将默认输出设备设置为我的 USB 麦克风。然后它将起作用。但是,如果我断开麦克风并将其重新连接到不同的 USB 端口,我将不得不再次将其设置为默认值。

为避免重复执行此操作,我想通过代码手动设置麦克风。

这可能吗?

编辑:我发现使用 Obj-C 的Set AVAudioEngine 输入和输出设备。

0 投票
1 回答
1561 浏览

swift - 如何使 SFSpeechRecognizer 在 macOS 上可用?

我正在尝试使用 Apple 的语音框架在 macOS 10.15.1 上进行语音识别。在 macOS 10.15 之前,语音识别只能在 iOS 上使用,但根据文档这个谈话,现在应该也可以在 macOS 上使用。

但是,我所有使用它的尝试都导致SFSpeechRecognizer'isAvailable属性被设置为 false。根据那次谈话和文档,我启用了 Siri,并确保我的应用程序将"Privacy - Speech Recognition Usage Description"键设置为 Info.plist 中的字符串值。

我还尝试启用代码签名(这个问题暗示可能是必要的),在系统偏好设置中的键盘 > 听写下启用听写。

这是一些示例代码,尽管细节可能并不重要;我已经尝试使用 Storyboard 而不是 SwiftUI,将回调SFSpeechRecognizer内部和外部的实例化,requestAuthorization未指定语言环境等。似乎没有任何效果:

特别奇怪的是,如果我运行应用程序然后单击“Try auth”按钮,authStatus回调返回的始终是.authorized. 但是,从来没有出现过要求我授权该应用程序的对话框,并且该应用程序未显示在系统偏好设置 > 安全和隐私 > 隐私 > 语音识别下的授权应用程序列表中。

尽管如此,之后单击“测试”按钮会导致打印not available

It seems like there's some hole in my understanding of the macOS privacy/permissions system, but I'm not sure how to debug further. I also think it should be possible to get this working, because I've seen other questions on StackOverflow suggesting that people have done so, for example here, here.

EDIT: At the suggestion of a comment, I tried simply ignoring the fact that isAvailable is false by replacing my check for it with code to actually try to transcribe a file, e.g.:

Then it fails, printing: The operation couldn’t be completed. (kAFAssistantErrorDomain error 1700.). So it seems like it really is necessary to check for isAvailable, and my question remains: how to get it to be true?