【发布时间】:2018-03-08 05:49:33
【问题描述】:
我正在使用语音识别来搜索任何带有用户声音的对象。我的代码如下。但我意识到一些使用语音识别器的 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];
【问题讨论】:
标签: ios objective-c speech-recognition