iOS 语音识别权限是必须的吗?

标签 ios objective-c speech-recognition

我正在使用语音识别来通过用户的语音搜索任何对象。我的代码如下。但我意识到一些使用语音识别器的 Apple Market 应用程序(不确定他们的技术),他们不需要获得语音识别器许可即可执行此操作。 但是我的代码正在获得许可,并且许可是这样的

"[AppName] would like to access speech recognition. Speech data from this app will be sent to Apple to process your requests. This will also help Apple improve its speech recognition technology."

这可能会对用户造成干扰。 你有什么主意吗?我不想请求许可。

audioEngine = [[AVAudioEngine alloc] init];

if (recognitionTask) {
    [recognitionTask cancel];
    recognitionTask = nil;
}

NSError *error;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryRecord error:&error];
[audioSession setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];

if (@available(iOS 10.0, *)) {
    recognitionRequest = [[SFSpeechAudioBufferRecognitionRequest alloc] init];
} else {}

AVAudioInputNode *inputNode = audioEngine.inputNode;
recognitionRequest.shouldReportPartialResults = YES;
if (@available(iOS 10.0, *)) {
    recognitionTask = [speechRecognizer recognitionTaskWithRequest:recognitionRequest resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error){
        BOOL isFinal = isSpeechStop;
        if (!isFinal) {
            NSLog(@"RESULT:%@",result.bestTranscription.formattedString);
           isFinal = !result.isFinal;
            }
        }
        if (error || isFinal) {
            [audioEngine stop];
            [inputNode removeTapOnBus:0];
            recognitionRequest = nil;
            [recognitionTask cancel];
            recognitionTask = nil;

        }
}

AVAudioFormat *recordingFormat = [inputNode outputFormatForBus:0];
[inputNode installTapOnBus:0 bufferSize:1024 format:recordingFormat block:^(AVAudioPCMBuffer * _Nonnull buffer, AVAudioTime * _Nonnull when) {
    [recognitionRequest appendAudioPCMBuffer:buffer];
}];

[audioEngine prepare];
[audioEngine startAndReturnError:&error];

最佳答案

如果您不想征求用户许可,则需要使用第 3 方 SDK。我不想专门宣传任何一个,所以我不会点名提及这些 SDK。通过搜索很容易找到它们。

当然,他们需要获得麦克风许可。

关于iOS 语音识别权限是必须的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166287/

相关文章:

android - 是否有用于 IBM Cloud Storage 的移动 SDK?

ios - 在 XCode 中找不到应用程序证明功能

ios - 尝试从 Storyboard初始化 View Controller

objective-c - 在警报中使用 subview 未记录

java - 使用 PKCS7Padding 的 AES CBC 加密在 Java 和 Objective-C 中具有不同的结果

Python语音识别器类型错误: '>' not supported between instances of 'float' and 'NoneType'

ios - 将 Kotlin 接口(interface)的 Swift 实现传递给 Kotlin 方法时出错

ios - 您如何对 iPhone 应用进行 Beta 测试?

安卓语音转文字

java - Sphinx4 的 SphinxTrain 的示例配置/属性 xml 文件