//
// DemoTextViewVC.m
// XMUI_OC
//
//
#import "DemoTextViewVC.h"
#import "XMTextView.h"
#import <AVFoundation/AVFoundation.h>
#import<Speech/Speech.h>
@interface DemoTextViewVC ()<SFSpeechRecognitionTaskDelegate>
@property (nonatomic, strong) XMTextView *textV;
@property (nonatomic,strong)SFSpeechRecognizer *recognizer;
@property(nonatomic,strong)SFSpeechAudioBufferRecognitionRequest * recognitionRequest;
@property(nonatomic,strong)SFSpeechRecognitionTask * recognitionTask ;
@property (nonatomic,strong)AVAudioEngine * audioEngine;
@end
@implementation DemoTextViewVC
- (void)viewDidLoad {
[super viewDidLoad];
[self.customNaviView setTitleStr:@"XMTextView"];
self.textV = [[XMTextView alloc] initWithFrame: CGRectMake(10, 120, kScreenWidth_XM - 20, 500)];
[self.view addSubview:self.textV];
self.textV.placeholder = @"請輸入內(nèi)容";
self.textV.placeholerFont = [UIFont systemFontOfSize:16];
self.textV.font = [UIFont systemFontOfSize:16];
self.textV.textColor = [UIColor redColor];
self.textV.placeholderColor = [UIColor grayColor];
self.textV.backgroundColor = [UIColor lightGrayColor];
// self.textV.contentInset = UIEdgeInsetsMake(10, 10, 10, 10);
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh-CN"];
_recognizer = [[SFSpeechRecognizer alloc] initWithLocale:locale];
//把語音識別的代理設(shè)置為 self
_recognizer.delegate = self;
[SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus status) {
if (status == SFSpeechRecognizerAuthorizationStatusAuthorized) {
NSLog(@"認(rèn)證成功");
[self startRecording];
} else {
NSLog(@"失敗");
}
}];
}
-(void)startRecording{
if (self.recognitionTask) {
[self.recognitionTask cancel];
self.recognitionTask = nil;
}
self.audioEngine = [[AVAudioEngine alloc] init];
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;
self.recognitionRequest.shouldReportPartialResults = true;
// ios13后支持離線識別了嫁乘。
if (@available(iOS 16, *)) { // 標(biāo)點(diǎn)符號。
self.recognitionRequest.addsPunctuation = YES;
} else {
// Fallback on earlier versions
}
//開始識別任務(wù)
self.recognitionTask = [self.recognizer recognitionTaskWithRequest:self.recognitionRequest resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {
bool isFinal = false;
if (result) {
NSLog(@"result==== %@", result.bestTranscription.formattedString);
//語音轉(zhuǎn)文本
isFinal = [result isFinal];
self.textV.text = result.bestTranscription.formattedString;
}
if (error || isFinal) {
[self.audioEngine stop];
[inputNode removeTapOnBus:0];
self.recognitionRequest = nil;
self.recognitionTask = nil;
}
}];
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];
NSError *error;
bool audioEngineBool = [self.audioEngine startAndReturnError:&error];
NSLog(@"%d === %@",audioEngineBool, error);
}
//當(dāng)語音識別操作可用性發(fā)生改變時(shí)會被調(diào)用
- (void)speechRecognizer:(SFSpeechRecognizer *)speechRecognizer availabilityDidChange:(BOOL)available{
if (available) {
}else{
}
}
@end
ios 語音識別調(diào)研 SFSpeechRecognizer
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來误甚,“玉大人缚甩,你說我怎么就攤上這事∫ぐ睿” “怎么了擅威?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長冈钦。 經(jīng)常有香客問我郊丛,道長,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任厉熟,我火速辦了婚禮导盅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揍瑟。我一直安慰自己白翻,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布绢片。 她就那樣靜靜地躺著滤馍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪底循。 梳的紋絲不亂的頭發(fā)上巢株,一...
- 文/蒼蘭香墨 我猛地睜開眼茸歧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了显沈?” 一聲冷哼從身側(cè)響起软瞎,我...
- 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拉讯,沒想到半個(gè)月后涤浇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡魔慷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年只锭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片院尔。...
- 正文 年R本政府宣布栋盹,位于F島的核電站施逾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汉额,卻給世界環(huán)境...
- 文/蒙蒙 一曹仗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闷愤,春花似錦整葡、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旬渠,卻和暖如春俱萍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背告丢。 一陣腳步聲響...
- 正文 我出身青樓岳颇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颅湘。 傳聞我的和親對象是個(gè)殘疾皇子话侧,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 實(shí)踐背景 隨著人工智能的發(fā)展與語音識別技術(shù)的成熟,近年來已有不少語音識別輔助庭審的案例闯参。早在2016年瞻鹏,廣西省南寧...
- 問題簡述:Unity發(fā)布的xcode工程(已接入科大訊飛的語音識別),在語音識別操作結(jié)束后鹿寨,游戲聲音就莫名消失了新博。...
- 前言 最近在做一個(gè)翻譯工具,由于項(xiàng)目需要兼容 iOS 8.0脚草,所以語音識別赫悄、合成都是用的科大訊飛的。使用過程中發(fā)現(xiàn)...
- 前言當(dāng)前的APP的查詢都是使用手動輸入,不僅效率低熏纯,而且查詢的語句的限制比較大同诫,不能夠方便的擴(kuò)展。 如果能方便的擴(kuò)...
- 前言 最近在做一個(gè)翻譯工具,由于項(xiàng)目需要兼容 iOS 8.0,所以語音識別范嘱、合成都是用的科大訊飛的诺凡。使用過程中發(fā)現(xiàn)...