欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年12月05日 14:56:29   作者:T0_JOIN  
這篇文章主要介紹了iOS 10 和Xcode8 一起 創(chuàng)建 Siri 功能(OC寫的 ),本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下

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

第一步:定義屬性

@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

第二步:進(jìn)行語音識(shí)別檢測(cè)

- (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(@"可以語音識(shí)別");
break;
case SFSpeechRecognizerAuthorizationStatusDenied:
isButtonEnabled = false;
NSLog(@"用戶被拒絕訪問語音識(shí)別");
break;
case SFSpeechRecognizerAuthorizationStatusRestricted:
isButtonEnabled = false;
NSLog(@"不能在該設(shè)備上進(jìn)行語音識(shí)別");
break;
case SFSpeechRecognizerAuthorizationStatusNotDetermined:
isButtonEnabled = false;
NSLog(@"沒有授權(quán)語音識(shí)別");
break;
default:
break;
}
self.siriBtu.enabled = isButtonEnabled;
}];
self.audioEngine = [[AVAudioEngine alloc]init];
}

第三步:按鈕的點(diǎn)擊事件

- (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];
}}

第四步 :開始錄制語音,以及將語音轉(zhuǎn)為文字

-(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 冰,你說我聽";
}

最后一個(gè)代理方法:

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

這樣我們 就可以實(shí)現(xiàn)Siri的功能了。

總結(jié)

以上所述是小編給大家介紹的iOS 10 和Xcode8 一起 創(chuàng)建 Siri 功能步驟詳解(OC寫的 ),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • iOS基于UIScrollView實(shí)現(xiàn)滑動(dòng)引導(dǎo)頁

    iOS基于UIScrollView實(shí)現(xiàn)滑動(dòng)引導(dǎo)頁

    這篇文章主要為大家詳細(xì)介紹了iOS基于UIScrollView實(shí)現(xiàn)滑動(dòng)引導(dǎo)頁的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • IOS使用TestFlight測(cè)試的使用方法

    IOS使用TestFlight測(cè)試的使用方法

    TestFlight是iOS系統(tǒng)上用來測(cè)試軟件的,打開了這個(gè)APP就相當(dāng)于打開了新世界的大門,這個(gè)APP直接可以改變你對(duì)IOS系統(tǒng)封閉的看法,讓你擁有媲美安卓用戶的更多自主權(quán)!
    2022-12-12
  • iOS實(shí)現(xiàn)比例拼圖的方法示例

    iOS實(shí)現(xiàn)比例拼圖的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)比例拼圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者開發(fā)iOS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • iOS實(shí)現(xiàn)動(dòng)態(tài)自適應(yīng)標(biāo)簽

    iOS實(shí)現(xiàn)動(dòng)態(tài)自適應(yīng)標(biāo)簽

    這篇文章主要為大家詳細(xì)介紹了iOS動(dòng)態(tài)自適應(yīng)標(biāo)簽的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS使用WKWebView加載HTML5不顯示屏幕寬度的問題解決

    iOS使用WKWebView加載HTML5不顯示屏幕寬度的問題解決

    這篇文章主要介紹了iOS使用WKWebView加載HTML5不顯示屏幕寬度的問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線

    iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線

    本篇文章主要介紹了iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • 總結(jié)iOS App開發(fā)中控制屏幕旋轉(zhuǎn)的幾種方式

    總結(jié)iOS App開發(fā)中控制屏幕旋轉(zhuǎn)的幾種方式

    這篇文章主要介紹了iOS app開發(fā)中控制屏幕旋轉(zhuǎn)的方法總結(jié),分為自動(dòng)旋轉(zhuǎn)和手動(dòng)旋轉(zhuǎn)以及強(qiáng)制旋轉(zhuǎn)三種情況,代碼為Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • Flutter?Module添加到iOS項(xiàng)目示例詳解

    Flutter?Module添加到iOS項(xiàng)目示例詳解

    這篇文章主要為大家介紹了Flutter?Module添加到iOS項(xiàng)目示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • iOS中sqlite的詳細(xì)用法

    iOS中sqlite的詳細(xì)用法

    在iOS中,也同樣支持sqlite。目前有很多第三方庫,封裝了sqlite操作,比如swift語言寫的SQLite.swift,對(duì)sqlite感興趣的小伙伴們可以參考一下
    2016-05-05
  • iOS性能優(yōu)化淺析

    iOS性能優(yōu)化淺析

    給大家通過理論和經(jīng)驗(yàn)分析了IOS性能優(yōu)化各方面的問題,以及處理的對(duì)應(yīng)辦法,有需要的朋友參考下。
    2018-02-02

最新評(píng)論