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

首頁 > 系統 > iOS > 正文

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

2020-07-26 02:36:20
字體:
來源:轉載
供稿:網友

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 = @"我是小冰!😀Siri 冰,你說我聽";}

最后一個代理方法:

-(void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidChange:(BOOL)available{if(available){self.siriBtu.enabled = true;}else{self.siriBtu.enabled = false;}}

這樣我們 就可以實現Siri的功能了。

總結

以上所述是小編給大家介紹的iOS 10 和Xcode8 一起 創建 Siri 功能步驟詳解(OC寫的 ),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五家渠市| 大丰市| 福建省| 广灵县| 淄博市| 安阳市| 锡林浩特市| 石首市| 南华县| 教育| 建瓯市| 华容县| 东莞市| 萨迦县| 嘉峪关市| 朝阳区| 富平县| 武山县| 铁岭县| 堆龙德庆县| 通城县| 巴彦淖尔市| 宁国市| 余庆县| 望都县| 安远县| 莆田市| 沂南县| 齐河县| 安阳市| 伊春市| 涞源县| 浦县| 新昌县| 内丘县| 北宁市| 稻城县| 页游| 阿克陶县| 进贤县| 页游|