国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 10 和Xcode8 一起 創建 Siri 功能步驟詳解(OC寫的 )

2019-10-21 18:43:25
字體:
來源:轉載
供稿:網友

iOS 10 出來之后,我們開發者也可以使用類似Siri的功能。。讓我們來看看怎么使用吧,其實他是使用Siri里面的一個語音識別框架Speech framework。 讓我們來看看 一些 主要的代碼吧。 我們需要一個 UITextView 和 UIButton 就 能體現了。

第一步:定義屬性

@interface ViewController () <SFSpeechRecognizerDelegate>@property (strong, nonatomic) UIButton *siriBtu;@property (strong, nonatomic) UITextView *siriTextView;@property (strong, nonatomic) SFSpeechRecognitionTask *recognitionTask;@property (strong, nonatomic)SFSpeechRecognizer *speechRecognizer;@property (strong, nonatomic) SFSpeechAudioBufferRecognitionRequest *recognitionRequest;@property (strong, nonatomic)AVAudioEngine *audioEngine;@end

第二步:進行語音識別檢測

- (void)viewDidLoad {[super viewDidLoad];NSLocale *cale = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-CN"];self.speechRecognizer = [[SFSpeechRecognizer alloc]initWithLocale:cale];self.siriBtu.enabled = false;_speechRecognizer.delegate = self;[SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus status) {bool isButtonEnabled = false;switch (status) {case SFSpeechRecognizerAuthorizationStatusAuthorized:isButtonEnabled = true;NSLog(@"可以語音識別");break;case SFSpeechRecognizerAuthorizationStatusDenied:isButtonEnabled = false;NSLog(@"用戶被拒絕訪問語音識別");break;case SFSpeechRecognizerAuthorizationStatusRestricted:isButtonEnabled = false;NSLog(@"不能在該設備上進行語音識別");break;case SFSpeechRecognizerAuthorizationStatusNotDetermined:isButtonEnabled = false;NSLog(@"沒有授權語音識別");break;default:break;}self.siriBtu.enabled = isButtonEnabled;}];self.audioEngine = [[AVAudioEngine alloc]init];}

第三步:按鈕的點擊事件

- (void)microphoneTap:(UIButton *)sender {if ([self.audioEngine isRunning]) {[self.audioEngine stop];[self.recognitionRequest endAudio];self.siriBtu.enabled = YES;[self.siriBtu setTitle:@"開始錄制" forState:UIControlStateNormal];}else{[self startRecording];[self.siriBtu setTitle:@"停止錄制" forState:UIControlStateNormal];}}

第四步 :開始錄制語音,以及將語音轉為文字

-(void)startRecording{if (self.recognitionTask) {[self.recognitionTask cancel];self.recognitionTask = nil;}AVAudioSession *audioSession = [AVAudioSession sharedInstance];bool audioBool = [audioSession setCategory:AVAudioSessionCategoryRecord error:nil];bool audioBool1= [audioSession setMode:AVAudioSessionModeMeasurement error:nil];bool audioBool2= [audioSession setActive:true withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];if (audioBool || audioBool1|| audioBool2) {NSLog(@"可以使用");}else{NSLog(@"這里說明有的功能不支持");}self.recognitionRequest = [[SFSpeechAudioBufferRecognitionRequest alloc]init];AVAudioInputNode *inputNode = self.audioEngine.inputNode;SFSpeechAudioBufferRecognitionRequest *recognitionRequest;self.recognitionRequest.shouldReportPartialResults = true;self.recognitionTask = [self.speechRecognizer recognitionTaskWithRequest:self.recognitionRequest resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {bool isFinal = false;if (result) {self.siriTextView.text = [[result bestTranscription] formattedString];isFinal = [result isFinal];}if (error || isFinal) {[self.audioEngine stop];[inputNode removeTapOnBus:0];self.recognitionRequest = nil;self.recognitionTask = nil;self.siriBtu.enabled = true;}}];AVAudioFormat *recordingFormat = [inputNode outputFormatForBus:0];[inputNode installTapOnBus:0 bufferSize:1024 format:recordingFormat block:^(AVAudioPCMBuffer * _Nonnull buffer, AVAudioTime * _Nonnull when) {[self.recognitionRequest appendAudioPCMBuffer:buffer];}];[self.audioEngine prepare];bool audioEngineBool = [self.audioEngine startAndReturnError:nil];NSLog(@"%d",audioEngineBool);self.siriTextView.text = @"我是小冰!
注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寿宁县| 卢龙县| 大足县| 开平市| 益阳市| 瑞昌市| 获嘉县| 汽车| 犍为县| 阿巴嘎旗| 盐边县| 乌拉特中旗| 沾化县| 祁东县| 太和县| 明溪县| 广饶县| 黑龙江省| 高台县| 凤山市| 定西市| 富川| 连平县| 利津县| 高陵县| 进贤县| 武宁县| 黄石市| 静海县| 共和县| 千阳县| 南昌县| 隆林| 万安县| 独山县| 福泉市| 汪清县| 阳新县| 资阳市| 蒙阴县| 民县|