最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

iOS 10 出來之后,我們開發(fā)者也可以使用類似Siri的功能。。讓我們來看看怎么使用吧,其實他是使用Siri里面的一個語音識別框架Speech framework。 讓我們來看看 一些 主要的代碼吧。 我們需要一個 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)行語音識別檢測

- (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(@"不能在該設(shè)備上進(jìn)行語音識別");
break;
case SFSpeechRecognizerAuthorizationStatusNotDetermined:
isButtonEnabled = false;
NSLog(@"沒有授權(quán)語音識別");
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];
}}

第四步 :開始錄制語音,以及將語音轉(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 冰,你說我聽";
}

最后一個代理方法:

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

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

總結(jié)

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

相關(guān)文章

  • IOS LaunchScreen設(shè)置啟動圖片與啟動頁停留時間詳解

    IOS LaunchScreen設(shè)置啟動圖片與啟動頁停留時間詳解

    這篇文章主要介紹了IOS LaunchScreen設(shè)置啟動圖片與啟動頁停留時間詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    這篇文章主要給大家介紹了關(guān)于iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • IOS 字符串常用處理詳細(xì)介紹

    IOS 字符串常用處理詳細(xì)介紹

    這篇文章主要介紹了IOS 字符串常用處理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS超出父控件范圍無法點擊問題解決

    iOS超出父控件范圍無法點擊問題解決

    這篇文章主要介紹了iOS超出父控件范圍無法點擊問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • IOS開發(fā)筆記之禁用手勢滑動返回功能的示例

    IOS開發(fā)筆記之禁用手勢滑動返回功能的示例

    本篇文章主要介紹了IOS開發(fā)筆記之禁用手勢滑動返回功能的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳細(xì)整理iOS中UITableView的性能優(yōu)化

    詳細(xì)整理iOS中UITableView的性能優(yōu)化

    最近在微博上看到一個很好的開源項目,是關(guān)于如何優(yōu)化UITableView的,加上正好最近也在優(yōu)化項目中的類似朋友圈功能這塊,思考了很多關(guān)于UITableView的優(yōu)化技巧,所以決定詳細(xì)的整理下對優(yōu)化UITableView的理解,需要的朋友們可以參考借鑒。
    2017-03-03
  • IOS中對Url進(jìn)行編碼和解碼示例

    IOS中對Url進(jìn)行編碼和解碼示例

    本篇文章主要介紹了IOS中對Url進(jìn)行編碼和解碼示例,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 在iOS App中實現(xiàn)地理位置定位的基本方法解析

    在iOS App中實現(xiàn)地理位置定位的基本方法解析

    這篇文章主要介紹了在iOS App中實現(xiàn)地理位置定位的基本方法解析,包括獲取當(dāng)前位置和計算兩點間距離等基本功能的實現(xiàn),需要的朋友可以參考下
    2016-05-05
  • ios電子書翻頁效果代碼詳解

    ios電子書翻頁效果代碼詳解

    這篇文章主要介紹了ios電子書翻頁效果代碼實現(xiàn)過程以及對應(yīng)的代碼講解,有需要的朋友參考下。
    2018-02-02
  • iOS開發(fā)添加新手引導(dǎo)效果

    iOS開發(fā)添加新手引導(dǎo)效果

    這篇文章主要介紹了iOS開發(fā)添加新手引導(dǎo)效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論

宁河县| 赤峰市| 满洲里市| 鹿泉市| 丰镇市| 永德县| 宜宾县| 时尚| 七台河市| 承德市| 沛县| 石柱| 班玛县| 苍南县| 海阳市| 合山市| 华蓥市| 东至县| 桦南县| 轮台县| 凤翔县| 万安县| 桃江县| 山东| 桃江县| 横峰县| 武川县| 娱乐| 七台河市| 永宁县| 定边县| 高密市| 额敏县| 太和县| 海口市| 图木舒克市| 长葛市| 壤塘县| 玉田县| 卢龙县| 开封县|