我正在使用语音识别来搜索具有用户语音的任何对象。我的代码如下。但我意识到一些使用语音识别器(不确定他们的技术)的Apple Market应用程序,他们不需要获得语音识别器的许可。 但是我的代码获得了许可,而权限就是那样
“[AppName]想要访问语音识别。来自的语音数据 此应用程序将被发送到Apple处理您的请求。这将 还帮助Apple改进其语音识别技术。“
这可能会对用户造成干扰。 你有什么主意吗?我不想要求许可。
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];
答案 0 :(得分:1)
如果您不想要求用户许可,则您需要使用第三方SDK。我不想专门宣传任何内容,因此我不会按名称提及SDK。他们通过搜索很容易找到。
当然,他们需要麦克风许可。