标签: sfspeechrecognizer

SFSpeechRecognizer - 检测话语结束

我正在使用iOS 10内置语音识别来攻击一个小项目.我有使用设备麦克风的工作结果,我的语音被非常准确地识别.

我的问题是每个可用的部分转录都会调用识别任务回调,我希望它能够检测到人们停止说话,并在isFinal属性设置为true的情况下调用回调.它没有发生 - 应用程序无限期地倾听.

SFSpeechRecognizer能够检测句末永远不会消失?

这是我的代码 - 它基于在互联网上找到的示例,它主要是从麦克风源识别所需的样板.我通过添加识别来修改它taskHint.我也设置shouldReportPartialResults为假,但它似乎被忽略了.

    func startRecording() {

    if recognitionTask != nil {
        recognitionTask?.cancel()
        recognitionTask = nil
    }

    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryRecord)
        try audioSession.setMode(AVAudioSessionModeMeasurement)
        try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
    } catch {
        print("audioSession properties weren't set because of an error.")
    }

    recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
    recognitionRequest?.shouldReportPartialResults = false
    recognitionRequest?.taskHint = .search

    guard let inputNode = audioEngine.inputNode else {
        fatalError("Audio engine has no input node") …
Run Code Online (Sandbox Code Playgroud)

ios sfspeechrecognizer

18
推荐指数
1
解决办法
5670
查看次数

使用Speech kit ios时,由于未被捕获的应用程序崩溃而终止应用程序

我在实现语音文本时遇到了这个错误:

因未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'必需条件为false:_recordingTap == nil'

和:

错误:[0x1b2df5c40]> avae> AVAudioNode.mm:565:CreateRecordingTap:必需条件为false:_recordingTap == nil

这是我的viewController的代码:

public class ViewController: UIViewController, SFSpeechRecognizerDelegate {
// MARK: Properties

private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!

private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?

private var recognitionTask: SFSpeechRecognitionTask?

private let audioEngine = AVAudioEngine()

@IBOutlet var textView : UITextView!

@IBOutlet var recordButton : UIButton!

// MARK: UIViewController

public override func viewDidLoad() {
    super.viewDidLoad()

    // Disable the record buttons until authorization has been granted.
    recordButton.isEnabled = false
}

override public func viewDidAppear(_ animated: Bool) { …
Run Code Online (Sandbox Code Playgroud)

ios swift sfspeechrecognizer

17
推荐指数
2
解决办法
1万
查看次数

重启录制时AVAudioEngine inputNode installTap崩溃

我正在我的应用程序中实现语音识别.当我第一次使用语音识别逻辑呈现视图控制器时,一切正常.但是,当我再次尝试呈现视图控制器时,我得到以下崩溃:

ERROR:    [0x190bf000] >avae> AVAudioNode.mm:568: CreateRecordingTap: required condition is false: IsFormatSampleRateAndChannelCountValid(format)
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: IsFormatSampleRateAndChannelCountValid(format)'
Run Code Online (Sandbox Code Playgroud)

以下是用于启动和停止录制的代码:

@available(iOS 10.0, *)
extension DictationViewController {

fileprivate func startRecording() throws {
    guard let recognizer = speechRecognizer else {
        debugLog(className, message: "Not supported for the device's locale")
        return
    }

    guard recognizer.isAvailable else {
        debugLog(className, message: "Recognizer is not available right now")
        return
    }

    mostRecentlyProcessedSegmentDuration = 0
    guard let node = audioEngine.inputNode else {
        debugLog(className, message: …
Run Code Online (Sandbox Code Playgroud)

speech-recognition ios avaudioengine swift3 sfspeechrecognizer

12
推荐指数
4
解决办法
5680
查看次数

使用SFSpeechRecognizer后,AVSpeechSynthesizer不会说话

因此,我构建了一个使用SFSpeechRecognizer进行语音识别的简单应用程序,并在屏幕上的UITextView中将转换后的语音显示为文本.现在我正试图让手机说出显示的​​文字.它由于某种原因不起作用.AVSpeechSynthesizer说功能仅在使用SFSpeechRecognizer之前有效.例如,当应用程序启动时,它会在UITextView中显示一些欢迎文本,如果我点击"说出"按钮,手机会说出欢迎文本.然后,如果我进行录音(用于语音识别),识别的语音将显示在UITextView中.现在我希望手机能够说出那段文字,但遗憾的是它并没有.

这是代码

import UIKit
import Speech
import AVFoundation


class ViewController: UIViewController, SFSpeechRecognizerDelegate, AVSpeechSynthesizerDelegate {

    @IBOutlet weak var textView: UITextView!
    @IBOutlet weak var microphoneButton: UIButton!

    private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))!

    private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?
    private var recognitionTask: SFSpeechRecognitionTask?
    private let audioEngine = AVAudioEngine()

    override func viewDidLoad() {
        super.viewDidLoad()

        microphoneButton.isEnabled = false

        speechRecognizer.delegate = self

        SFSpeechRecognizer.requestAuthorization { (authStatus) in

            var isButtonEnabled = false

            switch authStatus {
            case .authorized:
                isButtonEnabled = true

            case .denied:
                isButtonEnabled = false
                print("User denied access to …
Run Code Online (Sandbox Code Playgroud)

iphone ios avspeechsynthesizer sfspeechrecognizer

10
推荐指数
3
解决办法
7151
查看次数

SFSpeechRecognizer无法正确处理上下文字符串

SFSpeechRecognizer我的用例非常不准确.我已经尝试设置contextual字符串,因为我有一个与之匹配的单词数组.但它仍然无法做到这一点.我还需要其他配置吗?

我正在使用Apple提供的示例项目,只有这个改变:

recognitionRequest.contextualStrings = @[@"iron man", @"metal", @"stark", @"superhero", @"boyfriend", @"pepper", @"arrogant", @"stylish"];
Run Code Online (Sandbox Code Playgroud)

objective-c ios sirikit sfspeechrecognizer

9
推荐指数
1
解决办法
640
查看次数

语音识别在iOS上出错

我正在研究iOS上的语音识别,但每次调用方法[_recognitionRequest endAudio]时,它总是在recognitionTaskWithRequest中出错:消息在底部.

-(void) stopRecording {
if (_disableSpeechSW == YES) {
    return;
}
if (_isAuthorization == NO) {
    return;
}

NSLog(@"stopRecording");

if ([_audioEngine isRunning]) {
    [_audioEngine stop];
    [_recognitionRequest endAudio];
}
Run Code Online (Sandbox Code Playgroud)

}

-(void) startRecording {
..........
[_speechRecognizer recognitionTaskWithRequest:_recognitionRequest
                   resultHandler:^(SFSpeechRecognitionResult *result,NSError *error){
  if (error != nil ) {
     NSLog(@"%@",[error description]);
  }
  else {
   ..........
  }
}];}
Run Code Online (Sandbox Code Playgroud)

[实用程序] + [AFAggregator logDictationFailedWithError:]错误域= kAFAssistantErrorDomain代码= 203"重试"UserInfo = {NSLocalizedDescription =重试,NSUnderlyingError = 0x17424c690 {错误域= SiriSpeechErrorDomain代码= 1"(null)"}}

speech-recognition objective-c ios siri sfspeechrecognizer

8
推荐指数
2
解决办法
6849
查看次数

错误域= kAFAssistantErrorDomain代码= 209"(null)"

我正面临一个问题SFSpeechRecognizer.在启动应用程序几秒钟后,我开始收到错误

错误域= kAFAssistantErrorDomain代码= 209"(null)""和"错误域= kAFAssistantErrorDomain代码= 203"超时"UserInfo = {NSLocalizedDescription =超时,NSUnderlyingError = 0x170049990 {错误域= SiriSpeechErrorDomain代码= 100"(null)"}}

并且应用程序停止识别.

我试图endAudio()然后每隔20秒再次启动它,因为Apple不允许我们识别超过一分钟.

任何有关这方面的帮助将非常感激.

iphone speech-recognition ios swift3 sfspeechrecognizer

8
推荐指数
1
解决办法
1945
查看次数

如果supportsOnDeviceRecognition为true并且离线模式可用,SFSpeechRecognizer是否有限制?

根据苹果文件,可以发送的请求数量是有限制的SFSpeechRecognizer

准备好处理由语音识别限制引起的故障。由于语音识别是一项基于网络的服务,因此会实施限制,以便所有应用程序都可以免费使用该服务。单个设备每天可以执行的识别数量可能受到限制,并且每个应用程序可能会根据每天发出的请求数量进行全局限制。如果识别请求很快失败(启动后一两秒内),请检查识别服务是否变得不可用。如果是,您可能需要要求用户稍后重试。 https://developer.apple.com/documentation/speech/sfspeechrecognizer

另一份文档称,一台设备每小时可以发送 1000 个请求。

设备可以发出的 SFSpeechRecognitionRequest 调用数量的当前速率限制是每小时 1000 个请求。请注意,此限制是针对设备可以发出的请求数量,与发出请求的应用程序无关。这与请求相关的音频长度无关。对于给定的 SFSpeechRecognitionRequest,每个请求最多允许您播放一分钟的音频。

现在我正在创建一个SFSpeechRecognizer如下所示的属性,并检查supportsOnDeviceRecognition指示语音识别器是否可以在没有网络访问的情况下运行的属性。它在我安装了 iOS 13.2.3 的设备上返回true

let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!
print(speechRecognizer.supportsOnDeviceRecognition) //true
Run Code Online (Sandbox Code Playgroud)

我尝试离线运行我的应用程序,在没有互联网连接的情况下它也可以正常工作。但目前尚不清楚是否仍有请求限制supportsOnDeviceRecognition。在这种情况下,SFSpeechRecognizer即使设备连接到互联网,也可能不会连接到 Apple 服务器,因为这是不必要的。supportsOnDeviceRecognition只有在正确的情况下才会有速率限制吗?

ios sirikit sfspeechrecognizer ios13

8
推荐指数
1
解决办法
2032
查看次数

使用SFSpeechRecognitionRequest时,更有可能使`contextualStrings`成为可能

我使用的是iOS 10个新的语音API,和我设置SFSpeechRecognitionRequestcontextualStrings.然而,这些词的概率非常低 - 我猜 - 所以它们没有得到认可.有没有办法让他们更容易被认出来?

ios sfspeechrecognizer apple-speech

7
推荐指数
0
解决办法
282
查看次数

蒙特雷错误 102 上的 SFSpeechRecognizer

我已更新到 macOS Monterrey,但我的 SFSPeechRecognizer 代码刚刚损坏。如果我尝试为 macOS 配置离线语音识别器,我会收到此错误

\n
Error Domain=kLSRErrorDomain Code=102 "Failed to access assets" UserInfo={NSLocalizedDescription=Failed to access assets, NSUnderlyingError=0x6000003c5710 {Error Domain=kLSRErrorDomain Code=102 "No asset installed for language=es-ES" UserInfo={NSLocalizedDescription=No asset installed for language=es-ES}}}\n
Run Code Online (Sandbox Code Playgroud)\n

这是演示项目中的代码片段:

\n
private func process(url: URL) throws {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0speech = SFSpeechRecognizer.init(locale: Locale(identifier: "es-ES"))\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0speech.supportsOnDeviceRecognition = true\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0let request = SFSpeechURLRecognitionRequest(url: url)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0request.requiresOnDeviceRecognition = true\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0request.shouldReportPartialResults = false\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0speech.recognitionTask(with: request) { result, error in\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0guard let result = result else {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if let error = error {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0print(error)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if let error = error {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0print(error)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if result.isFinal {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0print(result.bestTranscription.formattedString)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\xc2\xa0\xc2\xa0}\n
Run Code Online (Sandbox Code Playgroud)\n …

macos sfspeechrecognizer

7
推荐指数
1
解决办法
414
查看次数